De hecho, puede usar la gradle-retrolamba
dependencia de compilación de gradle para usar Java 8 para el desarrollo de Android.
A continuación se muestra la guía completa que he seguido recientemente para ejecutar expresiones lambda para el desarrollo de Android. La fuente original de esta guía se menciona al final.
En esta guía, se demostrará un método para incorporar algunas características de Java 8 a las herramientas de desarrollo de Android, específicamente para
Eclipse IDE. Sin embargo, los pasos que se describirán a lo largo de esta guía también podrían adaptarse al nuevo entorno de desarrollo de Google, Android Studio. Se basa en la edición comunitaria del popular IntelliJ Idea IDE de JetBrains y Google lo actualizó recientemente a su versión 'beta' a principios de julio de 2014, un poco antes de que se escribiera esta guía. Eclipse seguirá siendo el entorno de desarrollo destacado, al menos por un tiempo, y teniendo en cuenta el hecho de que la mayoría de los proyectos de Android se han desarrollado utilizando Eclipse, un método para incorporar nuevas características de Java 8 como expresiones lambda en ADT parece ser bastante útil para los desarrolladores.
El desarrollo de Android se basa en una implementación de Java personalizada llamada Apache Harmony Project, que finalizó en 2011. La sintaxis de Java más utilizada en el desarrollo de Android es Java 6 (v1.6) y Java 7 (v1.7) también es parcialmente compatible con la edición KitKat (Android 4.4. +). Por lo tanto, las características de Java 8 como las expresiones lambda no se pueden usar directamente en el desarrollo de aplicaciones de Android sin aplicar algunos ajustes en las herramientas de desarrollo. Afortunadamente, estas construcciones son básicamente algunas mejoras de 'azúcar sintáctico' que brindan a los desarrolladores las deficiencias de cosas como 'clases anónimas' y pueden traducirse a clases Java 6 o Java 7.
Un enfoque reciente para traducir un código fuente de Java 8 a versiones inferiores de Java se llama RetroLambda . Esta biblioteca hace que los desarrolladores ejecuten código Java 8 con expresiones lambda en Java 7 o incluso inferiores. Desafortunadamente, RetroLambda no admite funciones de Java 8 que no sean expresiones lambda por ahora, pero el concepto de expresiones lambda es el mayor salto en la plataforma Java 8 y de todos modos es una gran herramienta para los desarrolladores de Android.
Los detalles sobre esta biblioteca se pueden encontrar en su página de GitHub:
https://github.com/orfjackal/retrolambda#getting-started
Además, un complemento de Gradle para RetroLambda creado por otro desarrollador permite implementar compilaciones basadas en Gradle en proyectos Java o Android. Sin embargo, el desarrollador solo menciona la integración de este complemento en el entorno de Android Studio. Los detalles se pueden encontrar en su página de GitHub:
https://github.com/evant/gradle-retrolambda
El uso de estas infraestructuras dentro de un entorno de desarrollo basado en Eclipse no puede abordarse directamente, pero es factible y se demostrará a lo largo de esta guía.
Preparación
Esta guía asume que el lector tiene una comprensión básica del desarrollo de Android y se basa en la versión ADT 22.6.2 porque la versión ADT reciente 23.0.2 parece tener problemas como la creación de carpetas de diseño. Los detalles sobre este problema se pueden encontrar en el siguiente enlace:
http://code.google.com/p/android/issues/detail?id=72591
Se darán pasos en esta guía para una máquina de desarrollo de Windows 8.1 de 64 bits , pero se pueden adaptar fácilmente a otras plataformas. El nuevo sistema de compilación Gradle
se utilizará para los procesos de compilación / limpieza y también se proporcionará su procedimiento de instalación. Además, ambos JDK 8
y JDK 7
deben coexistir en la máquina de desarrollo. Los pasos dados a continuación deben seguirse para instalarlos:
- Vaya a la página de vista previa de acceso temprano de JDK 8 http://jdk8.java.net
- Descargue JDK 8u20 e instálelo. La instalación de JRE 8 no es necesaria y se puede omitir
- Vaya a la última página de lanzamiento estable de JDK 7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
- Descargue JDK 7u65 e instálelo. La instalación de JRE 7 nuevamente no es necesaria y se puede omitir
- Agregue la carpeta de inicio JDK 8 y la carpeta JDK 8
bin
a su %PATH%
variable
- Cree una nueva variable de entorno
JAVA_HOME
con el valor de la ruta de la carpeta de inicio de JDK 8
- Cree una nueva variable de entorno
JAVA8_HOME
nuevamente con el valor de la ruta de la carpeta de inicio de JDK 8
- Cree una nueva variable de entorno
JAVA7_HOME
con el valor de la ruta de la carpeta de inicio de JDK 7
- Abra una ventana de terminal y ejecute el
java -version
comando y verifique que Java 8 esté funcionando
- Ejecute el
javac -version
comando en la misma ventana y verifique que el compilador Java JDK 8 también esté funcionando
Ahora, ADT-22.6.2 debe descargarse desde el siguiente enlace:
http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip
- Descargue ADT y descomprima su contenido en una carpeta, por ej.
D:\adt
- Definir una nueva variable de entorno llamada
ANDROID_HOME
con el valor de la ruta de la carpeta de instalación de ADT, p. Ej.D:\adt\sdk
- Agregue sus carpetas
Andoid SDK Platform Tools
y Andoid SDK Tools
, por ejemplo , D:\adt\sdk\tools
y D:\adt\sdk\platform-tools
, a su %PATH%
variable
- Cree un acceso directo a Eclipse IDE si lo desea. Se encuentra debajo de la carpeta de instalación de ADT, por ej.
D:\adt\eclipse
- Ejecute Eclipse IDE y cree un espacio de trabajo, p. Ej.
D:\adt\workspace
- Haga clic en el
Android SDK Manager
botón que se encuentra en la barra de herramientas.
- Seleccionar
Android SDK Build tools Rev. 19.1
y Android Support Library
solo. Deseleccione todo lo demás e instale estos dos paquetes.
Si todo va bien, ADT estará en funcionamiento.
La instalación de las siguientes herramientas también es muy recomendable:
Compatibilidad con Eclipse Kepler Java 8: hace que Eclipse reconozca las nuevas extensiones de sintaxis de Java 8 y te hace deshacerte de las molestias red dots
en tu editor de código Java. Puede instalarse a través Help -> Install New Software
de Eclipse. Ingrese http://download.eclipse.org/eclipse/updates/4.3-P-builds/ en el Work with
campo y continúe instalándolo.
Nodeclipse / Enide Gradle: se utiliza principalmente para resaltar palabras clave del idioma Groovy. Groovy se utiliza como DSL para los scripts de compilación de Gradle. Este complemento se puede instalar a través de Eclipse Marketplace
. Sin embargo, Eclipse dentro de ADT-22.6.2 no viene junto con Eclipse Marketplace Client
. Por lo tanto, primero deberá instalar Eclipse Marketplace Client
mediante la Install New Software
herramienta en Eclipse. Ingrese http //: download.eclipse.org/mpc/kepler/ en el Work with
campo y continúe instalándolo. Después de la instalación Eclipse Marketplace Client
, es posible buscar Nodeclipse/Enide Gradle
en el Eclipse Marketplace Client
e instalarlo.
Dispositivo virtual Genymotion: es un gran reemplazo del valor predeterminado Android Virtual Device
que viene junto con ADT. AVD es molestamente molesto y sigue fallando sin razón. Genymotion te hace preparar los VD de Android usando CyanogenMod
imágenes ejecutadas por Oracle VirtualBox . Su licencia de usuario único es gratuita y se puede descargar desde http://www.genymotion.com . Solo se requiere un inicio de sesión y también se puede integrar en Eclipse. Los detalles se pueden encontrar en:
https://cloud.genymotion.com/page/doc/#collapse8
A continuación se muestra una captura de pantalla de un dispositivo virtual CyanogenMod basado en Android 4.3,
Podría considerarse como un dispositivo Android totalmente compatible que se ejecuta en una computadora personal basada en x86 o x64. Para utilizar los servicios de Google como Google PlayStore
en este dispositivo virtual, una gapps
imagen para la versión de Android que utiliza debe mostrarse en el dispositivo. Se gapps
puede descargar una imagen adecuada para el dispositivo desde el sitio web de CyanogenMod:
http://wiki.cyanogenmod.org/w/Google_Apps
La instalación de Gradle es opcional, ya que también la proporciona el SDK de Android, pero se recomienda encarecidamente su instalación por separado. La instalación del mismo puede realizarse siguiendo estos pasos:
Aplicación de demostración
Se creará una aplicación simple para demostrar el uso de las herramientas que se describieron en la sección anterior. Simplemente puede seguir los pasos que se detallan a continuación para obtener información sobre el uso de expresiones lambda en las Herramientas para desarrolladores de Android:
- Ejecute Eclipse IDE y cree una nueva aplicación de Android seleccionando
File -> New -> Other -> Android -> Android Application Project
- Complete el formulario que aparece como se muestra a continuación:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
- Anular selección
Project -> Build Automatically
opción de menú
- Haga clic derecho en el proyecto y seleccione
Properties -> Builders
y anule la selección de todos los constructores predeterminados proporcionados por ADT
- Haga clic en el
New
botón en la misma ventana y seleccione Program
y haga clicOK
- Aparecerá una nueva ventana de configuración del generador. Complete sus pestañas de la siguiente manera:
Main
Pestaña de la nueva configuración del generador
Refresh
Pestaña de la nueva configuración del generador
Environment
Pestaña de la nueva configuración del generador
Build Options
Pestaña de la nueva configuración del generador
- Cree el segundo generador llamado
Gradle_Post_Build
que utiliza gradle_post_build.cmd
como su programa. Todas las demás configuraciones de este generador deben ser exactamente las mismas que las del generador creado anteriormente. Este constructor será responsable de copiar los artefactos creados por el proceso de compilación en la bin
carpeta.
- Cree el tercer generador llamado
Gradle_Cleaner
que utiliza gradle_clean.cmd
como su programa. Solo la Run the builder
configuración en la pestaña final debe establecerse como During a Clean
. Todas las demás configuraciones de este generador deben ser exactamente iguales con el primer generador. Este constructor será responsable de limpiar los artefactos creados por el proceso de construcción como su nombre indica.
Nuevos constructores del HelloLambda
proyecto
- Haga clic derecho en el proyecto y seleccione
Export
- Seleccionar
Android -> Generate Gradle Build Files
y hacer clicNext
- Seleccione el proyecto en la siguiente ventana y haga clic en
Finish
- Vaya a la carpeta raíz de su proyecto y elimine los archivos
gradlew
y gradlew.bat
. Eliminar también la gradle
carpeta
- Vuelva a Eclipse y seleccione la
Project -> Clean
opción de menú. Rellene el formulario que se muestra a continuación:
Clean Project
Ventana
- Haga clic
OK
y espere hasta que se complete el proceso de limpieza.
- Agregue el fragmento de código Java que figura a continuación justo después de la llamada a
setContentView
funcionar en su MainActivity
clase:
- Cambie el comienzo del
build.gradle
archivo hasta la sourceCompatibility
sección de la siguiente manera:
- Haga clic derecho en el proyecto y seleccione la
Properties -> Java Compiler
opción y establezca todos los niveles de cumplimiento en Java 8. Esto hará que Eclipse reconozca nuevas construcciones Java 8 como expresiones lambda.
- Haga clic
No
en la ventana de notificación.
- Haga clic derecho en el proyecto y seleccione
Build project
. Eclipse comenzará a construir el proyecto.
Proceso de construcción
Eclipse ahora podrá reconocer R.java
ybuildConfig.java
archivos y no mostrará ninguno red dots
que denote errores relacionados con los archivos de recursos del proyecto.
- Cree una nueva
Run Configuration
plataforma de destino para Android haciendo clic derecho en el proyecto y luego seleccionandoRun As -> Run Configurations
. Por ejemplo, esta aplicación de demostración se ve como se muestra a continuación en Genymotion VD:
Aplicación HelloLambda
Puede observar en la LogCat
ventana que el fragmento de código con una expresión lambda simple funciona correctamente
Fuente: Uso de Java 8 Lambda Expressions en Android Developer Tools