web-dev-qa-db-fra.com

Est-il possible d'utiliser Java 8 pour le développement Android?

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.

582
nPn

Java 8

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

Utilisateurs Eclipse:

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:

Eclipse Preferences -> Java -> Compiler

Java 7 ou supérieur est requis si vous ciblez Android 5.0 ou supérieur.

installez plusieurs JDK et essayez.

177
Eng. Samer T

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.

345
ekcr1

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.

Préparation

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:

  • Accéder à la page d’aperçu de l’accès anticipé JDK 8 http://jdk8.Java.net
  • Téléchargez JDK 8u20 et installez-le. L'installation de JRE 8 n'est pas nécessaire et peut être ignorée
  • Allez à la page de la dernière version stable JDK 7 http://www.Oracle.com/technetwork/Java/javase/downloads/jdk7-downloads-1880260.html
  • Téléchargez JDK 7u65 et installez-le. L’installation de JRE 7 n’est plus nécessaire et peut être ignorée
  • Ajoutez le dossier de départ JDK 8 et le dossier JDK 8 bin à votre variable %PATH%
  • Créez une nouvelle variable d'environnement Java_HOME avec la valeur du chemin du dossier de base JDK 8
  • Créez à nouveau une nouvelle variable d'environnement Java8_HOME avec la valeur du chemin d'accès au dossier de base JDK 8.
  • Créer une nouvelle variable d'environnement Java7_HOME avec la valeur du chemin d'accès au dossier de base JDK 7
  • Ouvrez une fenêtre de terminal et exécutez la commande Java -version et vérifiez que Java 8 est opérationnel.
  • Exécutez la commande 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

  • Téléchargez ADT et décompressez son contenu dans un dossier, par exemple. D:\adt
  • Définissez une nouvelle variable d’environnement appelée Android_HOME avec la valeur du chemin d’accès de votre dossier d’installation ADT, par exemple. D:\adt\sdk
  • Ajoutez vos dossiers Andoid SDK Platform Tools et Andoid SDK Tools, par exemple. D:\adt\sdk\tools et D:\adt\sdk\platform-tools, à votre variable %PATH%
  • Créez un raccourci vers Eclipse IDE si vous le souhaitez. Il se trouve sous votre dossier d’installation ADT, par exemple. D:\adt\Eclipse
  • Exécutez Eclipse IDE et créez un espace de travail, par exemple. D:\adt\workspace
  • Cliquez sur le bouton Android SDK Manager qui se trouve dans la barre d’outils.
  • Sélectionnez 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:

enter image description here

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

  • Sous Previous Releases choisissez la version 1.10 et téléchargez soit gradle-1.10-all.Zip ou gradle-1.10-bin.Zip
  • Décompressez son contenu dans un dossier, par exemple D:\adt\gradle
  • Définissez une nouvelle variable d’environnement appelée GRADLE_HOME avec la valeur du chemin d’accès à votre dossier d’installation de Gradle, par exemple. D:\adt\gradle
  • Ajoutez votre dossier binaire Gradle, par exemple. D:\adt\gradle\bin, à votre %PATH% variable
  • Ouvrez une fenêtre de terminal et exécutez la commande gradle -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.

Application de démonstration

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:

  • Exécutez Eclipse IDE et créez une nouvelle application Android en sélectionnant File -> New -> Other -> Android -> Android Application Project.
  • Remplissez le formulaire qui se présente comme indiqué ci-dessous:

enter image description here

  • Cliquez simplement sur le bouton Next sur les formulaires suivants et cliquez sur le bouton Finish du dernier. Attendez que ADT ait fini de charger le projet
  • Faites un clic droit sur le projet et sélectionnez New -> Folder et nommez-le builders
  • Cliquez avec le bouton droit sur le dossier 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. Thegen` 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:

    • gradle_build.cmd
    • gradle_post_build.cmd
    • gradle_clean.cmd
  • Remplissez ces fichiers de commandes comme suit:

gradle_build.cmd:

enter image description here

gradle_post_build.cmd:

enter image description here

gradle_clean.cmd:

enter image description here

  • Désélectionnez _ l'option de menu Project -> Build Automatically
  • Cliquez avec le bouton droit sur le projet et sélectionnez Properties -> Builders et désélectionnez tous les générateurs par défaut fournis par ADT.
  • Cliquez sur le bouton New dans la même fenêtre et sélectionnez Program, puis cliquez sur OK.
  • La nouvelle fenêtre de configuration du générateur apparaîtra. Remplissez ses onglets comme suit:

Main Onglet de la nouvelle configuration du générateur

enter image description here

Refresh Onglet de la nouvelle configuration du générateur

enter image description here

Environment Onglet de la nouvelle configuration du générateur

enter image description here

Build Options Onglet de la nouvelle configuration du générateur

enter image description here

  • Créez le second générateur appelé 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.
  • Créez le troisième générateur appelé 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

enter image description here

  • Faites un clic droit sur le projet et sélectionnez Export
  • Sélectionnez Android -> Generate Gradle Build Files et cliquez Next
  • Sélectionnez le projet dans la fenêtre suivante et cliquez sur Finish
  • Accédez au dossier racine de votre projet et supprimez les fichiers gradlew et gradlew.bat. Supprimer également le dossier gradle
  • Revenez à Eclipse et sélectionnez l’option de menu Project -> Clean. Remplissez le formulaire qui se présente comme suit:

Clean Project Window

enter image description here

  • Cliquez sur OK et attendez la fin du processus de nettoyage.
  • Ajoutez l'extrait de code Java donné ci-dessous juste après l'appel de la fonction setContentView dans votre classe MainActivity:

enter image description here

  • Modifiez le début du fichier build.gradle jusqu'à la section sourceCompatibility comme suit:

enter image description here

  • Cliquez avec le bouton droit sur le projet, sélectionnez l'option 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.
  • Cliquez sur No dans la fenêtre de notification.
  • Cliquez avec le bouton droit sur le projet et sélectionnez Build project. Eclipse va commencer à construire le projet.

Processus de construction  enter image description here

  • 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

enter image description here

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.

  • Créez un nouveau 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:

Application HelloLambda

enter image description here

Vous pouvez observer dans la fenêtre LogCat que l'extrait de code avec une expression lambda simple fonctionne correctement

enter image description here

Source: tilisation de Java 8 expressions lambda dans Android outils de développement

99
Sufiyan Ghori

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)

annotations répétables

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).

42
user4774371

Oui, Android Prend en charge Java 8 maintenant (24.1.17)

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.

enter image description here

20
sivi

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).

19
chaqke

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:

  • Expressions lambda
  • Références de méthode
  • Annotations de type (les informations d'annotation de type ne sont actuellement pas disponibles au moment de l'exécution, mais uniquement au moment de la compilation);
  • Annotations répétées
  • Méthodes d'interface par défaut et d'interface statique (à partir de l'API, niveau 24 ou supérieur, aucun support d'exécution instantané n'est disponible);

Également à partir du niveau 24 minimum 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 ()

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!

14
Dhaval Jivani

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.

14
Jay

Nous pouvons utiliser Java 8 en utilisant:

  1. Dans build.gradle (Project: myProject), ajoutez ce qui suit

    classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
    
  2. 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
    }
    
12
Vishal Raj

Android Studio 3.0 a commencé à fournir une prise en charge intégrée de certaines des fonctionnalités du langage Java 8, à savoir:

  • Expressions lambda
  • Références de méthode
  • Tapez les annotations (les informations sont disponibles au moment de la compilation, mais pas au moment de l'exécution)
  • Annotations répétées
  • Méthodes d'interface par défaut et statique

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

7
Idolon

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:

https://kotlinlang.org

ou regardez cette vidéo d'une conférence donnée par Jake Wharton

https://www.youtube.com/watch?v=A2LukgT2mKc

5
nPn

Moyen facile

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).

image

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.

5
Khemraj

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.

4
asozcan

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
    }
}
4
Ahmad Aghazadeh

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

2
Ajay S

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

2
stamanuel

ajouter cette ligne dans le niveau de construction du module

compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }

2
yuvrajsinh

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

Adjustment Window

Plus d'informations sont données dans le lien ci-dessous.

https://developer.Android.com/studio/write/Java8-support.html

1
Fio

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.

1
nPn

J'ai écrit une réponse similaire à une question similaire sur Stack Overflow, mais voici une partie de cette réponse.

Android Studio 2.1:

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.


Avant Android Studio 2.1:

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 .

1

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)
1
BlackHatSamurai

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
    ...
}
1
Richard

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)

enter image description here

0
zackygaurav