Vous pouvez en effet utiliser la gradle-retrolamba
dé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 Gradle
sera utilisé pour les processus de construction / nettoyage et sa procédure d'installation sera également fournie. En outre, à la fois JDK 8
et JDK 7
doivent 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_HOME
avec la valeur du chemin du dossier de départ JDK 8
- Créez à nouveau une nouvelle variable d'environnement
JAVA8_HOME
avec la valeur du chemin du dossier de base JDK 8
- Créez une nouvelle variable d'environnement
JAVA7_HOME
avec la valeur du chemin du dossier de départ JDK 7
- Ouvrez une fenêtre de terminal et exécutez la
java -version
commande et vérifiez que Java 8 est opérationnel
- Exécutez la
javac -version
commande 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_HOME
avec la valeur du chemin de votre dossier d'installation ADT, par exempleD:\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 %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 Manager
bouton qui se trouve sur 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:
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 dots
dans votre éditeur de code Java. Il peut être installé via Help -> Install New Software
Eclipse. Entrez http://download.eclipse.org/eclipse/updates/4.3-P-builds/ dans le Work with
champ 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 Client
au moyen de l' Install New Software
outil dans Eclipse. Entrez http //: download.eclipse.org/mpc/kepler/ dans le Work with
champ et continuez à l'installer. Après l'installation Eclipse Marketplace Client
, vous pouvez rechercher Nodeclipse/Enide Gradle
dans Eclipse Marketplace Client
et l'installer.
Périphérique virtuel Genymotion: c'est un excellent remplacement de la valeur par défaut Android Virtual Device
fournie avec ADT. AVD est ennuyeusement encombrant et continue de se bloquer sans raison. Genymotion vous fait préparer des VD Android à l'aide d' CyanogenMod
images 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 PlayStore
sur cet appareil virtuel, une gapps
image de la version Android qu'il utilise doit être flashée sur l'appareil. Une gapps
image 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 Automatically
option de menu
- 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
New
bouton dans la même fenêtre et sélectionnez Program
et 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_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 générateur sera chargé de copier les artefacts créés par le processus de génération dans le bin
dossier.
- Créez le troisième générateur appelé
Gradle_Cleaner
qui utilise gradle_clean.cmd
comme programme. Seul le Run the builder
paramè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 HelloLambda
projet
- Faites un clic droit sur le projet et sélectionnez
Export
- Sélectionnez
Android -> Generate Gradle Build Files
et 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
gradlew
et gradlew.bat
. Supprimer également le gradle
dossier
- Revenez à Eclipse et sélectionnez l'
Project -> Clean
option de menu. Remplissez le formulaire qui apparaît comme suit:
Clean Project
Fenêtre
- Cliquez
OK
et attendez la fin du processus de nettoyage
- Ajoutez l'extrait de code Java ci-dessous juste après l'appel à
setContentView
fonctionner dans votre MainActivity
classe:
- Modifiez le début du
build.gradle
fichier jusqu'à la sourceCompatibility
section comme suit:
- Cliquez avec le bouton droit sur le projet et sélectionnez l'
Properties -> Java Compiler
option 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
No
dans 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.java
et de buildConfig.java
fichiers et il n'affichera aucun red dots
qui dénote 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 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 LogCat
fenê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