2013-10-17 8 views
5

Ho spostato la mia app Android su Android Studio senza passare a Gradle. Ora voglio trasferirmi a Gradle. L'app si compila in Android Studio prima di passare a Gradle, ma ora che ho Gradle tutto configurato, non compilerà le dichiarazioni degli switch di stringa o gli operatori di diamante. L'errore che sto ottenendo èIl passaggio da Android a gradle non compila le caratteristiche del codice JRE7

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

ho fatto in modo che io sono in esecuzione su JRE 7 stampando il

System.getProperty("java.version") 

in un compito. L'uscita è

1.7.0_25 

Ciò che mi confonde di più è la discrepanza tra "-source 1.6" e "usare -source 7". Ma so che entrambi sono nomi per gli sdk di Java, quindi forse i titoli sono semplicemente confusi.

C'è una impostazione Gradle che ho bisogno di impostare? o non è possibile in Gradle? Se non è confuso perché funziona senza Gradle.

Si noti che la versione senza Gradle del mio progetto esegue la build predefinita di Android Studio. Non ho scritto una sceneggiatura di formica o uno script per creare il maven. Uno di questi potrebbe essere il modo in cui viene creato, ma non ho file specifici per il progetto. Solo i file .iml di Studio Android.

UPDATE Ho provato ad aggiungere quanto segue per l'androide build.gradle {} sezione

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

ma i file .class non sono riusciti a costruire e che non sono stati inclusi nel apk. Vedi le "Progetti Android Bisogno librerie compilate con Java 1.6" a this post

+0

avete risolto il problema ora? –

+0

In realtà ho rinunciato a provare. Ho cambiato tutti questi punti nel codice per essere conforme a JRE6 e sto semplicemente vivendo con esso. Mi piacerebbe farlo funzionare, se posso, ma non posso permettermi di approfondirlo. – laochiv

+0

Ho risolto questo. A proposito, se tutti gli altri metodi falliscono e sei troppo pigro per capire perché, c'è una soluzione simile a una mazza: http://stackoverflow.com/a/21051506/1418097 –

risposta

3

È possibile aggiornare un modulo Android esistente/libreria per Java 7 aggiungendo quanto segue nella sezione android del build.gradle:

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_7 
    targetCompatibility JavaVersion.VERSION_1_7 
} 

per un modulo Java (non-Android), è necessario aggiungere il seguente al build.gradle subito dopo apply plugin: 'java':

sourceCompatibility = 1.7 
targetCompatibility = 1.7 

per entrambi i tipi di moduli, è sarà necessario modificare manualmente il livello di lingua del progetto in File -> Struttura progetto -> Progetto (oppure modificare manualmente la configurazione in .idea/misc.xml da JDK_1_6 a JDK_1_7).

Potrebbe anche essere necessario aggiungere quanto segue a .idea/compiler.xml, nel blocco <component name="CompilerConfiguration"> (ma vedere come si ottiene su senza di esso prima):

<bytecodeTargetLevel target="1.7" /> 
Problemi correlati