tutorial support studio para enable java android java-8 android-gradle
http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip

support - ¿Es posible utilizar Java 8 para el desarrollo de Android?



java 8 tutorial (21)

Sí, Android es compatible con Java 8 ahora (24.1.17)

Ahora es posible

Pero necesitará que su dispositivo se ejecute en java 1.8 y habilite "jackOptions" para ejecutarlo. Jack es el nombre del nuevo compilador de Android que ejecuta Java 8

https://developer.android.com/guide/platform/j8-jack.html

agrega estas lineas a build_gradle

android { ... defaultConfig { ... jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }

Java 8 parece ser el motor java en ejecución de Android studio 2.0, pero aún así no acepta la sintaxis de java 8 después de que lo verifiqué, y ahora no puedes elegir un compilador de Android Studio. Sin embargo, puede usar el complemento de Scala si necesita un mecanismo de programación funcional en su cliente de Android.

Al buscar en la web, no está claro si Java 8 es compatible con el desarrollo de Android o no.

Antes de descargar / configurar Java 8, ¿puede alguien señalarme alguna documentación "oficial" que diga que Java 8 es o no es compatible con el desarrollo de Android?


java 8

Android es compatible con todas las funciones de lenguaje Java 7 y un subconjunto de funciones de lenguaje Java 8 que varían según la versión de la plataforma.

Para comprobar qué funciones de Java 8 son compatibles

Usa las características del lenguaje Java 8.

Decidimos agregar soporte para las características del lenguaje Java 8 directamente en el conjunto actual de herramientas javac y dx, y dejar de usar la cadena de herramientas Jack. Con esta nueva dirección, las herramientas y complementos existentes que dependen del formato de archivo de clase Java deben continuar funcionando. En el futuro, las características del lenguaje Java 8 serán soportadas de forma nativa por el sistema de compilación de Android. Nuestro objetivo es lanzar esto como parte de Android Studio en las próximas semanas, y quisimos compartir esta decisión pronto con usted.

El futuro de Java 8 Language Feature Support en Android

Usuarios de Eclipse:

Para los antiguos desarrolladores que prefieren Eclipse, Google deja de admitir las herramientas Eclipse para desarrolladores de Android

si instaló Java 8 JDK, inténtelo, si aparece algún problema, intente configurar el compilador como 1.6 en Eclipse desde el menú de la ventana → PreferenciasJavaCompilador . Java 7 también funciona:

Se requiere Java 7 o superior si está orientado a Android 5.0 y superior.

Instala múltiples JDK y prueba.


Forma mas facil

Puede habilitar el soporte de Java 1.8 para el proyecto de Android.

  • Abrir la estructura del proyecto

    • O bien presionando Ctrl + Shift + Alt + S

    • O File > Project Structure

  • Actualice la compatibilidad de origen y la compatibilidad de destino a 1.8 en el cuadro de diálogo Estructura del proyecto como se muestra (haga clic en Archivo> Estructura del proyecto).

Nota: la compatibilidad con Java 1.8 se puede habilitar para Android Studio 3.0.0 o superior. Consulte la Documentation para leer más.


Últimas noticias:

Google anuncia que con Android N y Android Studio 2.1+, la plataforma será compatible con Java 8. También se lanzó una versión estable de studio 2.1.

Por fin podemos usar expresiones lambda. No más filtro de lista en para bucle. Horeeey.


Agrega esta configuración build.gradle y sincroniza gradle:

android { ... defaultConfig { ... jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 // or //sourceCompatibility 1.8 //targetCompatibility 1.8 } }


Agregando lo siguiente, solucioné el problema para mí (Android studio 2.3.2):

build.gradle (Proyecto)

buildscript { repositories { ... jcenter() } dependencies { ... classpath ''me.tatarka:gradle-retrolambda:3.4.0'' // DEPENDENCY ... } }

build.gradle (Módulo: aplicación)

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


Android OFICIALMENTE soporta Java 8 a partir de Android N.

android-developers.blogspot.com/2016/03/… , el anuncio en lenguaje Java 8 es:

Compatibilidad mejorada con el lenguaje Java 8 - Estamos muy contentos de traer las características del lenguaje Java 8 a Android. Con el compilador Jack de Android, ahora puede usar muchas características populares del lenguaje Java 8, incluyendo lambdas y más, en versiones de Android tan antiguas como Gingerbread. Las nuevas características ayudan a reducir el código repetitivo. Por ejemplo, las lambdas pueden reemplazar las clases internas anónimas al proporcionar oyentes de eventos. Algunas características del lenguaje Java 8, como métodos predeterminados y estáticos, flujos e interfaces funcionales, ahora también están disponibles en N y versiones superiores. Con Jack, esperamos seguir de cerca el lenguaje Java y mantener la compatibilidad con versiones anteriores.


Android Studio 3.0 comenzó a proporcionar soporte integrado para algunas de las características del lenguaje Java 8, que son:

  • Expresiones lambda
  • Referencias de método
  • Escriba anotaciones (la información está disponible en tiempo de compilación, pero no en tiempo de ejecución)
  • Repitiendo anotaciones
  • Métodos de interfaz predeterminados y estáticos

También a partir del nivel 24 de la API, están disponibles las siguientes API de Java 8:

  • java.util.stream
  • java.util.function
  • java.lang.FunctionalInterface
  • java.lang.annotation.Repeatable
  • java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class)
  • java.lang.reflect.Method.isDefault()

Además de eso, el soporte de try-with-resources se extendió a todos los niveles de la API de Android.

Se prometen más características de Java 8 para agregarse en el futuro.

Para comenzar a utilizar las funciones de lenguaje Java 8 compatibles, actualice el complemento de Android a 3.0.0-alpha1 (o superior) y agregue lo siguiente al archivo build.gradle de su módulo:

android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }

Para más detalles visite:
https://developer.android.com/studio/write/java8-support.html


Android usa un Java que se ramifica de Java 6.

A partir de la versión 19 del SDK de Android, puede usar las características de Java 7 haciendo esto . No hay soporte completo para Java 8 (todavía).


Cuando hice esta pregunta hace casi 2 años, la respuesta realmente fue "oficialmente" no, pero como señala la respuesta de ekcr1, puede usar una de las funciones más esperadas (lambdas) si usa retrolamba. En ese momento aún estaba usando eclipse, ya que Android Studio estaba en modo de "vista previa", por lo que nunca seguí este camino.

Hoy, creo que la respuesta "oficial" sigue siendo no, y aunque retrolamba todavía parece ser una buena forma de proceder, existe otra opción para aquellos que quieran seguir una ruta "no oficial", Kotlin.

Hoy Kotlin llegó a 1.0.0. Para aquellos que no están familiarizados con Kotlin, se puede encontrar más información en su sitio web que se encuentra aquí:

Kotlin

o mira este video de una charla de Jake Wharton

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


De hecho, puede usar la gradle-retrolamba 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 las expresiones lambda para el desarrollo de Android. La fuente original de esta guía se menciona al final.

En esta guía, se mostrará 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 levantamiento de Google, Android Studio. Se basa en la edición comunitaria de la popular IntelliJ Idea IDE de JetBrains y recientemente fue actualizada a su versión "beta" por parte de Google a principios de julio de 2014, poco antes de que se escribiera esta guía. Eclipse seguirá siendo el entorno de desarrollo destacado, al menos por un tiempo, y considerando 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 a ADT parece ser bastante útil para los desarrolladores.

Android Development se basa en una implementación Java personalizada llamada Apache Harmony Project que finalizó en 2011. La sintaxis Java más utilizada en Android Development 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áctica'' que dan a los desarrolladores las deficiencias de cosas como ''clases anónimas'' y pueden traducirse a clases de 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 más bajo. Desafortunadamente, las características de Java 8 distintas de las expresiones lambda no son compatibles con RetroLambda por ahora, pero el concepto de expresiones lambda es el salto más grande en la plataforma Java 8 y 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 que las implementaciones basadas en Gradle se implementen en proyectos de Java o Android. Sin embargo, el desarrollador solo menciona acerca de la integración de este complemento en el entorno de Android Studio. Los detalles se pueden encontrar en su página de GitHub:

gradle-retrolamba

El uso de estas infraestructuras dentro de un entorno de desarrollo basado en Eclipse no se puede abordar directamente, pero es factible y se demostrará en 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 22.6.2 de ADT porque la versión 23.0.2 reciente de ADT parece tener problemas como la creación de una carpeta de diseño. Los detalles sobre este tema se pueden encontrar en el siguiente enlace:

http://code.google.com/p/android/issues/detail?id=72591

Los pasos de esta guía se darán 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, tanto JDK 8 como JDK 7 deben coexistir en la máquina de desarrollo. Se deben seguir los pasos que se indican a continuación para instalarlos:

  • Vaya a la página de vista previa de acceso temprano de JDK 8 http://jdk8.java.net
  • Descarga JDK 8u20 e instálalo. La instalación de JRE 8 no es necesaria y se puede omitir.
  • Vaya a la última versión estable de JDK 7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
  • Descarga JDK 7u65 e instálalo. La instalación de JRE 7 tampoco es necesaria y puede omitirse
  • Agregue la carpeta de inicio JDK 8 y la carpeta bin JDK 8 a su %PATH%
  • Cree una nueva variable de entorno JAVA_HOME con el valor de la ruta de la carpeta de inicio JDK 8
  • Cree de nuevo una nueva variable de entorno JAVA8_HOME con el valor de la ruta de la carpeta de inicio JDK 8
  • Cree una nueva variable de entorno JAVA7_HOME con el valor de la ruta de la carpeta de inicio JDK 7
  • Abra una ventana de terminal y ejecute el comando java -version y verifique que Java 8 esté funcionando.
  • Ejecute javac -version comando javac -version en la misma ventana y verifique que el compilador JDK 8 Java 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 ejemplo, D:/adt
  • Defina una nueva variable de entorno llamada ANDROID_HOME con el valor de la ruta de su carpeta de instalación de ADT, por ejemplo, D:/adt/sdk
  • Agregue sus Andoid SDK Platform Tools y Andoid SDK Tools , por ejemplo, D:/adt/sdk/tools y D:/adt/sdk/platform-tools , a su %PATH%
  • Cree un acceso directo a Eclipse IDE si lo desea. Se encuentra en la carpeta de instalación de ADT, por ejemplo, D:/adt/eclipse
  • Ejecute Eclipse IDE y cree un espacio de trabajo, por ejemplo, D:/adt/workspace
  • Haga clic en el botón Android SDK Manager que se encuentra en la barra de herramientas
  • Seleccione Android SDK Build tools Rev. 19.1 y Android Support Library solamente. Desmarque todo lo demás e instale estos dos paquetes.

Si todo va bien, ADT estará funcionando.

La instalación de las siguientes herramientas también es muy recomendable:

  • Soporte de Eclipse Kepler para Java 8: hace que Eclipse reconozca las nuevas extensiones de sintaxis de Java 8 y lo elimine de los molestos red dots en su editor de código Java. Puede instalarse a través de Help -> Install New Software en Eclipse. Ingrese http://download.eclipse.org/eclipse/updates/4.3-P-builds/ en el campo Work with y continúe con la instalación.

  • Nodeclipse / Enide Gradle: se utiliza principalmente para resaltar las palabras clave del lenguaje Groovy. Groovy se utiliza como DSL para los scripts de compilación de Gradle. Este plugin puede ser instalado 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 herramienta Install New Software en Eclipse. Ingrese http //: download.eclipse.org/mpc/kepler/ en el campo Work with y continúe con la instalación. Después de instalar Eclipse Marketplace Client , puede buscar Nodeclipse/Enide Gradle en Eclipse Marketplace Client e instalarlo.

  • Dispositivo virtual Genymotion: es un gran reemplazo del Android Virtual Device predeterminado que viene junto con ADT. AVD es molesto y engorroso y se bloquea sin ninguna razón. Genymotion te hace preparar VD de Android utilizando imágenes de CyanogenMod que se ejecutan mediante 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,

Puede ser considerado como un dispositivo Android totalmente funcional que se ejecuta en una computadora personal basada en x86 o x64. Para usar los servicios de Google como Google PlayStore en este dispositivo virtual, se debe Google PlayStore en el dispositivo una imagen de gapps para la versión de Android que utiliza. Se puede descargar una imagen de gapps 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 podría realizarse siguiendo estos pasos:

  • Vaya al sitio web de Gradle: http://www.gradle.org/

  • Haga clic en Downloads

  • En Previous Releases elija la versión 1.10 y descargue gradle-1.10-all.zip o gradle-1.10-bin.zip
  • Descomprima su contenido en una carpeta, por ejemplo, D:/adt/gradle
  • Defina una nueva variable de entorno llamada GRADLE_HOME con el valor de la ruta de su carpeta de instalación de Gradle, por ejemplo, D:/adt/gradle
  • Agregue su carpeta de binarios Gradle, por ejemplo, D:/adt/gradle/bin , a su %PATH%
  • Abra una ventana de terminal y ejecute el comando gradle -v y verifique que esté funcionando. Si ha llegado a este punto con éxito, significa que está listo para crear su primera aplicación de Android con las funciones de Java 8.

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 indican a continuación para obtener información sobre el uso de las expresiones lambda en las herramientas de desarrollo de Android:

  • Ejecute Eclipse IDE y cree una nueva aplicación para Android seleccionando File -> New -> Other -> Android -> Android Application Project
  • Rellene el formulario que aparece como se muestra a continuación:
  • Simplemente haga clic en el botón Next en los siguientes formularios y haga clic en el botón Finish en el último. Espera a que ADT termine de cargar el proyecto.
  • Haga clic con el botón derecho en el proyecto y seleccione New -> Folder y New -> Folder nombre de builders
  • Haga clic derecho en la carpeta gen (Generated Java Files) y elimínelo. Gradle generará los mismos archivos para nosotros pronto y los agregaremos a la s build path. The del proyecto s build path. The s build path. The carpeta gen` creada por el constructor de Ant predeterminado ya no es necesaria y los artefactos debajo de esa carpeta serán obsoletos
  • Cree los siguientes archivos por lotes en la carpeta de builders :

    • gradle_build.cmd
    • gradle_post_build.cmd
    • gradle_clean.cmd
  • Rellene estos archivos por lotes de la siguiente manera:

gradle_build.cmd:

gradle_post_build.cmd:

gradle_clean.cmd:

  • Deseleccionar Project -> Build Automatically opción de menú
  • Haga clic derecho en el proyecto y seleccione Properties -> Builders y deseleccione todos los constructores predeterminados proporcionados por ADT
  • Haga clic en el botón New en la misma ventana y seleccione Program y haga OK en OK
  • Aparecerá la nueva ventana de configuración del constructor. Rellene sus pestañas de la siguiente manera:

Pestaña Main de la nueva configuración del constructor

Refresh pestaña de la nueva configuración del generador

Pestaña Environment de la nueva Configuración del Constructor

Ficha de Build Options de la nueva configuración del generador

  • Cree el segundo constructor llamado Gradle_Post_Build que usa gradle_post_build.cmd como su programa. Todas las demás configuraciones de este constructor deben ser exactamente las mismas que las creadas anteriormente. Este constructor será responsable de copiar los artefactos creados por el proceso de construcción en la carpeta bin .
  • Cree el tercer constructor llamado Gradle_Cleaner que usa gradle_clean.cmd como su programa. Solo Run the builder configuración Run the builder en la pestaña final debe establecerse como During a Clean . Todas las demás configuraciones de este constructor deben ser exactamente las mismas que las del primer constructor. Este constructor será responsable de limpiar los artefactos creados por el proceso de construcción como su nombre sugiere.

Nuevos constructores del proyecto HelloLambda

  • Haga clic derecho en el proyecto y seleccione Export
  • Seleccione Android -> Generate Gradle Build Files y haga clic en Next
  • 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 . También eliminar carpeta de gradle
  • Vuelva a Eclipse y seleccione Project -> Clean opción de menú. Rellene el formulario que se muestra a continuación:

Clean Project ventana de Clean Project

  • Haga clic en OK y espere hasta que finalice el proceso de limpieza
  • Agregue el fragmento de código Java que se proporciona a continuación justo después de la llamada a la función setContentView en su clase MainActivity :
  • Cambie el comienzo del archivo build.gradle hasta la sección sourceCompatibility siguiente manera:
  • Haga clic con el botón derecho en el proyecto y seleccione Properties -> Java Compiler y configure todos los niveles de cumplimiento en Java 8. Esto hará que Eclipse reconozca nuevas construcciones de Java 8 como expresiones lambda.
  • Haga clic en 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

  • Haga clic con el botón derecho en el proyecto y vaya a Properties -> Java Build Path . Agregue las siguientes carpetas a la ruta de compilación (también se muestra en la imagen de abajo):

    • build/source/buildConfig/debug
    • build/source/r/debug

Eclipse ahora podrá reconocer los archivos R.java y buildConfig.java y no mostrará ningún punto red dots que denote errores relacionados con los archivos de recursos del proyecto.

  • Cree una nueva Run Configuration para su plataforma de destino de Android haciendo clic derecho en el proyecto y luego seleccionando Run As -> Run Configurations . Por ejemplo, esta aplicación de demostración se ve como se muestra a continuación en el Genymotion VD:

Aplicación HelloLambda

Puede observar en la ventana de LogCat que el fragmento de código con una simple expresión lambda funciona correctamente

Fuente: Uso de Java 8 Lambda Expressions en las herramientas de desarrollo de Android


Escribí una respuesta similar a una pregunta similar en , pero aquí es parte de esa respuesta.

Android Studio 2.1:

La nueva versión de Android Studio (2.1) tiene soporte para las características de Java 8. Aquí hay un extracto del blogspot de Android Developers :

... La versión Android Studio 2.1 incluye soporte para el nuevo Jack y soporte para Java 8 .

...

Para usar las características del lenguaje Java 8 al desarrollar con N Developer Preview, debe usar el compilador Jack. El Asistente para nuevo proyecto [Archivo → Nuevo → Proyecto] genera las configuraciones correctas para los proyectos que apuntan a la N.

Antes de Android Studio 2.1:

Android aún no es compatible con Java 1.8 (solo admite hasta 1.7), por lo que no puede usar funciones de Java 8 como lambdas.

Esta respuesta da más detalles sobre la compatibilidad de Android Studio ; afirma:

Si desea utilizar las lambdas, una de las características principales de Java 8 en Android, puede usar gradle-retrolamba

Si desea saber más sobre el uso de gradle-retrolambda , esta respuesta proporciona muchos detalles para hacerlo .


Google acaba de anunciar que Java 8 será compatible de forma nativa con Android y que la cadena de herramientas Jack quedará obsoleta:

Decidimos agregar soporte para las características del lenguaje Java 8 directamente en el conjunto actual de herramientas javac y dx, y dejar de usar la cadena de herramientas Jack. Con esta nueva dirección, las herramientas y complementos existentes que dependen del formato de archivo de clase Java deben continuar funcionando. En el futuro, las características del lenguaje Java 8 serán soportadas de forma nativa por el sistema de compilación de Android. Nuestro objetivo es lanzar esto como parte de Android Studio en las próximas semanas, y quisimos compartir esta decisión pronto con usted.

Más información aquí: https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html


Hice esta pregunta hace más de 3 años y obviamente las respuestas han cambiado con los años. Como muchos de los anteriores ya han respondido, desde hace algún tiempo, la respuesta se convirtió en . Nunca actualicé la respuesta aceptada porque era la respuesta correcta en ese momento. (No estoy seguro de cuál es la política de desbordamiento de pila en eso)

Solo quería agregar otra respuesta para aquellos que aún buscan este tema. A partir del 5/17/2017, Google también anunció que Kotlin también es un idioma oficial para el desarrollo de Android.

No he encontrado un comunicado de prensa oficial, pero sí vi algunos de los videos Google I / O donde se anunció. Aquí hay un enlace a una publicación del blog del equipo de Kotlin sobre el anuncio.


Native Java 8 llega a Android! ¡Finalmente!

elimine el complemento Retrolambda y el bloque retrolambda del archivo build.gradle de cada módulo:

Para deshabilitar a Jack y cambiar a la cadena de herramientas predeterminada, simplemente elimine el bloque jackOptions del archivo build.gradle de su módulo

Para comenzar a utilizar las funciones de lenguaje Java 8 compatibles, actualice el complemento de Android a 3.0.0 (o superior)

A partir de Android Studio 3.0, las características del lenguaje Java 8 ahora son compatibles de forma nativa con Android:

  • Expresiones lambda
  • Referencias de método
  • Anotaciones de tipo (la información de anotación de tipo actual no está disponible en tiempo de ejecución, pero solo en tiempo de compilación);
  • Repitiendo anotaciones
  • Métodos de interfaz predeterminados y estáticos (en el nivel de API 24 o superior, sin soporte de ejecución instantánea aunque);

También desde la API mínima nivel 24 están disponibles las siguientes API de Java 8:

  • java.util.stream
  • java.util.function
  • java.lang.FunctionalInterface
  • java.lang.annotation.Repeatable
  • java.lang.reflect.AnnotatedElement.getAnnotationsByType (Clase)
  • java.lang.reflect.Method.isDefault ()

Agregue estas líneas al build.gradle de su módulo de aplicación para informar al proyecto del nivel de idioma:

android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }

Desactive la compatibilidad con las características del lenguaje Java 8 agregando lo siguiente a su archivo gradle.properties :

android.enableDesugar=false

Has terminado Ahora puedes usar java8 nativo!


Pensé que publicaría una respuesta actualizada para aquellos que buscan algo un poco más actual.

Actualmente, Android y Android Studio admiten un subconjunto de funciones de Java 8. De acuerdo con la documentación de Android ubicada en su sitio web , Google dice:

El soporte para las características del lenguaje Java 8 requiere un nuevo compilador llamado Jack. Jack solo es compatible con Android Studio 2.1 y superior. Por lo tanto, si desea usar las funciones de lenguaje Java 8, necesita usar Android Studio 2.1 para construir su aplicación.

Si ya tiene instalado Android Studio, asegúrese de actualizar a la última versión haciendo clic en Ayuda> Buscar actualizaciones (en Mac, Android Studio> Buscar actualizaciones). Si aún no tiene el IDE instalado en su estación de trabajo, descargue Android Studio aquí.

API y características de lenguaje Java 8 soportadas

Android no es compatible con todas las funciones de lenguaje Java 8. Sin embargo, las siguientes funciones están disponibles cuando se desarrollan aplicaciones dirigidas a Android 7.0 (nivel de API 24):

  • Métodos de interfaz predeterminados y estáticos. Expresiones Lambda (también disponibles en el nivel de API 23 e inferior)
  • Anotaciones repetibles
  • Referencias de métodos (también disponibles en el nivel de API 23 e inferior)
  • Escriba anotaciones (también disponibles en el nivel de API 23 e inferior)

Además, las siguientes API de lenguaje Java 8 también están disponibles:

Reflexión y APIs relacionadas con el lenguaje:

  • java.lang.FunctionalInterface
  • java.lang.annotation.Repeatable
  • java.lang.reflect.Method.isDefault () y las API de Reflection asociadas con anotaciones repetibles, como AnnotatedElement.getAnnotationsByType (Clase)

API de utilidad:

  • java.util.function
  • java.util.stream

Para poder utilizar las nuevas funciones de lenguaje Java 8, también debe usar la Jack . Esta nueva cadena de herramientas de Android compila fuentes de lenguaje Java en el código de bytes DEX legible para Android, tiene su propio formato de biblioteca .jack y proporciona la mayoría de las funciones de la cadena de herramientas como parte de una sola herramienta: reempaquetado, encogimiento, ofuscación y multidex.

Aquí hay una comparación de las dos cadenas de herramientas utilizadas para crear archivos DEX de Android:

Legacy javac toolchain: javac (.java → .class) → dx (.class → .dex) New Jack toolchain: Jack (.java → .jack → .dex)


Podemos usar Java 8 usando:

  1. En build.gradle (Proyecto: myProject) agregue lo siguiente

    classpath ''me.tatarka:gradle-retrolambda:x.x.x'' //x.x.x is recent version

  2. En build.gradle (Módulo: myModule) agregue lo siguiente

    apply plugin: ''me.tatarka.retrolambda'' compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }


Sí. ¡Usaremos Java 8 pronto!

Decidimos agregar soporte para las características del lenguaje Java 8 directamente en el conjunto actual de herramientas javac y dx, y dejar de usar la cadena de herramientas Jack. Con esta nueva dirección, las herramientas y complementos existentes que dependen del formato de archivo de clase Java deben continuar funcionando. En el futuro, las características del lenguaje Java 8 serán soportadas de forma nativa por el sistema de compilación de Android. Nuestro objetivo es lanzar esto como parte de Android Studio en las próximas semanas, y quisimos compartir esta decisión pronto con usted.

https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html


Siga este enlace para nuevas actualizaciones. Usa las características del lenguaje Java 8.

Respuesta antigua

A partir del lanzamiento de la versión android-developers.blogspot.com/2016/03/… de android-developers.blogspot.com/2016/03/… las funciones limitadas de Java 8 para Java ver características de lenguaje de Java 8

Para comenzar a utilizar estas funciones, debe descargar y configurar Android Studio 2.1 y el SDK de previsualización de Android N, que incluye la cadena de herramientas Jack necesaria y el complemento de Android actualizado para Gradle. Si aún no ha instalado el SDK de previsualización de Android N, consulte Configurar para desarrollar para Android N.

API y características de lenguaje Java 8 soportadas

Android no admite actualmente todas las funciones de lenguaje de Java 8. Sin embargo, las siguientes funciones ahora están disponibles cuando se desarrollan aplicaciones dirigidas a la Vista previa de Android N:

Métodos de interfaz predeterminados y estáticos

Expresiones Lambda (también disponibles en el nivel de API 23 e inferior)

Anotaciones repetibles

Referencias de métodos (también disponibles en el nivel de API 23 e inferior)

Hay algunas características adicionales de Java 8 que son compatibles con Android, puede ver los detalles completos de las características del lenguaje Java 8

Actualizar

Nota: Android N basa su implementación de expresiones lambda en clases anónimas. Este enfoque les permite ser compatibles con versiones anteriores y ejecutables en versiones anteriores de Android. Para probar expresiones lambda en versiones anteriores, recuerde ir a su archivo build.gradle y establezca compileSdkVersion y targetSdkVersion en 23 o menos.

Actualización 2

Ahora, la versión estable de Android studio 3.0 es compatible con las bibliotecas de Java 8 y las características del lenguaje Java 8 (sin el compilador Jack).



ACTUALIZACIÓN 2017/11/04: Android Studio 3.0 ahora tiene soporte nativo para Java 8. gradle-retrolambda ya no es necesario. Consulte https://developer.android.com/studio/write/java8-support.html

El enlace anterior también incluye instrucciones de migración si está usando gradle-retrolambda . Respuesta original a continuación:

Android no es compatible con Java 8. Solo es compatible con Java 7 (si tiene kitkat) y aún así no tiene invokedynamic, solo la nueva sintaxis de azúcar.

Si desea utilizar las lambdas, una de las características principales de Java 8 en Android, puede usar gradle-retrolamba . Es una dependencia de compilación de Gradle que integra retrolambda, una herramienta que convierte el código de bytes de Java 8 de nuevo a Java 6/7. Básicamente, si configura el compilador en Android Studio para compilar el código de bytes de Java 8, permitiendo así lambdas, lo convertirá de nuevo a código de bytes de Java 6/7, que a su vez se convertirá a código de bytes dalvik. Es un truco si quieres probar algunas características de JDK 8 en Android en lugar del soporte oficial.