¿Es posible utilizar Java 8 para el desarrollo 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 cualquier documentación "oficial" que diga que Java 8 es o no es compatible con el desarrollo de Android.

Author: Enzokie, 2014-04-27

21 answers

Java 8

Android admite todas las características del lenguaje Java 7 y un subconjunto de características del lenguaje Java 8 que varían según la versión de la plataforma.

Para comprobar qué características de java 8 son compatibles

Utilice las características del lenguaje Java 8

Hemos decidido agregar soporte para las características del lenguaje Java 8 directamente en el conjunto actual de herramientas javac y dx, y desaprovechar la cadena de herramientas Jack. Con esta nueva dirección, las herramientas y plugins existentes dependen de la clase Java el formato de archivo debe seguir funcionando. En el futuro, las características del lenguaje Java 8 serán compatibles de forma nativa con el sistema de compilación Android. Nuestro objetivo es lanzar esto como parte de Android Studio en las próximas semanas, y queríamos compartir esta decisión temprano con ustedes.

El futuro del lenguaje Java 8 Es compatible con Android

Usuarios de Eclipse:

Para los desarrolladores antiguos que prefieren Eclipse, google deja de apoyar Eclipse Android Developer tools

Si ha instalado Java 8 JDK, a continuación, darle una oportunidad, si aparece algún problema intente establecer el compilador como 1.6 en Eclipse desde el menú de la ventana → PreferenciasJavaCompiler . Java 7 también funciona:

Preferencias de Eclipse - > Java - > Compilador

Se requiere Java 7 o superior si se dirige a Android 5.0 y más alto.

Instale múltiples JDK e inténtelo.

 164
Author: Eng. Samer T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-21 22:22:01

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

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


Android no soporta Java 8. Solo soporta hasta Java 7 (si tienes kitkat) y todavía no tiene invokedynamic, solo la nueva sintaxis sugar.

Si si quieres usar lambdas, una de las principales características de Java 8 en Android, puedes usar gradle-retrolamba. Es una dependencia de gradle build que integra retrolambda, una herramienta que convierte Java 8 bytecode de nuevo a Java 6/7. Básicamente, si configura el compilador en Android Studio para compilar Java 8 bytecode, permitiendo así lambdas, lo convertirá de nuevo a Java 6/7 bytecode que luego a su vez se convierte en dalvik bytecode. Es un truco para si quieres probar algunas características de JDK 8 en Android en lugar de apoyo oficial.

 334
Author: ekcr1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-03 22:30:29

De hecho, puedes usar gradle-retrolamba la dependencia de gradle build 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, un método para traer algunas características Java 8 en Se demostrarán las herramientas de desarrollo de Android, con el objetivo específico de Eclipse IDE . Sin embargo, los pasos que se describirá a lo largo de esta guía también podría adaptarse al nuevo desarrollo de levantamiento de Google entorno, Android Studio. Se basa en la edición comunitaria de popular IntelliJ Idea IDE por JetBrains y ha sido recientemente actualizado a su versión' beta ' por Google a principios de julio de 2014, ligeramente antes de que esta guía fuera escrita. Eclipse permanecerá como el prominente ambiente de desarrollo, al menos por un tiempo, y teniendo en cuenta la hecho de que la mayoría de los proyectos de Android han sido desarrollado usando Eclipse, un método para traer nuevas características de Java 8 como expresiones lambda en ADT parece ser muy útil para los desarrolladores.

El desarrollo de Android se basa en una implementación personalizada de Java llamada Proyecto Apache Harmony que fue terminado en 2011. La mayoría la sintaxis de Java comúnmente utilizada en el desarrollo de Android es Java 6 (v1.6) y Java 7 (v1.7) también está parcialmente soportado en la edición KitKat (Android 4.4.+). Por lo tanto, Java 8 características como lambda expresiones no se puede usar directamente en el Desarrollo de aplicaciones Android sin aplicando algunos ajustes en las herramientas de desarrollo. Por suerte, estos construcciones son básicamente algunas mejoras de 'azúcar sintáctico' que dar a los desarrolladores las deficiencias de cosas como 'clases anónimas' y se pueden traducir a clases Java 6 o Java 7.

Un enfoque reciente para traducir un código fuente Java 8 a Java inferior las versiones se llaman RetroLambda . Esta biblioteca hace ejecución de desarrolladores Código Java 8 con expresiones lambda en Java 7 o incluso inferior. Desafortunadamente, las características de Java 8 que no sean expresiones lambda no son apoyado por 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 Desarrolladores de Android de todos modos.

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 compilaciones basadas en Gradle se implementen en Java o Android Proyecto. Sin embargo, el desarrollador solo menciona la integración de este plugin en el entorno de Android Studio. Los detalles se pueden encontrar en su Página de GitHub:

Https://github.com/evant/gradle-retrolambda

Usando estas infraestructuras dentro de un desarrollo basado en Eclipse el medio ambiente no puede ser abordado directamente pero es factible y lo será demostrado 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 22.6.2 de ADT porque la versión 23.0.2 de ADT reciente parece tener problemas como la creación de carpetas de diseño. Los detalles sobre este problema se pueden encontrar en la 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 Windows 8.1, 64-bit pero se pueden adaptar fácilmente a otras plataformas. El nuevo sistema de construcción Gradle se utilizará para los procesos de construcció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 instalar

  • Vaya a la página de vista previa de acceso anticipado 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
  • Ir a la página de la última versión 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 tampoco es necesaria y se puede omitir
  • Añadir JDK 8 carpeta de inicio y carpeta JDK 8 bin a su variable %PATH%
  • Crear una nueva variable de entorno JAVA_HOME con el valor de la ruta de acceso de la carpeta de inicio JDK 8
  • Crear una nueva variable de entorno JAVA8_HOME de nuevo con el valor de la ruta de acceso de la carpeta de inicio JDK 8
  • Crear una nueva variable de entorno JAVA7_HOME con el valor de la ruta de acceso 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
  • Corre javac -version comando en la misma ventana y verificar que el compilador Java JDK 8 también está en funcionamiento

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 acceso de su 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 variable %PATH%
  • Cree un acceso directo al IDE de Eclipse si lo desea. Se encuentra debajo de 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á listo y funcionando.

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

  • Eclipse Kepler Java 8 Support: Hace que Eclipse reconozca las nuevas extensiones de sintaxis de Java 8 y te hace deshacerte de los molestos red dots en tu editor de código Java. Puede ser instalado a través de Help -> Install New Software en Eclipse. Introduzca http://download.eclipse.org/eclipse/updates/4.3-P-builds / en el campo Work with y continuar instálalo.

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

  • Genymotion Virtual Device: Es un gran reemplazo del predeterminado Android Virtual Device que viene junto con ADT. AVD es molesto y engorroso y sigue estrellándose sin razón. Genymotion te hace preparar VD de Android usando CyanogenModimágenes que son ejecutadas por Oracle VirtualBox. Su licencia de usuario único es gratuita y se puede descargar desde http://www.genymotion.com . Solo un login es requerido 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,

introduzca la descripción de la imagen aquí

Podría considerarse como un dispositivo Android completamente desarrollado que se ejecuta en un ordenador personal basado en x86 o x64. Con el fin de utilizar servicios de Google como Google PlayStore en este dispositivo virtual, una imagen gapps para el La versión de Android que utiliza debe ser flasheada en el dispositivo. Una imagen adecuada gapps para el dispositivo puede descargarse 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 propio SDK de Android, pero se recomienda encarecidamente su instalación por separado. La instalación de la misma podría llevarse a cabo siguiendo estos pasos:

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

  • Haga clic Downloads

  • En Previous Releases elija la versión 1.10 y descargue gradle-1.10-all.zip o gradle-1.10-bin.zip
  • Descomprimir su contenido en una carpeta, por ejemplo, D:\adt\gradle
  • Define una nueva variable de entorno llamada GRADLE_HOME con el valor de la ruta de acceso de tu carpeta de instalación de Gradle, por ejemplo, D:\adt\gradle
  • Agrega tu carpeta de binarios de Gradle, por ejemplo, D:\adt\gradle\bin, a tu variable %PATH%
  • Abrir a 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 para Android utilizando las características 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 una idea sobre el uso de expresiones lambda en Android Developer Herramientas:

  • 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:

introduzca la descripción de la imagen aquí

  • Simplemente haga clic en el botón Next en los siguientes formularios y haga clic en el botón Finish en el último. Espere hasta que ADT termine de cargar el proyecto
  • Haga clic con el botón derecho en el proyecto y seleccione New -> Folder y nómbrelo builders
  • Haga clic con el botón derecho en la carpeta gen (Generated Java Files) y elimínela. Gradle generará los mismos archivos para nosotros pronto y los agregaremos a la carpeta projects build path. Thegen ' creada por el constructor Ant predeterminado ya no es necesario y los artefactos bajo esa carpeta serán obsoletos
  • Cree los siguientes archivos por lotes en la carpeta builders:

    • gradle_build.cmd
    • gradle_post_build.cmd
    • gradle_clean.cmd
  • Rellene estos archivos por lotes, como sigue:

Gradle_build.cmd:

introduzca la descripción de la imagen aquí

Gradle_post_build.cmd:

introduzca la descripción de la imagen aquí

Gradle_clean.cmd:

introduzca la descripción de la imagen aquí

  • Deseleccionar 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 botón New en la misma ventana y seleccione Program y haga clic OK
  • Aparecerá una nueva ventana de configuración del constructor. Rellene sus pestañas de la siguiente manera:

Main Pestaña de la configuración del nuevo Constructor

introduzca la descripción de la imagen aquí

Refresh Pestaña de la configuración del nuevo Constructor

introduzca la descripción de la imagen aquí

Environment Pestaña de la configuración del nuevo Constructor

introduzca la descripción de la imagen aquí

Build Options Pestaña del nuevo Constructor Configuración

introduzca la descripción de la imagen aquí

  • Crea 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 del constructor creado anteriormente. Este constructor será responsable de copiar los artefactos creados por el proceso de compilación en la carpeta bin.
  • Crea el tercer constructor llamado Gradle_Cleaner que usa gradle_clean.cmd como su programa. Solo Run the builder en la pestaña final se debe establecer como During a Clean. Todo otras configuraciones de este constructor deben ser exactamente las mismas con el primer constructor. Este constructor será responsable de limpiar los artefactos creados por el proceso de construcción como su nombre indica.

Nuevos constructores del Proyecto HelloLambda

introduzca la descripción de la imagen aquí

  • 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 su carpeta raíz del proyecto y eliminar los archivos gradlew y gradlew.bat. También eliminar gradle carpeta
  • Vuelva a Eclipse y seleccione la opción de menú Project -> Clean. Rellene el formulario que aparece de la siguiente manera:

Clean Project Ventana

introduzca la descripción de la imagen aquí

  • Haga clic en OK y espere hasta que se complete el proceso de limpieza
  • Agregue el fragmento de código Java que se muestra a continuación justo después de la llamada a la función setContentView en su MainActivity clase:

introduzca la descripción de la imagen aquí

  • Cambie el comienzo del archivo build.gradle hasta la sección sourceCompatibility de la siguiente manera:

introduzca la descripción de la imagen aquí

  • Haga clic con el botón derecho en el proyecto y seleccione la opción Properties -> Java Compiler y establezca 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á construyendo el proyecto.

Proceso de construcción introduzca la descripción de la imagen aquí

  • Haga clic 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

introduzca la descripción de la imagen aquí

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

  • Cree un nuevo Run Configuration para su plataforma de destino 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

introduzca la descripción de la imagen aquí

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

introduzca la descripción de la imagen aquí

Fuente: Usando Java 8 Lambda Expresiones en Android Developer Tools

 97
Author: Sufiyan Ghori,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-08 12:45:57

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

Antigua respuesta

A partir de Vista previa de Android N lanzamiento soporte Android limitado características de Java 8 ver Características del lenguaje Java 8

Para comenzar a usar estas funciones, debe descargar y configurar Android Studio 2.1 y Android N Preview SDK, que incluye el requerido Jack cadena de herramientas y actualizado Complemento de Android para Gradle. Si aún no ha instalado Android N Preview SDK, consulte Configurar para desarrollar para Android N.

Características y API compatibles del lenguaje Java 8

Actualmente, Android no admite todas las funciones del lenguaje Java 8. Sin embargo, las siguientes funciones ahora están disponibles al desarrollar aplicaciones objetivo de la vista previa de Android N:

Métodos de interfaz por defecto y estáticos

Lambda expresiones (también disponibles en el nivel de API 23 y versiones anteriores)

Anotaciones repetibles

Referencias de métodos (también disponible en API nivel 23 y versiones anteriores)

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

Actualización

Nota: Android N basa su implementación de expresiones lambda en clases anónimas. Este enfoque les permite estar al revés compatible y ejecutable en versiones anteriores de Android. Probar expresiones lambda en versiones anteriores, recuerde ir a su construir.gradle, y establece compileSdkVersion y targetSdkVersion a 23 o menos.

Actualización 2

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

 42
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-26 07:17:29

Android utiliza un Java que se ramifica fuera de Java 6.

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

 19
Author: chaqke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-21 23:40:56

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

Ahora es posible

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

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

Añade estas líneas 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 todavía no acepta la sintaxis de java 8 después de comprobar, y no se puede elegir un compilador de Android Studio ahora. Sin embargo, puede usar el plugin scala si necesita un mecanismo de programación funcional en su cliente Android.

introduzca la descripción de la imagen aquí

 18
Author: sivi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-24 18:37:10

Android es compatible oficialmente con Java 8 a partir de Android N.

Los anuncios de características están aquí , el anuncio del 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, puedes ahora utilice muchas características populares del lenguaje Java 8, incluyendo lambdas y más, en las versiones de Android tan atrás como Gingerbread. Novedad ayuda a reducir el código repetitivo. Para ejemplo, lambdas puede reemplazar clases internas anónimas al proporcionar oyentes de eventos. Algunos Java 8 características del idioma like como métodos predeterminados y estáticos, flujos y interfaces funcionales are también están disponibles en N y superiores. Con Jack, estamos deseando seguir el lenguaje Java más de cerca manteniendo la compatibilidad con versiones anteriores.

 14
Author: Jay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-10 05:09:54

Native Java 8 llega a Android! ¡Por fin!

Elimine el plugin Retrolambda y el bloque retrolambda de cada módulo construir.archivo gradle:

Para deshabilitar Jack y cambiar a la cadena de herramientas predeterminada, simplemente elimine jackOptions bloquea desde la compilación de tu módulo.gradle file

Para comenzar a usar las funciones compatibles del lenguaje Java 8, 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 compatible de forma nativa con Android:

  • Expresiones Lambda
  • Referencias del método
  • Escriba anotaciones (actualmente la información de anotaciones de tipo no está disponible en tiempo de ejecución, sino solo en tiempo de compilación);
  • Repitiendo anotaciones
  • Métodos de interfaz predeterminados y estáticos (en el nivel de API 24 o superior, no admite ejecución instantánea tho);

También desde el nivel de API min 24, las siguientes API de Java 8 son disponible:

  • java.útil.stream
  • java.útil.función
  • java.lang.Interfaz funcional
  • java.lang.anotación.Repetible
  • java.lang.reflejar.Elemento anotado.getAnnotationsByType (Class)
  • java.lang.reflejar.Método.IsDefault ()

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

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

Deshabilite el soporte para las características del lenguaje Java 8 agregando lo siguiente a tu gradle.propiedades archivo:

android.enableDesugar=false

¡Has terminado! ¡Ahora puedes usar java8 nativo!

 12
Author: Dhaval Jivani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-27 04:03:16

Podemos Usar Java 8 usando:

  1. En construcción.gradle (Project: myProject) añadir lo siguiente

    classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
    
  2. En construcción.gradle (Module: MyModule) añadir lo siguiente

    apply plugin: 'me.tatarka.retrolambda'
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    
 11
Author: Vishal Raj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-03 12:31:21

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

  • Expresiones Lambda
  • Referencias del 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 por defecto y estáticos

También a partir del nivel de API 24, las siguientes API de Java 8 son disponible:

  • 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, el soporte de try-with-resources se extendió a todos los niveles de API de Android.

Se promete agregar más características de Java 8 en el futuro.

Para comenzar a usar las características del lenguaje Java 8 compatibles, actualice el plugin a 3.0.0-alpha1 (o superior) y añadir lo siguiente a su construcción del módulo.gradle archivo:

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

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

 7
Author: Idolon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-05 10:52:10

Cuando hice esta pregunta hace casi 2 años la respuesta realmente era "oficialmente" no, pero como señaló la respuesta de ekcr1, puede obtener una de las características más esperadas (lambdas) para funcionar si usa retrolamba. En ese momento todavía estaba usando Eclipse, ya que Android Studio estaba en modo "preview", así que nunca seguí este camino.

Hoy, creo que la respuesta "oficial" sigue siendo no, y aunque retrolamba todavía parece un buen camino a seguir, hay otra opción para aquellos dispuesto a ir por una ruta algo "no oficial" puede tomar, a saber, Kotlin.

Hoy Kotlin alcanzó la 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í:

Https://kotlinlang.org

O mira este video de utube de una charla dada por Jake Wharton

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

 5
Author: nPn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-16 00:47:23

Últimas noticias:

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

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

 4
Author: asozcan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-27 07:56:38

Agregue esta compilación de configuración.gradle y sincronización 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
Author: Ahmad Aghazadeh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-15 09:59:36

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

Hemos decidido agregar soporte para las características del lenguaje Java 8 directamente en el conjunto actual de herramientas javac y dx, y desaprovechar la cadena de herramientas Jack. Con esta nueva dirección, las herramientas y complementos existentes que dependen del formato de archivo de clase Java deberían continuar funcionando. En el futuro, las características del lenguaje Java 8 serán compatibles de forma nativa con el sistema de compilación Android. Nuestro objetivo es lanzar esto como parte de Android Studio en las próximas semanas, y queríamos compartir esta decisión temprano con ustedes.

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

 2
Author: stamanuel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-15 07:38:24

Sí. Vamos a utilizar Java 8 pronto!

Hemos decidido agregar soporte para las características del lenguaje Java 8 directamente en el conjunto actual de herramientas javac y dx, y desaprovechar la cadena de herramientas Jack. Con esta nueva dirección, las herramientas y complementos existentes que dependen del formato de archivo de clase Java deberían continuar funcionando. En el futuro, las características del lenguaje Java 8 serán compatibles de forma nativa con el sistema de compilación Android. Nuestro objetivo es lanzar esto como parte de Android Studio en las próximas semanas, y quería compartir esta decisión temprano con usted.

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

 2
Author: Ajay S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-16 06:18:33

Escribí una respuesta similara una pregunta similar en Stack Overflow, pero aquí hay parte de esa respuesta.

Android Studio 2.1:

La nueva versión de Android Studio (2.1) es compatible con las funciones de Java 8. Aquí hay un extracto de la Android Developers blogspot post :

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

...

Utilizar Características del lenguaje Java 8 al desarrollar con la vista previa del desarrollador N, debe usar el compilador Jack. El Asistente para Nuevo Proyecto [Archivo→ Nuevo→ Proyecto] genera las configuraciones correctas para los proyectos dirigidos a 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 ; es estados:

Si quieres usar lambdas, una de las principales características de Java 8 en Android, puedes usar gradle-retrolamba

Si desea saber más sobre el uso gradle-retrolambda, esta respuesta da muchos detalles sobre cómo hacerlo.

 1
Author: Farbod Salamat-Zadeh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:55:10

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

Actualmente Android y Android Studio son compatibles con un subconjunto de características 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 versiones posteriores. Entonces, si desea usar las características del lenguaje Java 8, debe usa Android Studio 2.1 para crear tu aplicación.

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

Características y API compatibles del lenguaje Java 8

Android no admite todas las características del lenguaje Java 8. Sin embargo, las siguientes características están disponibles al desarrollar 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 y versiones anteriores)
  • Anotaciones repetibles
  • Referencias de métodos (también disponibles en el nivel de API 23 y versiones anteriores)
  • Escriba anotaciones (también disponible en el nivel de API 23 y versiones anteriores)

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

API relacionadas con la reflexión y el lenguaje:

  • java.lang.Interfaz funcional
  • java.lang.anotación.Repetible
  • java.lang.reflejar.Método.IsDefault () y API de reflexión asociadas con anotaciones repetibles, como Elemento anotado.getAnnotationsByType (Class)

Api de utilidad:

  • java.útil.función
  • java.útil.corriente

Para usar las nuevas características del lenguaje Java 8, debe también use la cadena de herramientas Jack . Esta nueva cadena de herramientas de Android compila las fuentes del lenguaje Java en el código DEX legible para Android, tiene su propio.jack library, y proporciona la mayoría de las características de la cadena de herramientas como parte de una sola herramienta: reempaquetado, reducción, ofuscación y multidex.

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

Legacy javac toolchain:
    javac (.java → .class) → dx (.class → .dex)
    New Jack toolchain:
    Jack (.java → .jack → .dex)
 1
Author: BlackHatSamurai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-13 22:12:14

Hice esta pregunta hace más de 3 años y obviamente las respuestas han cambiado a lo largo de los años. Como muchos de arriba ya han respondido, desde hace algún tiempo, la respuesta se convirtió en . Nunca he actualizado 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 todavía buscan este tema. A partir del 17/5/2017 Google también anunció que Kotlin es también es un lenguaje oficial para el desarrollo de Android.

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

 1
Author: nPn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-18 11:13:26

Agregar lo siguiente solucionó el problema para mí (Android studio 2.3.2):

Construir.gradle (Proyecto)

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

Construir.gradle (Módulo: 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
Author: Richard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-02 17:18:35

Ahora se admite un subconjunto de Java 8 en Android Studio. Simplemente haga los ajustes de compatibilidad de Origen y Destino desde la ventana de abajo:

Archivo Structure > Estructura del proyecto

Ventana de Ajuste

Más información en el siguiente enlace.

Https://developer.android.com/studio/write/java8-support.html

 1
Author: Fio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-03 21:47:44

La forma más fácil

Puede habilitar el soporte de Java 1.8 para Android Project.

  • Estructura abierta del Proyecto

    • Ya sea presionando Ctrl + Shift + Alt + S

    • O File > Project Structure

  • Actualizar 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 > Proyecto Estructura).

imagen

Nota: La compatibilidad con Java 1.8 se puede habilitar para Android Studio 3.0.0 o superior. Véase Documentación para más información.

 0
Author: Khemraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-12 07:59:12