Comment définir -source 1.7 dans Android Studio et Gradle

177

J'obtiens l'erreur suivante en essayant de compiler mon projet dans Android Studio:

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

J'ai 1.7 défini comme cible dans toutes les préférences de projet que j'ai trouvées. Le chemin affiché dans le SDK du projet sous le SDK 1.7 est également le chemin correct vers l'installation de java 1.7.

Même lorsque j'exécute java -version dans le terminal, cela me dit que je tourne sur java 1.7.

J'ai essayé de définir la variable d'environnement JAVA_HOME sur ceci:

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

L'erreur ne disparaît pas. Comment éliminer l'erreur?

simekadam
la source
Avez-vous sourceCompatibilitydéfini dans votre build.gradle?
fge
Le support de Java 7 a été ajouté aux outils de construction 19. Veuillez vérifier ma réponse modifiée.
Sergii Pechenizkyi

Réponses:

289

La prise en charge de Java 7 a été ajoutée aux outils de construction 19. Vous pouvez désormais utiliser des fonctionnalités telles que l'opérateur diamant, multi-catch, try-with-resources, chaînes dans les commutateurs, etc. Ajoutez ce qui suit à votre 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+, le plugin Android gradle 0.6. + Sont requis.

Notez que seulement essayer avec des ressources nécessitent minSdkVersion19. D'autres fonctionnalités fonctionnent sur les plates-formes précédentes.

Lien vers le guide de l'utilisateur du plugin Android Gradle

Lien pour voir en quoi la source et la cible sont différentes

Sergii Pechenizkyi
la source
1
Cela fonctionne-t-il uniquement dans Android Studio ou est-il possible de le faire fonctionner également dans Eclipse avec ADT?
Natix
1
C'est possible avec le dernier ADT pour Eclipse. Consultez la description complète ici: sites.google.com/a/android.com/tools/recent/…
Sergii Pechenizkyi
7
woohoo pour les commutateurs de chaîne!
coder
10
Notez que try-with-resources ne peut être utilisé qu'avec l'API 19 ou supérieure.
Alex Lockwood
73

Peut-être que ces réponses ci-dessus sont anciennes mais avec le nouvel Android Studios 1, vous faites ce qui suit pour voir le module à exécuter sur 1.7 (ou 1.6 si vous préférez). Cliquez sur Fichier -> Structure du projet. Sélectionnez le module que vous souhaitez exécuter, puis sous "Compatibilité source" et "Compatibilité cible", sélectionnez 1.7. Cliquez sur OK".

Écran Structure du projet d'Android Studios 1

Simon
la source
5
Je suppose que c'est la bonne réponse pour le dernier studio Android. J'aimerais pouvoir faire de cette réponse aussi une bonne réponse ...
pravin
1
C'est essentiellement la même que la réponse acceptée.
Kerem
1
C'est juste une fonctionnalité pratique, il insérera le code "compileOptions" décrit précédemment dans le fichier gradle.
user3259330
Comment puis-je définir ce paramètre sur 8?
Neon Warge
Je ne vois pas 1,8 et 1,9? Même si À propos -> Aide indique que le studio Android utilise 1.8 JRE.
Srikar Reddy
14

Vous pouvez le changer dans la nouvelle version du studio Android (0.8.X)

Fichier-> Autres paramètres -> Paramètres par défaut -> Compilateur (développez-le en cliquant sur la flèche gauche) -> Compilateur Java -> Vous pouvez modifier la version du bytecode du projet ici

entrez la description de l'image ici

San
la source
8

Dernier Android Studio 1.4.

Cliquez sur Fichier-> Structure du projet-> Emplacement du SDK-> Emplacement JDK.

Vous pouvez également définir la compatibilité de la version JDK du module individuel en accédant au module (sous l'emplacement du SDK) et modifier la compatibilité de la source en conséquence. (Remarque, cela ne s'applique qu'au module Android).

Elye
la source
Ce paramètre est déroutant, car il affecte tous les projets, même s'il est nommé "Structure du projet".
Oliver Hausler
5

Faites un clic droit sur votre projet> Ouvrir les paramètres du module> Sélectionnez "Projet" dans la section "Paramètres du projet"

Modifiez le SDK du projet sur le dernier (peut être l'API 21) et le niveau de langue du projet sur 7+

kunal
la source
4

Actuellement, Android ne prend pas en charge Java 7, uniquement Java 6. Les nouvelles fonctionnalités de Java 7 telles que la syntaxe du diamant ne sont donc pas prises en charge actuellement. Trouver des sources pour prendre en charge ce n'est pas facile, mais je pourrais constater que le moteur Dalvic est construit sur un sous-ensemble d' Apache Harmony qui ne prend en charge que Java jusqu'à la version 6. Et si vous vérifiez la configuration système requise pour développer des applications Android, il indique également qu'au moins JDK 6 est nécessaire (bien que ce ne soit bien sûr pas une vraie preuve, juste une indication). Et ça dit à peu près la même chose que moi. Si je trouve quelque chose de plus substantiel, je l'ajouterai.

Edit: Il semble que le support de Java 7 ait été ajouté depuis que j'ai initialement écrit cette réponse; Vérifiez la réponse de Sergii Pechenizkyi .

blalasaadri
la source
2
Ici, une question similaire avec un lien sur la façon de surmonter le problème: stackoverflow.com/questions/14487682/…
blalasaadri
2

Utilisez toujours la dernière version du SDK pour créer:

compileSdkVersion 23

Cela n'affecte pas le comportement d'exécution , mais vous offre les dernières fonctionnalités de programmation.

DenisKolodin
la source
2

Allez dans votre Gradle et recherchez sourceCompatibility et changez-le de 1.6 à 7 . Cela a fonctionné pour moi au moins.

Vous pouvez également accéder aux paramètres de votre module et définir la compatibilité source / cible sur 1.7.

Fenêtre des paramètres du module

Cela produira le code suivant dans votre Gradle:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
Feorice
la source