Vous pouvez en effet utiliser la gradle-retrolambadépendance de construction gradle pour utiliser Java 8 pour le développement Android.
Vous trouverez ci-dessous le guide complet que j'ai récemment suivi pour exécuter des expressions lambda pour le développement Android. La source originale de ce guide est mentionnée à la fin.
Dans ce guide, une méthode pour intégrer certaines fonctionnalités de Java 8 dans les outils de développement Android sera présentée, visant spécifiquement
Eclipse IDE. Cependant, les étapes qui seront 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 du populaire IntelliJ Idea IDE de JetBrains et il a récemment été mis à niveau vers sa version `` bêta '' par Google début juillet 2014, un peu avant la rédaction de ce guide. Eclipse restera le principal environnement de développement, au 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 pour intégrer de nouvelles fonctionnalités Java 8 comme des expressions lambda dans ADT semble être très utile pour les développeurs.
Le développement Android est basé sur une implémentation Java personnalisée appelée Apache Harmony Project qui a pris fin en 2011. La syntaxe Java la plus couramment utilisée dans le développement Android 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 Java 8 telles que les expressions lambda ne peuvent pas être utilisées directement dans le développement d'applications Android sans appliquer quelques ajustements aux outils de développement. Heureusement, ces constructions sont essentiellement des améliorations de «sucre syntaxique» qui donnent aux développeurs les lacunes de choses comme les «classes anonymes» et elles peuvent être traduites en classes Java 6 ou Java 7.
Une approche récente pour traduire un code source Java 8 en versions Java inférieures est appelée RetroLambda . Cette bibliothèque permet aux développeurs d'exécuter du 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 l'instant, mais le concept d'expressions lambda est le plus grand saut sur la plate-forme Java 8 et c'est un excellent outil pour les développeurs Android de toute façon.
Les détails sur cette bibliothèque peuvent être trouvés 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 elle est réalisable et sera démontrée tout au long de ce guide.
Préparation
Ce guide suppose que le lecteur a une compréhension de base du développement Android et qu'il est basé sur la version 22.6.2 d'ADT car la version récente 23.0.2 d'ADT semble avoir des problèmes comme la création de dossier de disposition. Des détails sur ce problème peuvent être trouvés sous le lien suivant:
http://code.google.com/p/android/issues/detail?id=72591
Les étapes de ce guide seront donné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 Gradlesera utilisé pour les processus de construction / nettoyage et sa procédure d'installation sera également fournie. En outre, à la fois JDK 8et JDK 7doivent coexister sur la machine de développement. Les étapes ci-dessous doivent être suivies pour les installer:
- Accédez à la page de prévisualisation 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
- Accédez à la dernière version stable de 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 à nouveau pas nécessaire et peut être ignorée
- Ajoutez le dossier de base JDK 8 et le dossier JDK 8
binà votre %PATH%variable
- Créez une nouvelle variable d'environnement
JAVA_HOMEavec la valeur du chemin du dossier de départ JDK 8
- Créez à nouveau une nouvelle variable d'environnement
JAVA8_HOMEavec la valeur du chemin du dossier de base JDK 8
- Créez une nouvelle variable d'environnement
JAVA7_HOMEavec la valeur du chemin du dossier de départ JDK 7
- Ouvrez une fenêtre de terminal et exécutez la
java -versioncommande et vérifiez que Java 8 est opérationnel
- Exécutez la
javac -versioncommande dans la même fenêtre et vérifiez que le compilateur Java JDK 8 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_HOMEavec la valeur du chemin de votre dossier d'installation ADT, par exempleD:\adt\sdk
- Ajoutez vos dossiers
Andoid SDK Platform Toolset Andoid SDK Tools, par exemple D:\adt\sdk\toolset D:\adt\sdk\platform-tools, à votre %PATH%variable
- 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
Android SDK Managerbouton qui se trouve sur la barre d'outils
- Sélectionnez
Android SDK Build tools Rev. 19.1et Android Support Libraryuniquement. 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:
Prise en charge Eclipse Kepler Java 8: Cela permet à Eclipse de reconnaître les nouvelles extensions de syntaxe Java 8 et vous évite les ennuis red dotsdans votre éditeur de code Java. Il peut être installé via Help -> Install New SoftwareEclipse. Entrez http://download.eclipse.org/eclipse/updates/4.3-P-builds/ dans le Work withchamp et continuez à 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 construction 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 devrez d'abord installer Eclipse Marketplace Clientau moyen de l' Install New Softwareoutil dans Eclipse. Entrez http //: download.eclipse.org/mpc/kepler/ dans le Work withchamp et continuez à l'installer. Après l'installation Eclipse Marketplace Client, vous pouvez rechercher Nodeclipse/Enide Gradledans Eclipse Marketplace Clientet l'installer.
Périphérique virtuel Genymotion: c'est un excellent remplacement de la valeur par défaut Android Virtual Devicefournie avec ADT. AVD est ennuyeusement encombrant et continue de se bloquer sans raison. Genymotion vous fait préparer des VD Android à l'aide d' CyanogenModimages exécutées par Oracle VirtualBox . Sa licence mono-utilisateur est gratuite et peut être téléchargée sur http://www.genymotion.com . Seule une connexion est requise et elle peut également être intégrée à Eclipse. Les détails peuvent être trouvés sous:
https://cloud.genymotion.com/page/doc/#collapse8
Ci-dessous, une capture d'écran d'un appareil virtuel CyanogenMod basé sur Android 4.3,

Il peut être considéré comme un appareil Android à part entière fonctionnant sur un ordinateur personnel x86 ou x64. Afin d'utiliser les services Google comme Google PlayStoresur cet appareil virtuel, une gappsimage de la version Android qu'il utilise doit être flashée sur l'appareil. Une gappsimage appropriée de l'appareil peut être téléchargée à partir du site Web de CyanogenMod:
http://wiki.cyanogenmod.org/w/Google_Apps
L'installation de Gradle est facultative car elle est également fournie par le SDK Android lui-même, mais son installation séparée est fortement recommandée. L'installation de celui-ci peut être effectuée en suivant ces étapes:
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 les outils de développement Android:
- 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 apparaît comme indiqué ci-dessous:

gradle_build.cmd:

gradle_post_build.cmd:

gradle_clean.cmd:

- Désélectionner l'
Project -> Build Automaticallyoption de menu
- Cliquez avec le bouton droit sur le projet et sélectionnez
Properties -> Builderset désélectionnez tous les générateurs par défaut fournis par ADT
- Cliquez sur le
Newbouton dans la même fenêtre et sélectionnez Programet cliquez surOK
- Une nouvelle fenêtre de configuration du générateur apparaîtra. Remplissez ses onglets comme suit:
Main Onglet de la nouvelle configuration Builder

Refresh Onglet de la nouvelle configuration Builder

Environment Onglet de la nouvelle configuration Builder

Build Options Onglet de la nouvelle configuration Builder

- Créez le deuxième générateur appelé
Gradle_Post_Buildqui utilise gradle_post_build.cmdcomme 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 générateur sera chargé de copier les artefacts créés par le processus de génération dans le bindossier.
- Créez le troisième générateur appelé
Gradle_Cleanerqui utilise gradle_clean.cmdcomme programme. Seul le Run the builderparamètre dans l'onglet final doit être défini comme 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 HelloLambdaprojet

- Faites un clic droit sur le projet et sélectionnez
Export
- Sélectionnez
Android -> Generate Gradle Build Fileset cliquezNext
- 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
gradlewet gradlew.bat. Supprimer également le gradledossier
- Revenez à Eclipse et sélectionnez l'
Project -> Cleanoption de menu. Remplissez le formulaire qui apparaît comme suit:
Clean Project Fenêtre

- Cliquez
OKet attendez la fin du processus de nettoyage
- Ajoutez l'extrait de code Java ci-dessous juste après l'appel à
setContentViewfonctionner dans votre MainActivityclasse:

- Modifiez le début du
build.gradlefichier jusqu'à la sourceCompatibilitysection comme suit:

- Cliquez avec le bouton droit sur le projet et sélectionnez l'
Properties -> Java Compileroption et définissez tous les niveaux de conformité sur Java 8. Cela permettra à Eclipse de reconnaître les nouvelles constructions Java 8 comme les expressions lambda.
- Cliquez
Nodans la fenêtre de notification
- Faites un clic droit sur le projet et sélectionnez
Build project. Eclipse commencera à construire le projet.
Processus de construction


Eclipse sera désormais en mesure de reconnaître R.javaet de buildConfig.javafichiers et il n'affichera aucun red dotsqui dénote des erreurs liées aux fichiers de ressources du projet.
- Créez un nouveau
Run Configurationpour votre plate-forme cible Android en cliquant avec le bouton droit sur le projet, puis en le sélectionnant Run As -> Run Configurations. Par exemple, cette application de démonstration ressemble à celle illustrée ci-dessous sur le Genymotion VD:
Application HelloLambda

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

Source: Utilisation de Java 8 Lambda Expressions dans les outils de développement Android