So stellen Sie -source 1.7 in Android Studio und Gradle ein


177

Beim Kompilieren meines Projekts in Android Studio wird folgende Fehlermeldung angezeigt:

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

Ich habe in allen gefundenen Projekteinstellungen 1.7 als Ziel festgelegt. Auch der in den Projekt-SDKs unter 1.7 SDK angezeigte Pfad ist der richtige Pfad zur Installation von Java 1.7.

Selbst wenn ich Java-Version im Terminal ausführe, wird mir mitgeteilt, dass ich Java 1.7 verwende.

Ich habe versucht, die env-Variable JAVA_HOME auf Folgendes zu setzen:

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

Der Fehler verschwindet nicht. Wie kann ich den Fehler beseitigen?


Haben Sie sourceCompatibilityin Ihrem build.gradle festgelegt?
fge

Java 7-Unterstützung wurde bei Build Tools 19 hinzugefügt. Bitte überprüfen Sie meine bearbeitete Antwort.
Sergii Pechenizkyi

Antworten:


289

Java 7-Unterstützung wurde bei Build-Tools 19 hinzugefügt. Sie können jetzt Funktionen wie den Diamond-Operator, Multi-Catch, Try-with-Resources, Zeichenfolgen in Switches usw. verwenden 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
    }
}

Gradle 1.7+, Android Gradle Plugin 0.6. + Sind erforderlich.

Beachten Sie, dass für den Versuch nur mit Ressourcen minSdkVersion19 erforderlich sind . Andere Funktionen funktionieren auf früheren Plattformen.

Link zum Android Gradle Plugin Benutzerhandbuch

Link, um zu sehen, wie sich Quelle und Ziel unterscheiden


1
Funktioniert dies nur in Android Studio oder ist es möglich, dass dies auch in Eclipse mit ADT funktioniert?
Natix

1
Dies ist mit dem neuesten ADT für Eclipse möglich. Überprüfen Sie die vollständige Beschreibung hier: sites.google.com/a/android.com/tools/recent/…
Sergii Pechenizkyi

7
woohoo für Stringschalter!
Codierer

10
Beachten Sie, dass Try-with-Resources nur mit API 19 oder höher verwendet werden kann.
Alex Lockwood

73

Vielleicht sind diese Antworten alt, aber mit den neuen Android Studios 1 gehen Sie wie folgt vor, um zu sehen, ob das Modul auf 1.7 (oder 1.6, wenn Sie es vorziehen) ausgeführt wird. Klicken Sie auf Datei -> Projektstruktur. Wählen Sie das Modul aus, das Sie ausführen möchten, und wählen Sie dann unter "Quellkompatibilität" und "Zielkompatibilität" die Option 1.7 aus. OK klicken".

Projektstrukturbildschirm von Android Studios 1


5
Ich denke, das ist die richtige Antwort für das neueste Android-Studio. Ich wünschte, ich könnte dies auch eine richtige Antwort machen ..
Pravin

1
Dies entspricht im Wesentlichen der akzeptierten Antwort.
Kerem

1
Es ist nur eine praktische Funktion, die den zuvor beschriebenen "compileOptions" -Code in die Gradle-Datei einfügt.
user3259330

Wie kann ich das auf 8 setzen?
Neon Warge

Ich kann 1.8 und 1.9 nicht sehen? Obwohl in der Info -> Hilfe angegeben ist, dass Android Studio 1.8 JRE verwendet.
Srikar Reddy

14

Sie können es in der neuen Android Studio-Version (0.8.X) ändern.

Datei-> Andere Einstellungen -> Standardeinstellungen -> Compiler (Erweitern Sie diese, indem Sie auf den Pfeil nach links klicken) -> Java-Compiler -> Hier können Sie die Version des Projektbytecodes ändern

Geben Sie hier die Bildbeschreibung ein


8

Neueste Android Studio 1.4.

Klicken Sie auf Datei-> Projektstruktur-> SDK-Speicherort-> JDK-Speicherort.

Sie können auch die JDK-Versionskompatibilität für einzelne Module festlegen, indem Sie zum Modul (unter dem SDK-Speicherort) gehen und die Quellkompatibilität entsprechend bearbeiten. (Hinweis: Dies gilt nur für das Android-Modul.)


Diese Einstellung ist verwirrend, da sie alle Projekte betrifft, obwohl sie den Namen "Projektstruktur" trägt.
Oliver Hausler

5

Klicken Sie mit der rechten Maustaste auf Ihr Projekt> Moduleinstellung öffnen> Wählen Sie im Abschnitt "Projekteinstellung" die Option "Projekt"

Ändern Sie das Projekt-SDK auf den neuesten Stand (möglicherweise API 21) und die Projektsprachenstufe auf 7+


4

Derzeit unterstützt Android nicht Java 7, sondern nur Java 6. Neue Funktionen in Java 7 wie die Diamond-Syntax werden daher derzeit nicht unterstützt. Es ist nicht einfach, Quellen zu finden, die dies unterstützen, aber ich konnte feststellen, dass die Dalvic-Engine auf einer Teilmenge von Apache Harmony basiert, die nur Java bis Version 6 unterstützt. Wenn Sie die Systemanforderungen für die Entwicklung von Android-Apps überprüfen, heißt es auch dass mindestens JDK 6 benötigt wird (obwohl dies natürlich kein wirklicher Beweis ist, sondern nur ein Hinweis). Und das sagt so ziemlich das Gleiche wie ich. Wenn ich etwas Wesentlicheres finde, werde ich es hinzufügen.

Bearbeiten: Es scheint, dass Java 7-Unterstützung hinzugefügt wurde, seit ich diese Antwort ursprünglich geschrieben habe. Überprüfen Sie die Antwort von Sergii Pechenizkyi .


2
Hier eine ähnliche Frage mit einem Link zur Behebung
blalasaadri

2

Verwenden Sie zum Erstellen immer die neueste SDK-Version:

compileSdkVersion 23

Es hat keinen Einfluss auf das Laufzeitverhalten , bietet Ihnen jedoch die neuesten Programmierfunktionen.


2

Gehen Sie in Ihren Gradle und suchen Sie nach sourceCompatibility und ändern Sie ihn von 1.6 auf 7 . Das hat zumindest bei mir funktioniert.

Sie können auch in Ihre Moduleinstellungen gehen und die Quell- / Zielkompatibilität auf 1.7 einstellen .

Moduleinstellungsfenster

Dadurch wird der folgende Code in Ihrem Gradle erzeugt:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.