Come impostare -source 1.7 in Android Studio e Gradle


177

Ricevo il seguente errore quando provo a compilare il mio progetto in Android Studio:

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

Ho impostato 1.7 come target in tutte le preferenze di progetto che ho trovato. Anche il percorso visualizzato nell'SDK di progetto sotto SDK 1.7 è il percorso corretto per l'installazione di java 1.7.

Anche quando eseguo java -version nel terminale, mi dice che sto eseguendo su java 1.7.

Ho provato a impostare la variabile env JAVA_HOME su questo:

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

L'errore non scompare. Come posso eliminare l'errore?


Hai sourceCompatibilityimpostato nel tuo build.gradle?
fge,

Il supporto Java 7 è stato aggiunto agli strumenti di creazione 19. Per favore, controlla la mia risposta modificata.
Sergii Pechenizkyi,

Risposte:


289

Il supporto Java 7 è stato aggiunto agli strumenti di creazione 19. Ora è possibile utilizzare funzionalità come l'operatore diamante, multi-catch, prova con risorse, stringhe negli switch, ecc. Aggiungere quanto segue al proprio 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
    }
}

Sono richiesti il ​​Gradle 1.7+, il plug-in Android Gradle 0.6. +.

Nota che provare solo con le risorse richiede minSdkVersion19. Altre funzioni funzionano su piattaforme precedenti.

Link alla guida per l'utente del plug-in Android Gradle

Link per vedere in che modo sorgente e target sono diversi


1
Funziona solo in Android Studio o è possibile farlo anche in Eclipse con ADT?
Natix,

1
È possibile con l'ultimo ADT per Eclipse. Controlla la descrizione completa qui: sites.google.com/a/android.com/tools/recent/…
Sergii Pechenizkyi,

7
woohoo per interruttori di stringa!
coder

10
Nota che provare con le risorse può essere utilizzato solo con API 19 o successive.
Alex Lockwood,

73

Forse queste risposte sopra sono vecchie ma con il nuovo Android Studios 1, fai quanto segue per vedere il modulo funzionare su 1.7 (o 1.6 se preferisci). Fare clic su File -> Struttura del progetto. Selezionare il modulo che si desidera eseguire, quindi in "Compatibilità sorgente" e "Compatibilità target", selezionare 1.7. Fai clic su "OK".

Schermata Struttura progetto di Android Studios 1


5
Immagino che questa sia la risposta corretta per l'ultimo Android Studio. Vorrei poter fare anche questa una risposta corretta ..
pravin

1
Questo è essenzialmente lo stesso della risposta accettata.
Kerem,

1
È solo una funzione di praticità, inserirà il codice "compileOptions" precedentemente descritto nel file gradle.
user3259330

Come posso impostare questo su 8?
Neon Warge,

Non riesco a vedere 1.8 e 1.9? Anche se la Guida su -> dice che Android Studio sta usando 1.8 JRE.
Srikar Reddy,

14

Puoi cambiarlo nella nuova versione di Android Studio (0.8.X)

FIle-> Altre impostazioni -> Impostazioni predefinite -> Compilatore (espanderlo facendo clic sulla freccia sinistra) -> Compilatore Java -> È possibile modificare la versione del bytecode Progetto qui

inserisci qui la descrizione dell'immagine


8

Ultimo Android Studio 1.4.

Fare clic su File-> Struttura del progetto-> Posizione SDK-> Posizione JDK.

È inoltre possibile impostare la compatibilità della versione JDK del singolo modulo accedendo al modulo (sotto la posizione dell'SDK) e modificare la compatibilità della sorgente di conseguenza. (nota, questo vale solo per il modulo Android).


Questa impostazione è confusa, poiché interessa tutti i progetti, anche se è denominata "Struttura del progetto".
Oliver Hausler,

5

Fare clic con il tasto destro del mouse sul progetto> Apri impostazione modulo> Seleziona "Progetto" nella sezione "Impostazioni progetto"

Modificare l'SDK di progetto sull'ultimo (potrebbe essere API 21) e il livello della lingua del progetto su 7+


4

Al momento, Android non supporta Java 7, solo Java 6. Le nuove funzionalità di Java 7 come la sintassi del diamante non sono pertanto attualmente supportate. Trovare le fonti per supportare questo non è facile, ma potrei scoprire che il motore Dalvic è basato su un sottoinsieme di Apache Harmony che ha sempre supportato Java fino alla versione 6. E se controlli i requisiti di sistema per lo sviluppo di app Android, afferma anche che è necessario almeno JDK 6 (anche se questo ovviamente non è una prova reale, solo un'indicazione). E questo dice praticamente lo stesso di me. Se trovo qualcosa di più finanziario, lo aggiungo.

Modifica: sembra che il supporto Java 7 sia stato aggiunto da quando ho scritto originariamente questa risposta; controlla la risposta di Sergii Pechenizkyi .


2
Qui, una domanda simile con un link su come superare il problema: stackoverflow.com/questions/14487682/...
blalasaadri

2

Usa sempre l'ultima versione dell'SDK per compilare:

compileSdkVersion 23

Non influisce sul comportamento in fase di esecuzione , ma offre le funzionalità di programmazione più recenti.


2

Entra nel tuo Gradle e cerca sourceCompatibility e modificalo da 1.6 a 7 . Questo ha funzionato almeno per me.

Puoi anche andare nelle impostazioni del tuo modulo e impostare la Compatibilità sorgente / target su 1.7.

Finestra delle impostazioni del modulo

Questo produrrà il seguente codice nel tuo Gradle:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.