Jak ustawić -source 1.7 w Android Studio i Gradle


177

Podczas próby skompilowania projektu w Android Studio pojawia się następujący błąd:

Gradle: error: diamond operator is not supported in -source 1.6

Mam 1.7 ustawiony jako cel we wszystkich preferencjach projektu, które znalazłem. Również ścieżka wyświetlana w projektach SDK pod 1.7 SDK jest poprawną ścieżką do instalacji Java 1.7.

Nawet kiedy uruchamiam java -version w terminalu, to mówi mi, że używam java 1.7.

Próbowałem ustawić zmienną env JAVA_HOME na to:

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

Błąd nie znika. Jak wyeliminować błąd?


Czy sourceCompatibilityustawiłeś swój build.gradle?
fge

Obsługa Java 7 została dodana w narzędziach do budowania 19. Proszę sprawdzić moją zredagowaną odpowiedź.
Sergii Pechenizkyi

Odpowiedzi:


289

Obsługa Java 7 została dodana w narzędziach do budowania 19. Możesz teraz używać takich funkcji, jak operator diamentu, multi-catch, try-with-resources, stringi w przełącznikach itp. Dodaj następujące elementy do swojego build.gradle.

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 19
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

Wymagane są Gradle 1.7+, Android Gradle Plugin 0.6. +.

Pamiętaj, że spróbuj tylko z zasobami wymagającymi minSdkVersion19. Inne funkcje działają na poprzednich platformach.

Link do instrukcji obsługi wtyczki Gradle dla Androida

Link, aby zobaczyć, jak różni się źródło od celu


1
Czy to działa tylko w Android Studio, czy jest możliwe, aby działało również w Eclipse z ADT?
Natix

1
Jest to możliwe dzięki najnowszemu ADT dla Eclipse. Sprawdź pełny opis tutaj: sites.google.com/a/android.com/tools/recent/…
Sergii Pechenizkyi

7
woohoo dla przełączników łańcuchowych!
koder

10
Należy pamiętać, że try-with-resources może być używany tylko z API 19 lub nowszym.
Alex Lockwood

73

Być może powyższe odpowiedzi są stare, ale w nowym Android Studios 1 wykonaj następujące czynności, aby moduł działał w wersji 1.7 (lub 1.6, jeśli wolisz). Kliknij Plik -> Struktura projektu. Wybierz moduł, który chcesz uruchomić, a następnie w „Source Compatibility” i „Target Compatibility” wybierz 1.7. Kliknij OK".

Ekran struktury projektu w Android Studios 1


5
Myślę, że to poprawna odpowiedź dla najnowszego studia Android. Chciałbym móc uczynić to również poprawną odpowiedzią ...
pravin

1
Jest to zasadniczo to samo, co zaakceptowana odpowiedź.
Kerem

1
Jest to tylko wygodna funkcja, która wstawi wcześniej opisany kod „compileOptions” do pliku gradle.
user3259330

Jak mogę ustawić to na 8?
Neon Warge

Nie widzę 1.8 i 1.9? Mimo że informacje -> Pomoc mówi, że Android studio używa środowiska JRE 1.8.
Srikar Reddy

14

Możesz to zmienić w nowej wersji Android Studio (0.8.X)

FIle-> Inne ustawienia -> Ustawienia domyślne -> Kompilator (Rozwiń, klikając strzałkę w lewo) -> Kompilator Java -> Tutaj możesz zmienić wersję kodu bajtowego projektu

wprowadź opis obrazu tutaj


8

Najnowsze Android Studio 1.4.

Kliknij Plik-> Struktura projektu-> Lokalizacja SDK-> Lokalizacja JDK.

Możesz również ustawić zgodność wersji JDK dla poszczególnych modułów, przechodząc do modułu (poniżej lokalizacji SDK) i odpowiednio edytować zgodność źródła. (uwaga, dotyczy to tylko modułu Android).


To ustawienie jest mylące, ponieważ wpływa na wszystkie projekty, mimo że nosi nazwę „Struktura projektu”.
Oliver Hausler

5

Kliknij prawym przyciskiem myszy projekt> Otwórz ustawienia modułu> Wybierz „Projekt” w sekcji „Ustawienia projektu”

Zmień Project SDK na najnowszy (może to być API 21) i poziom języka projektu na 7+


4

Obecnie Android nie obsługuje języka Java 7, tylko Java 6. Nowe funkcje w języku Java 7, takie jak składnia diamentów, nie są zatem obecnie obsługiwane. Znalezienie źródeł, które to obsługują, nie jest łatwe, ale mogłem stwierdzić, że silnik Dalvic jest zbudowany na podzbiorze Apache Harmony, który kiedykolwiek obsługiwał Javę do wersji 6. A jeśli sprawdzisz wymagania systemowe do tworzenia aplikacji na Androida, stwierdza się również że przynajmniej JDK 6 jest potrzebny (choć to oczywiście nie jest prawdziwy dowód, tylko wskazówka). A to mówi mniej więcej to samo, co ja. Jeśli znajdę coś bardziej merytorycznego, dodam to.

Edycja: Wygląda na to, że obsługa Java 7 została dodana od czasu, gdy napisałem tę odpowiedź; sprawdź odpowiedź Sergii Pechenizkyi .


2
Tutaj podobne pytanie z linkiem, jak rozwiązać problem: stackoverflow.com/questions/14487682/ ...
blalasaadri.

2

Zawsze używaj najnowszej wersji SDK do kompilacji:

compileSdkVersion 23

Nie wpływa na zachowanie środowiska uruchomieniowego , ale zapewnia najnowsze funkcje programistyczne.


2

Przejdź do swojego Gradle i poszukaj sourceCompatibility i zmień ją z 1.6 na 7 . To przynajmniej zadziałało dla mnie.

Możesz także przejść do ustawień modułu i ustawić zgodność źródła / celu na 1.7.

Okno ustawień modułu

Spowoduje to utworzenie następującego kodu w Twoim Gradle:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.