En recherchant sur le Web, il n’est pas clair si Java 8 est pris en charge pour Android développement ou non.
Avant de télécharger/installer Java 8, est-ce que quelqu'un peut m'indiquer une documentation "officielle" qui indique que Java 8 est ou n'est pas pris en charge pour le développement Android.
Android prend en charge toutes les fonctionnalités du langage Java 7 et un sous-ensemble de fonctions du langage Java 8 qui varient en fonction de la version de la plate-forme.
Pour vérifier quelles fonctionnalités de Java 8 sont prises en charge
tilisez Java 8 fonctionnalités du langage
Nous avons décidé d'ajouter le support pour les fonctionnalités du langage Java 8 directement dans les outils javac et dx actuels, et de rendre obsolète la chaîne d'outils Jack. Avec cette nouvelle orientation, les outils et plug-ins existants dépendant du format de fichier de classe Java devraient continuer à fonctionner. À l'avenir, les fonctionnalités du langage Java 8 seront prises en charge de manière native par le système de construction Android. Nous prévoyons lancer ceci dans le cadre de Android Studio dans les semaines à venir, et nous voulions vous faire part de cette décision rapidement.
Future of Java 8 Prise en charge des fonctionnalités de langage sous Android
Pour les vieux développeurs qui préfèrent Eclipse, Google cesse de supporter Eclipse Android Outils de développement
si vous avez installé Java 8 JDK, essayez-le. Si des problèmes apparaissent, essayez de définir le compilateur sur 1.6 dans Eclipse à partir du menu de la fenêtre → Préférences → Java → Compilateur . Java 7 fonctionnera aussi:
Java 7 ou supérieur est requis si vous ciblez Android 5.0 ou supérieur.
installez plusieurs JDK et essayez.
MISE À JOUR 2017/11/04 - Android Studio 3.0 prend désormais en charge natif le logiciel Java 8. gradle-retrolambda
n'est plus nécessaire. Voir https://developer.Android.com/studio/write/Java8-support.html
Le lien ci-dessus inclut également des instructions de migration si vous utilisez gradle-retrolambda
. Réponse originale ci-dessous:
Android ne prend pas en charge Java 8. Il ne prend en charge que jusqu'à Java 7 (si vous avez KitKat) et il n'a toujours pas été appelé Dynamic, seul le nouveau sucre de syntaxe.
Si vous souhaitez utiliser lambdas, l'une des principales fonctionnalités de Java 8 sous Android, vous pouvez utiliser gradle-retrolamba . Il s’agit d’une dépendance à la génération qui intègre retrolambda, un outil qui reconvertit le bytecode Java 8 en Java 6/7. Fondamentalement, si vous définissez le compilateur dans Android Studio pour compiler le bytecode Java 8, autorisant ainsi lambdas, il sera reconverti en Java 6/7 bytecode. qui à son tour est converti en bytecode Dalvik. C'est un hack si vous voulez essayer quelques fonctionnalités de JDK 8 dans Android à la place du support officiel.
Vous pouvez en effet utiliser la dépendance de construction gradle-retrolamba
gradle pour utiliser Java 8 pour Android Development.
Vous trouverez ci-dessous le guide complet que j'ai récemment suivi pour utiliser les expressions lambda pour le développement Android. La source originale de ce guide est mentionnée à la fin.
Dans ce guide, une méthode permettant d'intégrer certaines fonctionnalités de Java 8 dans Android Outils de développement sera présentée, visant spécifiquement à Eclipse IDE . Cependant, les étapes décrites tout au long de ce guide pourraient également être adaptées au nouvel environnement de développement de Google, Android Studio. Il est basé sur l'édition communautaire de la très populaire IntelliJ Idea IDE de JetBrains et a récemment été mis à niveau vers sa version "bêta" par Google au début du mois de juillet 2014, légèrement avant la rédaction de ce guide. Eclipse restera l’environnement de développement de premier plan, du moins pendant un certain temps, et compte tenu du fait que la plupart des projets Android ont été développés à l’aide d’Eclipse, une méthode permettant d’apporter de nouvelles fonctionnalités Java 8 telles que Les expressions lambda dans ADT semblent être très utiles pour les développeurs.
Le développement Android repose sur une implémentation personnalisée de Java appelée Apache Harmony Project, terminée en 2011. La syntaxe Java la plus couramment utilisée dans Android Le développement est Java 6 (v1.6) et Java 7 (v1.7) est également partiellement pris en charge sur l'édition KitKat (Android 4.4. +). Par conséquent, les fonctionnalités de Java 8 telles que les expressions lambda ne peuvent pas être utilisées directement dans le développement d'applications Android sans appliquer quelques modifications aux outils de développement. Heureusement, ces constructions sont fondamentalement des améliorations de "sucre syntaxique" qui donnent aux développeurs les inconvénients de choses telles que les "classes anonymes" et peuvent être traduits en classes Java 6 ou Java 7.
Une approche récente permettant de traduire un code source Java 8 en versions inférieures Java est appelée RetroLambda . Cette bibliothèque oblige les développeurs à exécuter le code Java 8 avec des expressions lambda sur Java 7 ou même moins. Malheureusement, les fonctionnalités Java 8 autres que les expressions lambda ne sont pas prises en charge par RetroLambda pour le moment, mais le concept des expressions lambda est le plus grand saut sur la plate-forme Java 8 et constitue un excellent outil pour Android développeurs de toute façon.
Vous trouverez des détails sur cette bibliothèque sur sa page GitHub:
https://github.com/orfjackal/retrolambda#getting-started
De plus, un plugin Gradle pour RetroLambda créé par un autre développeur permet aux versions basées sur Gradle d'être implémentées dans des projets Java ou Android. Cependant, le développeur ne mentionne que l'intégration de ce plugin dans l'environnement Android Studio. Les détails peuvent être trouvés sur sa page GitHub:
https://github.com/evant/gradle-retrolambda
L’utilisation de ces infrastructures dans un environnement de développement basé sur Eclipse ne peut pas être abordée directement, mais c’est faisable et cela sera démontré tout au long de ce guide.
Ce guide suppose que le lecteur a une compréhension de base de Android Development et qu'il est basé sur ADT version 22.6.2, car la version récente d'ADT 23.0.2 semble poser des problèmes tels que la création d'un dossier de présentation. Vous trouverez des détails sur ce problème sous le lien suivant:
http://code.google.com/p/Android/issues/detail?id=72591
Les étapes de ce guide sont indiquées pour une machine de développement Windows 8.1, 64 bits , mais elles peuvent facilement être adaptées à d'autres plates-formes. Le nouveau système de construction Gradle
sera utilisé pour les processus de construction/nettoyage et sa procédure d'installation sera également fournie. De plus, JDK 8
et JDK 7
doivent coexister sur la machine de développement. Les étapes indiquées ci-dessous doivent être suivies pour les installer:
bin
à votre variable %PATH%
Java_HOME
avec la valeur du chemin du dossier de base JDK 8Java8_HOME
avec la valeur du chemin d'accès au dossier de base JDK 8.Java7_HOME
avec la valeur du chemin d'accès au dossier de base JDK 7Java -version
et vérifiez que Java 8 est opérationnel.javac -version
dans la même fenêtre et vérifiez que le compilateur JDK 8 Java est également opérationnel.Maintenant, ADT-22.6.2 doit être téléchargé à partir du lien suivant:
http://dl.google.com/Android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.Zip
D:\adt
Android_HOME
avec la valeur du chemin d’accès de votre dossier d’installation ADT, par exemple. D:\adt\sdk
Andoid SDK Platform Tools
et Andoid SDK Tools
, par exemple. D:\adt\sdk\tools
et D:\adt\sdk\platform-tools
, à votre variable %PATH%
D:\adt\Eclipse
D:\adt\workspace
Android SDK Manager
qui se trouve dans la barre d’outils.Android SDK Build tools Rev. 19.1
et Android Support Library
uniquement. Désélectionnez tout le reste et installez ces deux packages.Si tout se passe bien, ADT sera opérationnel.
L'installation des outils suivants est également fortement recommandée:
Eclipse Kepler Java 8 Support: Eclipse reconnaît les nouvelles extensions de syntaxe Java 8 et vous permet de vous débarrasser de red dots
ennuyeux dans votre éditeur de code Java. . Il peut être installé via Help -> Install New Software
dans Eclipse. Entrez http://download.Eclipse.org/Eclipse/updates/4.3-P-builds/ dans le champ Work with
et continuez de l'installer.
Nodeclipse/Enide Gradle: Il est principalement utilisé pour mettre en évidence les mots-clés du langage Groovy. Groovy est utilisé comme DSL pour les scripts de génération Gradle. Ce plugin peut être installé via Eclipse Marketplace
. Cependant, Eclipse dans ADT-22.6.2 ne vient pas avec Eclipse Marketplace Client
. Par conséquent, vous devez d'abord installer Eclipse Marketplace Client
à l'aide de l'outil Install New Software
dans Eclipse. Entrez http //: download.Eclipse.org/mpc/kepler/ dans le champ Work with
et continuez de l'installer. Après avoir installé Eclipse Marketplace Client
, vous pouvez rechercher Nodeclipse/Enide Gradle
dans Eclipse Marketplace Client
et l’installer.
Appareil virtuel Genymotion: Il remplace avantageusement le Android Virtual Device
par défaut qui vient avec ADT. AVD est ennuyeusement encombrant et il continue à planter sans raison. Avec Genymotion, vous préparez Android VD à l'aide de CyanogenMod
images exécutées par Oracle VirtualBox . Sa licence mono-utilisateur est gratuite et peut être téléchargée à partir de http://www.genymotion.com . Seul un identifiant est requis et il peut également être intégré à Eclipse. Les détails peuvent être trouvés sous:
https://cloud.genymotion.com/page/doc/#collapse8
Ci-dessous se trouve une capture d’écran d’un périphérique virtuel CyanogenMod basé sur Android:
Il peut être considéré comme un périphérique Android à part entière _ fonctionnant sur un ordinateur personnel x86 ou x64. Pour utiliser des services Google tels que Google PlayStore
sur ce périphérique virtuel, une image gapps
pour la version Android qu'il utilise doit être affichée en flash sur le périphérique. Une image gapps
appropriée pour le périphérique peut être téléchargée à partir du site Web CyanogenMod:
http://wiki.cyanogenmod.org/w/Google_Apps
L’installation de Gradle est facultative car elle est également fournie par le SDK Android, mais son installation séparée est vivement recommandée. L'installation de celui-ci peut être effectuée en procédant comme suit:
Visitez le site Web de Gradle: http://www.gradle.org/
Cliquez Downloads
Previous Releases
choisissez la version 1.10 et téléchargez soit gradle-1.10-all.Zip ou gradle-1.10-bin.ZipD:\adt\gradle
GRADLE_HOME
avec la valeur du chemin d’accès à votre dossier d’installation de Gradle, par exemple. D:\adt\gradle
D:\adt\gradle\bin
, à votre %PATH%
variablegradle -v
et vérifiez qu’elle est opérationnelle. Si vous êtes arrivé à ce point avec succès, cela signifie que vous êtes prêt à créer votre première application Android à l'aide de Java 8 fonctionnalités.Une application simple sera créée pour démontrer l'utilisation des outils décrits dans la section précédente. Vous pouvez simplement suivre les étapes ci-dessous pour obtenir un aperçu de l'utilisation des expressions lambda dans Android Outils de développement:
File -> New -> Other -> Android -> Android Application Project
.Next
sur les formulaires suivants et cliquez sur le bouton Finish
du dernier. Attendez que ADT ait fini de charger le projetNew -> Folder
et nommez-le builders
gen (Generated Java Files)
et supprimez-le. Gradle générera bientôt les mêmes fichiers pour nous et nous les ajouterons dans le dossier projects build path. The
gen` créé par le constructeur Ant par défaut n'est plus nécessaire et les artefacts de ce dossier seront obsolètes.Créez les fichiers de commandes suivants dans le dossier builders
:
Remplissez ces fichiers de commandes comme suit:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
Project -> Build Automatically
Properties -> Builders
et désélectionnez tous les générateurs par défaut fournis par ADT.New
dans la même fenêtre et sélectionnez Program
, puis cliquez sur OK
.Main
Onglet de la nouvelle configuration du générateur
Refresh
Onglet de la nouvelle configuration du générateur
Environment
Onglet de la nouvelle configuration du générateur
Build Options
Onglet de la nouvelle configuration du générateur
Gradle_Post_Build
qui utilise gradle_post_build.cmd
comme programme. Tous les autres paramètres de ce générateur doivent être exactement les mêmes que ceux du générateur créé précédemment. Ce constructeur sera responsable de la copie des artefacts créés par le processus de construction dans le dossier bin
.Gradle_Cleaner
qui utilise gradle_clean.cmd
comme programme. Seul le paramètre Run the builder
de l'onglet final doit être défini sur During a Clean
. Tous les autres paramètres de ce générateur doivent être exactement les mêmes que ceux du premier générateur. Ce constructeur sera responsable du nettoyage des artefacts créés par le processus de construction, comme son nom l’indique. Nouveaux constructeurs du projet HelloLambda
Export
Android -> Generate Gradle Build Files
et cliquez Next
Finish
gradlew
et gradlew.bat
. Supprimer également le dossier gradle
Project -> Clean
. Remplissez le formulaire qui se présente comme suit:Clean Project
Window
OK
et attendez la fin du processus de nettoyage.setContentView
dans votre classe MainActivity
:build.gradle
jusqu'à la section sourceCompatibility
comme suit:Properties -> Java Compiler
et définissez tous les niveaux de conformité sur Java 8. Eclipse reconnaîtra alors les nouvelles constructions Java 8, comme les expressions lambda.No
dans la fenêtre de notification.Build project
. Eclipse va commencer à construire le projet.Processus de construction
Cliquez avec le bouton droit sur le projet et accédez à Properties -> Java Build Path
. Ajoutez les dossiers suivants au chemin de construction (également montré dans l'image ci-dessous):
build\source\buildConfig\debug
build\source\r\debug
Eclipse sera désormais en mesure de reconnaître les fichiers R.Java
et buildConfig.Java
et n'affichera aucun fichier red dots
indiquant des erreurs liées aux fichiers de ressources du projet.
Run Configuration
pour votre plate-forme cible Android en cliquant avec le bouton droit de la souris sur le projet, puis en sélectionnant Run As -> Run Configurations
. Par exemple, cette application de démonstration ressemble à celle présentée ci-dessous sur le Genymotion VD:Vous pouvez observer dans la fenêtre LogCat
que l'extrait de code avec une expression lambda simple fonctionne correctement
Source: tilisation de Java 8 expressions lambda dans Android outils de développement
Suivez ce lien pour les nouvelles mises à jour. tilisez Java 8 fonctionnalités du langage
Ancienne réponse
À partir de aperçu d’Android N, relâchez Android support limité caractéristiques de Java 8 voir Fonctions du langage Java 8
Pour commencer à utiliser ces fonctionnalités, vous devez télécharger et configurer Android Studio 2.1 et le Android N Preview PreviewK, qui inclut la chaîne d'outils requise Jack et mis à jour Android Plugin pour Gradle. Si vous n'avez pas encore installé le SDK Android N Preview, voir Configurer le développement pour Android N .
pris en charge Java 8 Fonctions de langage et API
Android ne prend actuellement pas en charge toutes les fonctionnalités du langage Java 8. Toutefois, les fonctionnalités suivantes sont désormais disponibles lors du développement d'applications ciblant l'aperçu Android N:
Méthodes d'interface statique et par défaut
expressions Lambda (également disponible sur les API de niveau 23 et inférieur)
Références de méthode (également disponible sur les API de niveau 23 et inférieur)
Il y a quelques fonctionnalités supplémentaires Java 8 prises en charge par Android, vous pouvez consulter les détails complets dans Fonctionnalités du langage Java 8
Mettre à jour
Remarque: Android N base sa mise en œuvre des expressions lambda sur des classes anonymes. Cette approche leur permet d'être rétrocompatible et exécutable sur les versions antérieures d'Android. Pour tester les expressions lambda sur des versions antérieures, n'oubliez pas de vous rendre dans votre fichier build.gradle et de définir compileSdkVersion et targetSdkVersion sur 23 ou moins.
Mise à jour 2
Maintenant, Android prise en charge de la version stable de studio 3.0 bibliothèques Java 8 et Java 8 fonctionnalités du langage (sans le compilateur Jack).
Maintenant c'est possible
Toutefois, vous devez exécuter la rom de votre appareil sur Java 1.8 et activer "jackOptions" pour l'exécuter. Jack est le nom du nouveau compilateur Android exécutant Java 8.
https://developer.Android.com/guide/platform/j8-jack.html
ajoute ces lignes à build_gradle
Android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Java 8 semble être le moteur Java en cours d'exécution de Android studio 2.0, mais il n'accepte toujours pas la syntaxe de Java 8 après vérification, et vous ne pouvez pas a choisi un compilateur de Android studio maintenant. Cependant, vous pouvez utiliser le plug-in scala si vous avez besoin d'un mécanisme de programmation fonctionnel dans votre client Android.
Android utilise un Java qui se branche sur Java 6.
À partir de Android SDK version 19, vous pouvez utiliser Java 7 fonctionnalités en procédant ainsi . Pas de support complet pour Java 8 (pour le moment).
Natif Java 8 arrive sur Android! Finalement!
supprimez le plugin Retrolambda et le bloc retrolambda du fichier build.gradle de chaque module:
Pour désactiver Jack et passer à la chaîne d’outils par défaut, supprimez simplement le bloc jackOptions du fichier build.gradle de votre module.
Pour commencer à utiliser les fonctionnalités du langage Java 8 prises en charge, mettez à jour le plug-in Android vers la version 3.0.0 (ou supérieure).
À partir de Android Studio 3.0, Java 8, les fonctionnalités du langage sont désormais prises en charge nativement par Android:
Également à partir du niveau 24 minimum de l'API, les API Java 8 suivantes sont disponibles:
Ajoutez ces lignes au build.gradle de votre application pour informer le projet du niveau de langue:
Android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Désactivez la prise en charge de Java 8 fonctionnalités du langage en ajoutant les éléments suivants à votre fichier gradle.properties:
Android.enableDesugar=false
Vous avez terminé! Vous pouvez maintenant utiliser Java8 natif!
Android supporte OFFICIELLEMENT Java 8 à partir de Android N.
Les annonces de fonctionnalités sont ici , l'annonce de langage Java 8 est:
Amélioration de la prise en charge du langage Java 8 - Nous sommes ravis d’apporter la version Java 8 d’Android. Avec le compilateur Jack d'Android, vous pouvez maintenant utiliser de nombreuses fonctionnalités populaires du langage Java 8, notamment les lambdas et plus encore, sur les versions Android de Gingerbread. Les nouvelles fonctionnalités aident à réduire le code standard. Par exemple, lambdas peut remplacer des classes internes anonymes lorsqu'il fournit des écouteurs d'événement. Certaines fonctionnalités du langage Java 8 - telles que les méthodes par défaut et statiques, les flux et les interfaces fonctionnelles - sont également disponibles à partir de N Avec Jack, nous sommes impatients de suivre de plus près le langage Java tout en maintenant la compatibilité avec les versions antérieures.
Nous pouvons utiliser Java 8 en utilisant:
Dans build.gradle (Project: myProject), ajoutez ce qui suit
classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
Dans build.gradle (Module: myModule), ajoutez ce qui suit
apply plugin: 'me.tatarka.retrolambda'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Android Studio 3.0 a commencé à fournir une prise en charge intégrée de certaines des fonctionnalités du langage Java 8, à savoir:
En outre, à partir du niveau 24 de l'API, les API Java 8 suivantes sont disponibles:
Java.util.stream
Java.util.function
Java.lang.FunctionalInterface
Java.lang.annotation.Repeatable
Java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class)
Java.lang.reflect.Method.isDefault()
De plus, la prise en charge de try-with-resources
a été étendue à tous les niveaux de l'API Android.
Davantage de Java 8 fonctionnalités devraient être ajoutées à l'avenir.
Pour commencer à utiliser les fonctionnalités du langage Java 8 pris en charge, mettez à jour le plug-in Android vers la version 3.0.0-alpha1 (ou supérieure) et ajoutez les éléments suivants au fichier build.gradle de votre module:
Android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
Pour plus de détails, visitez:
https://developer.Android.com/studio/write/Java8-support.html
Lorsque j'ai posé cette question il y a près de 2 ans, la réponse était vraiment "officiellement" non, mais comme l'a souligné la réponse de ekcr1, vous pouvez utiliser l'une des fonctionnalités les plus attendues (lambdas) si vous utilisez retrolamba. À l'époque, j'utilisais encore Eclipse, car Android Studio était en mode "prévisualisation". Je n'ai donc jamais poursuivi sur cette voie.
Aujourd'hui, je pense que la réponse "officielle" est toujours non, et bien que la rétrolamba semble toujours être une bonne voie à suivre, il existe une autre option pour ceux qui souhaitent emprunter une voie quelque peu "non officielle", à savoir Kotlin.
Aujourd'hui, Kotlin a atteint 1.0.0. Pour ceux qui ne connaissent pas Kotlin, vous trouverez plus d’informations sur leur site Web à l’adresse suivante:
ou regardez cette vidéo d'une conférence donnée par Jake Wharton
Vous pouvez activer le support Java 1.8 pour le projet Android.
Ouvrir la structure du projet
Soit en appuyant sur Ctrl + Shift + Alt + S
Ou File > Project Structure
Mettez à jour la compatibilité de la source et de la cible vers 1.8 dans la boîte de dialogue Structure du projet, comme indiqué (cliquez sur Fichier> Structure du projet).
Ou vous pouvez utiliser gradle
_ Android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
_
Projet de synchronisation. Et c'est tout!
Remarque: La prise en charge de Java 1.8 peut être activée pour Android Studio 3.0.0 ou supérieur. Voir Documentation pour davantage de lecture.
Dernières nouvelles:
Google annonce que, avec Android N et Android Studio 2.1+, la plate-forme prend en charge Java 8. Une version stable de studio 2.1 est également disponible.
Nous pouvons enfin utiliser les expressions lambda. Plus aucun filtre de liste dans la boucle. Horeeey.
Ajoutez cette configuration build.gradle et sync gradle:
Android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
// or
//sourceCompatibility 1.8
//targetCompatibility 1.8
}
}
Oui. Nous allons bientôt utiliser Java 8!
Nous avons décidé d'ajouter le support des fonctionnalités du langage Java 8 directement dans les outils javac et dx actuels et de rendre obsolète la chaîne d'outils Jack. Avec cette nouvelle orientation, les outils et plug-ins existants dépendant du format de fichier de classe Java devraient continuer à fonctionner. À l'avenir, les fonctionnalités du langage Java 8 seront prises en charge de manière native par le système de construction Android. Nous prévoyons lancer ceci dans le cadre de Android Studio dans les semaines à venir, et nous voulions vous faire part de cette décision rapidement.
https://Android-developers.googleblog.com/2017/03/future-of-Java-8-language-feature.html
Google vient d’annoncer que Java 8 sera pris en charge de manière native par Android et que la chaîne d’outils de Jack va devenir obsolète:
Nous avons décidé d'ajouter le support des fonctionnalités du langage Java 8 directement dans les outils javac et dx actuels et de rendre obsolète la chaîne d'outils Jack. Avec cette nouvelle orientation, les outils et plug-ins existants dépendant du format de fichier de classe Java devraient continuer à fonctionner. À l'avenir, les fonctionnalités du langage Java 8 seront prises en charge de manière native par le système de construction Android. Nous prévoyons lancer ceci dans le cadre de Android Studio dans les semaines à venir, et nous voulions vous faire part de cette décision rapidement.
Plus d'informations ici: https://Android-developers.googleblog.com/2017/03/future-of-Java-8-language-feature.html
ajouter cette ligne dans le niveau de construction du module
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
Un sous-ensemble de Java 8 est maintenant pris en charge sur Android Studio. Effectuez simplement les ajustements de compatibilité source et cible à partir de la fenêtre ci-dessous:
Fichier -> Structure du projet
Plus d'informations sont données dans le lien ci-dessous.
https://developer.Android.com/studio/write/Java8-support.html
J'ai posé cette question il y a plus de 3 ans et, évidemment, les réponses ont changé au fil des ans. Comme beaucoup des personnes ci-dessus ont déjà répondu, la réponse est devenue Oui . Je n'ai jamais mis à jour la réponse acceptée car c'était la bonne réponse à l'époque. (Je ne suis pas sûr de savoir quelle est la politique de dépassement de capacité de la pile)
Je voulais juste ajouter une autre réponse à ceux qui recherchent encore ce sujet. À compter du 17/05/2017, Google a également annoncé que Kotlin était également une langue officielle pour Android. développement.
Je n'ai pas trouvé de communiqué de presse officiel, mais j'ai visionné certains des Google I/O vidéos où cela avait été annoncé. Voici un lien vers un blog post par l'équipe de Kotlin lors de l'annonce.
J'ai écrit une réponse similaire à une question similaire sur Stack Overflow, mais voici une partie de cette réponse.
La nouvelle version de Android Studio (2.1) prend en charge les fonctionnalités Java 8. Voici un extrait de l'article des développeurs Android du blogspot :
... Android La version 2.1 de Studio 2.1 prend en charge le nouveau compilateur Jack et prend en charge Java 8 .
...
Pour utiliser les fonctionnalités du langage Java 8 lors du développement avec l'aperçu du développeur N, vous devez utiliser le compilateur Jack. Le nouveau projet Wizard [Fichier → Nouveau → Projet] génère les configurations appropriées pour les projets ciblant le N.
Android ne supporte pas encore Java 1.8 (il ne supporte que jusqu'à 1,7), vous ne pouvez donc pas utiliser les fonctionnalités Java 8 telles que lambdas.
Cette réponse donne plus de détails sur la compatibilité de Android Studio ; il est dit:
Si vous souhaitez utiliser lambdas, l’une des fonctionnalités principales de Java 8 dans Android, vous pouvez utiliser gradle-retrolamba.
Si vous voulez en savoir plus sur l'utilisation de gradle-retrolambda
, , cette réponse donne beaucoup de détails sur cette opération .
J'ai pensé poster une réponse mise à jour pour ceux qui recherchent quelque chose d'un peu plus actuel.
Actuellement, Android et Android Studio prennent en charge un sous-ensemble de fonctionnalités Java 8. Selon la Android documentation située sur leur site Web , Google déclare:
La prise en charge des fonctionnalités du langage Java 8 nécessite un nouveau compilateur appelé Jack. Jack est pris en charge uniquement sur Android Studio 2.1 et versions ultérieures. Donc, si vous souhaitez utiliser les fonctionnalités du langage Java 8, vous devez utiliser Android Studio 2.1 pour créer votre application.
Si vous avez déjà installé Android Studio, assurez-vous de mettre à jour la dernière version en cliquant sur Aide> Rechercher les mises à jour (sur Mac, Android Studio> Rechercher les mises à jour). Si IDE n'est pas déjà installé sur votre poste de travail, téléchargez Android Studio ici.
pris en charge Java 8 Fonctions de langage et API
Android ne prend pas en charge toutes les fonctionnalités du langage Java 8. Toutefois, les fonctionnalités suivantes sont disponibles lors du développement d'applications ciblant Android 7.0 (API de niveau 24):
- Méthodes d'interface par défaut et d'interface statique Expressions Lambda (également disponibles sur les API de niveau 23 et inférieur)
- Annotations répétables
- Références de méthodes (également disponibles sur les API de niveau 23 et inférieur)
- Annotations de types (également disponible sur les API de niveau 23 et inférieur)
En outre, les API de langage Java 8 suivantes sont également disponibles:
API de réflexion et liées au langage:
- Java.lang.FunctionalInterface
- Java.lang.annotation.Repeatable
- Java.lang.reflect.Method.isDefault () et les API de réflexion associées à des annotations répétables, telles que AnnotatedElement.getAnnotationsByType (Class)
API utilitaires:
- Java.util.function
- Java.util.stream
Pour utiliser les nouvelles fonctionnalités du langage Java 8, vous devez également utiliser Jack toolchain . Cette nouvelle chaîne d’outils Android compile les sources de langage Java en bytecode lisible par Android, possède son propre format de bibliothèque .jack et fournit la plupart des fonctionnalités de la chaîne d’outils dans un seul outil: reconditionnement, réduction , obfuscation et multidex.
Voici une comparaison des deux chaînes d'outils utilisées pour créer les fichiers Android DEX:
Legacy javac toolchain: javac (.Java → .class) → dx (.class → .dex) New Jack toolchain: Jack (.Java → .jack → .dex)
Ajouter ce qui suit a résolu le problème pour moi (Android studio 2.3.2):
build.gradle (Project)
buildscript {
repositories {
...
jcenter()
}
dependencies {
...
classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY
...
}
}
build.gradle (Module: app)
apply plugin: 'com.Android.application'
apply plugin: 'me.tatarka.retrolambda' //PLUGIN
Android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
} // SET Java VERSION
...
}
Toutes les solutions ci-dessus ne semblent pas fonctionner en 2019 avec le dernier Android Studio 3.4 + .
J'ai imaginé une solution parfaite et actualisée pour migrer ou mettre à niveau votre Android Project vers Java 8 .
Solution: Cliquez sur Fichier -> Structure du projet -> Modules -> Propriétés onglet.
Changez la compatibilité de la source et compatibilité de la cible en 1.8 (Java 8)