2013-10-17 10 views
5

ich mein Android-App über Android Studio bewegt, ohne zu Gradle zu wechseln. Jetzt möchte ich nach Gradle ziehen. Die App stellt in Android Studio vor dem Gradle Schalt, aber jetzt, dass ich Gradle alle eingerichtet, es wird die String Switch-Anweisungen oder den Diamanten Operatoren nicht kompilieren. Der Fehler Ich erhalte istAndroid-Schalter auf gradle nicht JRE7 Code kompilieren verfügt

Gradle: error: strings in switch are not supported in -source 1.6 
(use -source 7 or higher to enable strings in switch) 

ich sicher gemacht haben, dass ich auf JRE 7 leite durch den Druck

System.getProperty("java.version") 

in einer Aufgabe. Der Ausgang ist

1.7.0_25 

Was verwirrt mich am meisten ist die Diskrepanz zwischen „-Quelle 1.6“ und „-Quelle 7 verwenden“. Aber ich weiß, dass diese beide sind Namen für Java SDK so vielleicht die Titel nur bis gemischt werden.

Gibt es eine Einstellung, die ich Gradle setzen müssen? oder ist das in Gradle nicht möglich? Wenn nicht, ist es verwirrend, warum es ohne Gradle funktioniert.

Es sollte beachtet werden, dass die ohne Gradle Version meines Projekts der Standard-Android Studio bauen läuft. Ich habe kein Ameisen-Skript oder Maven-Skript geschrieben, um es zu erstellen. Eine davon mag sein, wie sie gebaut wird, aber ich habe keine projektspezifischen Dateien für sie. Nur die .iml-Dateien von Android Studio.

UPDATE Ich habe versucht, nach dem auf dem build.gradle android Zugabe {} Abschnitt

compileOptions { 
    sourceCompatibility = org.gradle.api.JavaVersion.VERSION_1_7 
    targetCompatibility = org.gradle.api.JavaVersion.VERSION_1_7 
} 

aber die .class Dateien konnten bauen und sie waren nicht in der apk enthalten. Siehe die „Android Projekte Bibliotheken benötigen Zusammengestellt mit Java 1.6“ auf this post

+0

Haben Sie das Problem jetzt lösen? –

+0

Eigentlich habe ich es aufgegeben. Ich habe all diese Stellen im Code wieder auf JRE6 umgestellt und lebe einfach damit. Ich würde es gerne in Gang bringen, wenn ich kann, aber ich kann es mir nicht leisten, darauf zu rathen. – laochiv

+0

Ich habe das gelöst. Übrigens, wenn alle anderen Methoden fehlschlagen und du zu faul bist, um herauszufinden, warum, gibt es eine Vorschlaghammer-ähnliche Lösung: http://Stackoverflow.com/a/21051506/1418097 –

Antwort

3

Sie können eine bestehende Android app/Bibliotheksmodul auf Java 7 aktualisieren, indem Sie folgende in dem android Abschnitt Ihrer build.gradle:

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_7 
    targetCompatibility JavaVersion.VERSION_1_7 
} 

sourceCompatibility = 1.7 
targetCompatibility = 1.7 

Für beide Arten von Modulen Sie:

Für eine Java (nicht-android-Modul), sollten Sie die folgenden build.gradle kurz nach apply plugin: 'java' hinzufügen müssen manuell das Sprachniveau des Projekts in Datei ändern -> Projektstruktur -> Projekt (oder Sie können die Config in .idea/misc.xml von JDK_1_6 zu JDK_1_7 manuell bearbeiten).

könnten Sie auch Folgendes .idea/compiler.xml im <component name="CompilerConfiguration"> Block (aber sehen Sie, wie Sie ohne es bekommen auf den ersten) hinzufügen müssen:

<bytecodeTargetLevel target="1.7" /> 
Verwandte Themen