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, alguien puede señalarme cualquier documentación "oficial" que diga que Java 8 es o no compatible con el desarrollo de Android.
Respuestas:
java 8
Android admite todas las características de lenguaje Java 7 y un subconjunto de características de 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 funciones del lenguaje Java 8
Future of Java 8 Language Feature Support en Android
Usuarios de Eclipse:
Para los desarrolladores antiguos que prefieren Eclipse, Google deja de admitir las herramientas para desarrolladores de Android Eclipse
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 → Preferencias → Java → Compilador . Java 7 también funcionará:
instala múltiples JDK y prueba.
fuente
ACTUALIZACIÓN 2017/11/04: Android Studio 3.0 ahora tiene soporte nativo para Java 8.
gradle-retrolambda
ya no es necesario. Ver https://developer.android.com/studio/write/java8-support.htmlEl enlace anterior también incluye instrucciones de migración si está utilizando
gradle-retrolambda
. Respuesta original a continuación:Android no es compatible con Java 8. Solo es compatible con hasta Java 7 (si tiene kitkat) y aún no tiene invoke Dynamic, solo la nueva sintaxis Sugar.
Si desea usar lambdas, una de las principales características de Java 8 en Android, puede usar gradle-retrolamba . Es una dependencia de construcción 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, lo que permite lambdas, lo convertirá de nuevo en código de bytes de Java 6/7, que a su vez se convertirá en código de bytes dalvik. Es un truco para si quieres probar algunas características de JDK 8 en Android en lugar de soporte oficial.
fuente
try-with-resources
funciona solo desde Kitkat.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.
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, ambosJDK 8
yJDK 7
deben coexistir en la máquina de desarrollo. Los pasos dados a continuación deben seguirse para instalarlos:bin
a su%PATH%
variableJAVA_HOME
con el valor de la ruta de la carpeta de inicio de JDK 8JAVA8_HOME
nuevamente con el valor de la ruta de la carpeta de inicio de JDK 8JAVA7_HOME
con el valor de la ruta de la carpeta de inicio de JDK 7java -version
comando y verifique que Java 8 esté funcionandojavac -version
comando en la misma ventana y verifique que el compilador Java JDK 8 también esté funcionandoAhora, 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
D:\adt
ANDROID_HOME
con el valor de la ruta de la carpeta de instalación de ADT, p. Ej.D:\adt\sdk
Andoid SDK Platform Tools
yAndoid SDK Tools
, por ejemplo ,D:\adt\sdk\tools
yD:\adt\sdk\platform-tools
, a su%PATH%
variableD:\adt\eclipse
D:\adt\workspace
Android SDK Manager
botón que se encuentra en la barra de herramientas.Android SDK Build tools Rev. 19.1
yAndroid 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ésHelp -> Install New Software
de Eclipse. Ingrese http://download.eclipse.org/eclipse/updates/4.3-P-builds/ en elWork 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 conEclipse Marketplace Client
. Por lo tanto, primero deberá instalarEclipse Marketplace Client
mediante laInstall New Software
herramienta en Eclipse. Ingrese http //: download.eclipse.org/mpc/kepler/ en elWork with
campo y continúe instalándolo. Después de la instalaciónEclipse Marketplace Client
, es posible buscarNodeclipse/Enide Gradle
en elEclipse 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 usandoCyanogenMod
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, unagapps
imagen para la versión de Android que utiliza debe mostrarse en el dispositivo. Segapps
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:
Vaya al sitio web de Gradle: http://www.gradle.org/
Hacer clic
Downloads
Previous Releases
elija la versión 1.10 y descargue gradle-1.10-all.zip o gradle-1.10-bin.zipD:\adt\gradle
GRADLE_HOME
con el valor de la ruta de su carpeta de instalación de Gradle, p. Ej.D:\adt\gradle
D:\adt\gradle\bin
, a su%PATH%
variablegradle -v
comando y verifique que esté funcionando correctamente. 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 detallan a continuación para obtener información sobre el uso de expresiones lambda en las Herramientas para desarrolladores de Android:
File -> New -> Other -> Android -> Android Application Project
Next
botón en los siguientes formularios y haga clic en elFinish
botón en el último. Espere hasta que ADT termine de cargar el proyectoNew -> Folder
y nombrebuilders
gen (Generated Java Files)
carpeta y elimínela. Gradle generará los mismos archivos para nosotros pronto y los agregaremos a las build path. The
carpeta del proyecto gen` creada por el constructor Ant predeterminado ya no es necesaria y los artefactos de esa carpeta quedarán obsoletosCree los siguientes archivos por lotes en el
builders
carpeta:Complete estos archivos por lotes de la siguiente manera:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
Project -> Build Automatically
opción de menúProperties -> Builders
y anule la selección de todos los constructores predeterminados proporcionados por ADTNew
botón en la misma ventana y seleccioneProgram
y haga clicOK
Main
Pestaña de la nueva configuración del generadorRefresh
Pestaña de la nueva configuración del generadorEnvironment
Pestaña de la nueva configuración del generadorBuild Options
Pestaña de la nueva configuración del generadorGradle_Post_Build
que utilizagradle_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 labin
carpeta.Gradle_Cleaner
que utilizagradle_clean.cmd
como su programa. Solo laRun the builder
configuración en la pestaña final debe establecerse comoDuring 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
proyectoExport
Android -> Generate Gradle Build Files
y hacer clicNext
Finish
gradlew
ygradlew.bat
. Eliminar también lagradle
carpetaProject -> Clean
opción de menú. Rellene el formulario que se muestra a continuación:Clean Project
VentanaOK
y espere hasta que se complete el proceso de limpieza.setContentView
funcionar en suMainActivity
clase:build.gradle
archivo hasta lasourceCompatibility
sección de la siguiente manera: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.No
en la ventana de notificación.Build project
. Eclipse comenzará a construir el proyecto.Proceso de construcción
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 a continuación):build\source\buildConfig\debug
build\source\r\debug
Eclipse ahora podrá reconocer
R.java
ybuildConfig.java
archivos y no mostrará ningunored dots
que denote errores relacionados con los archivos de recursos del proyecto.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 correctamenteFuente: Uso de Java 8 Lambda Expressions en Android Developer Tools
fuente
Siga este enlace para nuevas actualizaciones. Utilice las funciones del lenguaje Java 8
Vieja respuesta
A partir de la versión de vista previa de Android N, las características limitadas de soporte de Android de Java 8 ver Características del lenguaje Java 8
Funciones de lenguaje Java 8 compatibles y API
Métodos de interfaz predeterminados y estáticos
Expresiones lambda (también disponible en API nivel 23 y más bajo)
Anotaciones repetibles
Referencias de métodos (también disponibles en API nivel 23 y versiones inferiores)
Hay algunas características adicionales de Java 8 que son compatibles con Android, puede ver detalles completos de las características del lenguaje Java 8
Actualizar
Actualización 2
Ahora, la versión estable de Android studio 3.0 admite bibliotecas Java 8 y características de lenguaje Java 8 (sin el compilador Jack).
fuente
minSdkVersion
?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 habilitar "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
agregue estas líneas a build_gradle
Java 8 parece ser el motor de Java en ejecución de Android Studio 2.0, pero aún no acepta la sintaxis de Java 8 después de comprobarlo, y ahora no puede elegir un compilador de Android Studio. Sin embargo, puede usar el complemento scala si necesita un mecanismo de programación funcional en su cliente Android.
fuente
Android usa un Java que se ramifica desde Java 6.
A partir de Android SDK versión 19, puede usar las funciones de Java 7 haciendo esto . No hay soporte completo para Java 8 (todavía).
fuente
¡Native Java 8 llega a Android! ¡Finalmente!
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:
También desde el nivel mínimo de API 24 están disponibles las siguientes API de Java 8:
Agregue estas líneas al build.gradle de su módulo de aplicación para informar al proyecto del nivel de idioma:
Deshabilite la compatibilidad con las características del lenguaje Java 8 agregando lo siguiente a su archivo gradle.properties :
Ya terminaste! ¡Ahora puedes usar java8 nativo!
fuente
Android OFICIALMENTE admite Java 8 a partir de Android N.
Los anuncios de funciones están aquí , el anuncio del lenguaje Java 8 es:
fuente
Podemos usar Java 8 usando:
En build.gradle (Proyecto: myProject) agregue lo siguiente
En build.gradle (Módulo: myModule) agregue lo siguiente
fuente
ACTUALIZACIÓN 2020/01/17
Android Studio 4.0 incluye soporte para usar una serie de API de lenguaje Java 8, utilizando una técnica llamada desugaring, sin requerir un nivel mínimo de API para su aplicación:
https://developer.android.com/studio/preview/features#j8-desugar
POSTE ORIGINAL DE 2017
Android Studio 3.0 comenzó a proporcionar soporte integrado para algunas de las características del lenguaje Java 8, que son:
También a partir del nivel de API 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(Class)
java.lang.reflect.Method.isDefault()
Además de eso, el
try-with-resources
soporte se extendió a todos los niveles de API de Android.Se promete que se agregarán más funciones de Java 8 en el futuro.
Para obtener más detalles, visite:
https://developer.android.com/studio/write/java8-support.html
fuente
2.4.0-alpha6
). Por favor verifique el bloque de citas en la respuesta.Camino fácil
Puede habilitar la compatibilidad con java 1.8 para el proyecto de Android.
Estructura abierta del proyecto
Ya sea 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).
O puedes usar gradle
Proyecto de sincronización. ¡Y eso es!
Nota: La compatibilidad con Java 1.8 se puede habilitar para Android Studio 3.0.0 o superior. Consulte la documentación para leer más.
fuente
Cuando hice esta pregunta hace casi 2 años, la respuesta realmente fue "oficialmente" no, pero como lo señala la respuesta de ekcr1, puede obtener una de las características más esperadas (lambdas) para trabajar si usa retrolamba. En ese momento todavía 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 negativa, y aunque la retrolamba todavía parece un buen camino, hay otra opción para aquellos que estén dispuestos a tomar una ruta algo "no oficial", a saber, 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í:
https://kotlinlang.org
o mira este video utube de una charla dada por Jake Wharton
https://www.youtube.com/watch?v=A2LukgT2mKc
fuente
Últimas noticias:
Google anuncia que con Android N y Android Studio 2.1+, la plataforma admitirá Java 8. También se lanzó una versión estable de Studio 2.1.
Por fin podemos usar expresiones lambda. No más filtros de lista para el bucle. Horeeey
fuente
Agregue esta configuración build.gradle y sincronice gradle:
fuente
Google acaba de anunciar que Java 8 será compatible de forma nativa con Android y que la cadena de herramientas Jack dejará de ser válida:
Más información aquí: https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
fuente
Si. ¡Usaremos Java 8 pronto!
https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
fuente
agregué esta línea al módulo lvl build gradel
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
fuente
Escribí una respuesta similar a una pregunta similar sobre 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 publicación del blog de desarrolladores de Android :
Antes de Android Studio 2.1:
Android aún no admite Java 1.8 (solo admite hasta 1.7), por lo que no puede utilizar las funciones de Java 8 como lambdas.
Esta respuesta da más detalles sobre la compatibilidad de Android Studio ; afirma:
Si desea saber más sobre el uso
gradle-retrolambda
, esta respuesta brinda muchos detalles sobre cómo hacerlo .fuente
"SDK Location"
(esto está en una Mac FWIW) solo dice"/Users/me/Library/Android/sdk"
¿Estoy usando Java8? ¿Cómo usar Java8? ¡Gracias!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:
Además, las siguientes API de lenguaje Java 8 también están disponibles:
fuente
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 Sí . 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/05/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 vi algunas de las E / S de Google videos de donde se anunció. Aquí hay un enlace a un blog posterior por el equipo Kotlin sobre el anuncio.
fuente
Agregar lo siguiente solucionó el problema para mí (Android Studio 2.3.2):
build.gradle (Proyecto)
build.gradle (Módulo: aplicación)
fuente
Un subconjunto de Java 8 es compatible ahora con Android Studio. Simplemente realice los ajustes de compatibilidad de origen y destino desde la ventana a continuación:
Archivo -> Estructura del proyecto
Se proporciona más información en el siguiente enlace.
https://developer.android.com/studio/write/java8-support.html
fuente
ACTUALIZACIÓN 2019/10/28
Android Studio 4.0 resuelve este problema .
El compilador D8 aplica un parche de las API nativas de Java 8 en su APK en el momento de la compilación y su aplicación usará ese código, en lugar de las API nativas, en tiempo de ejecución. El proceso se llama desugaring .
fuente
Todas las soluciones anteriores no parecen funcionar en 2019 con el último Android Studio 3.4+ .
Descubrí una solución perfecta y actualizada para migrar o actualizar su proyecto de Android a Java 8 .
Solución: haga clic en Archivo -> Estructura del proyecto -> Módulos -> pestaña Propiedades .
Cambie la compatibilidad de origen y la compatibilidad de destino a 1.8 (Java 8)
fuente
Sí, puede usar las características de Java 8 Language en Android Studio, pero la versión debe ser 3.0 o superior. Lea este artículo para saber cómo usar las funciones de Java 8 en el estudio de Android.
https://bijay-budhathoki.blogspot.com/2020/01/use-java-8-language-features-in-android-studio.html
fuente
La forma más fácil de agregar compatibilidad con Java 8
Simplemente agréguelo en su archivo build.gradle.
fuente