Acabo de cambiar a Android Studio 2.1 y apareció este error al intentar compilar una aplicación que funcionaba anteriormente:
Error:Error converting bytecode to dex: Cause: Dex cannot parse version 52 byte code. This is caused by library dependencies that have been compiled using Java 8 or above. If you are using the 'java' gradle plugin in a library submodule add targetCompatibility = '1.7' sourceCompatibility = '1.7' to that submodule's build.gradle file.
Ya había actualizado el archivo gradle.build del proyecto principal para forzar la generación de código Java 1.7:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7
}
}
También había actualizado el módulo gradle.build de la siguiente manera para configurar la versión de Java:
android {
compileSdkVersion 19
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.abc.def"
minSdkVersion 19
targetSdkVersion 19
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
El submódulo que se está construyendo con Maven. En el archivo pom.xml también intenté forzar la generación de código 1.7.
Entiendo que estoy usando un artefacto de ensamblaje, que incorpora módulos subordinados, pero no he cambiado ninguno de los módulos subordinados y el archivo .jar resultante para el módulo funcionó bien la última vez que compilé.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId> <!-- maven-compiler-plugin -->
<version>2.6</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Mi pregunta: 1) ¿Es este un problema de Android Studio 2.1? ¿Lo han visto otros? 2) Suponiendo que este es mi error y dado que el mensaje de error no ayuda a encontrar el módulo defectuoso, ¿hay alguna recomendación para encontrar el código V52? No puedo simplemente omitir las bibliotecas sin romper una gran cantidad de código. ¿Se puede inspeccionar un archivo .jar para encontrar la revisión del código? Gracias por adelantado. -Hephaestus
fuente
Respuestas:
solo use java 1.8 con Android Studio 3.0+ y configure lo siguiente para mí: parece que necesita las últimas herramientas de compilación
y
fuente
android.dexOptions.incremental
propiedad está obsoleta y no tiene ningún efecto en el proceso de construcción".Si tiene un módulo con una biblioteca de Java que no es específica de Android , esto debería funcionar:
apply plugin:'java'
Colóquelo en la parte superior del archivo build.gradle, luego reconstruya.
fuente
Si usa
org.jetbrains:annotation:15
un complemento retrolambda, elimine la líneacompile org.jetbrains:annotations:15.0
de subuild.gradle
y el error desaparecerá. Esto funciona para mi.fuente
Posiblemente, algunas de sus dependencias se compilaron con Java 8, no especialmente para Android. Intente cambiar esas dependencias a una versión anterior. No sé exactamente qué biblioteca debería degradar, porque no ha adjuntado una lista de dependencias de su módulo principal.
Por ejemplo: tuve el mismo problema. Después de horas de búsqueda, descubrí que la biblioteca
org.codehaus.httpcache4j.uribuilder:2.0.0
requiere Java 8, a partir de github . Entonces, cuando me cambié1.1.0
, el proyecto se construyó e implementó con éxito.fuente
Intente agregar a build.gradle principal en la sección allprojects
o agregue esto en dependencias
en todos los módulos manualmente
fuente
Pude resolver este problema agregando las siguientes líneas:
a
defaultConfig
en elbuild.gradle
archivo.Puede seguir las pautas para Java 8 en el enlace: https://developer.android.com/guide/platform/j8-jack.html
fuente
Tuve el mismo problema con la dependencia greendao-generator. Agregué por error esa dependencia en mi build.gradle (
compile 'org.greenrobot:greendao-generator:3.1.0'
) y AndroidStudio me mostró el mismo mensaje de error.Probablemente sea porque ese módulo ha sido compilado con Java 8.
Así que eliminé esa dependencia de mi build.gradle y todo compilado felizmente :)
fuente
Resolví este problema de la siguiente manera:
fuente
Desactivar Instant Run en Android Studio 2.2 con el complemento Gradle 2.2.2 lo solucionó. Volver a una versión anterior del complemento de Gradle (como 2.2.0) también lo solucionó, pero eso es menos deseable en mi humilde opinión.
fuente
Esto me pasó con Android Studio 2.3.3. La solución que encontré fue eliminar la carpeta de compilación y luego Rebuild Project . Era tan simple como eso.
fuente
También enfrenté el mismo error en
Android 2.3.3
, después de agregar algunas dependencias JAR. El problema se debió a la dependenciaio.netty:netty-all:4.1.16.Final
. Este JAR versión 4.1.16 se compiló con Java 1.8 y todos los demás se generaron con Java 1.7.Esto se resolvió, después de incluir una versión anterior de
netty
(que se generó con Java 1.7) en mibuild.gradle
archivo.compile 'io.netty:netty-all:4.1.5.Final'
fuente
Me he encontrado con este problema al intentar actualizar al valor automático v 1.5 en Android Studio v 2.3.3. El valor automático 1.5 probablemente será compatible con AS 3 (requiere un compilador java actualizado)
Por ahora, el valor automático 1.4.1 funciona.
fuente
Me enfrento al mismo problema con la biblioteca de API de ubicación reactiva para Android y RxJava 2. Solo actualice build.gradle a 3.0.1 y reduzca la biblioteca de API de ubicación reactiva para Android y la versión de biblioteca de RxJava 2 de 1.0.4 a 1.0.3 Funciona bien en mi caso.
fuente
Me he encontrado con este problema al intentar importar un archivo jar compilado por jdk 1.8 en Android Studio 3.0. Intenté todas las soluciones anteriores, pero ninguna funciona. Entonces, le pedí al desarrollador de ese jar que lo recompilara con jdk 1.7, y luego funcionó bien, no volver a encontrar este problema.
fuente
Si es posible para ti:
Esto debería solucionar el problema.
Referencia: https://developer.android.com/studio/write/java8-support
fuente