Android Studio preDexDebug después de agregar jar archivo
Tengo un marco propio que utilizo para las tareas en clase (clase de la escuela, no la clase Java), y lo hice en un archivo .jar
para que cada vez que hago cambios en el marco, sólo puedo arrastrar y soltar En Android Studio. Todo funcionó bien para las últimas 5 o más tareas de clase, y ahora de repente estoy recibiendo un error preDexDebug failed
al analizar mi .jar
después de hacer clic en ejecutar. He probado esto en un proyecto en blanco. El proyecto tiene un total de 2 .jar
s: Gson, y mi propio frasco. Imprime preDexDebug failed
justo después de que tire de mi propio .jar
… He luchado con esto durante dos horas de enfurecimiento, y no sé lo que puedo hacer para solucionar esto en absoluto …
He intentado reconstruir, limpiar, comprobar gradle.build
para duplicados, replicar el proyecto varias veces, y también la compilación y copiar el .jar
varias veces también.
- ¿Dónde está la carpeta lib de la aplicación de Android?
- Android - Agregar biblioteca externa al proyecto
- Cómo crear un archivo .jar desde un proyecto de Android Studio
- Cómo distribuir el código de Android reutilizable en un paquete?
- ¿Por qué consigo Link de clase falló al importar un jar en un proyecto de Android en Eclipse?
Ubuntu x64 con 64 bits de Oracle JDK 1.8.0_31. Uso de Java incluido en el JDK
Android Salida del estudio:
Configuration on demand is an incubating feature. :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:compileDebugNdk UP-TO-DATE :app:checkDebugManifest :app:preReleaseBuild UP-TO-DATE :app:prepareComAndroidSupportAppcompatV72103Library UP-TO-DATE :app:prepareComAndroidSupportSupportV42103Library UP-TO-DATE :app:prepareDebugDependencies :app:compileDebugAidl UP-TO-DATE :app:compileDebugRenderscript UP-TO-DATE :app:generateDebugBuildConfig UP-TO-DATE :app:generateDebugAssets UP-TO-DATE :app:mergeDebugAssets UP-TO-DATE :app:generateDebugResValues UP-TO-DATE :app:generateDebugResources UP-TO-DATE :app:mergeDebugResources UP-TO-DATE :app:processDebugManifest UP-TO-DATE :app:processDebugResources UP-TO-DATE :app:generateDebugSources UP-TO-DATE :app:compileDebugJava :app:preDexDebug AGPBI: {"kind":"SIMPLE","text":"UNEXPECTED TOP-LEVEL EXCEPTION:","position":{},"original":"UNEXPECTED TOP-LEVEL EXCEPTION:"} AGPBI: {"kind":"SIMPLE","text":"com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)","position":{},"original":"com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)","position":{},"original":"\tat com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processClass(Main.java:704)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processClass(Main.java:704)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.access$300(Main.java:83)","position":{},"original":"\tat com.android.dx.command.dexer.Main.access$300(Main.java:83)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)","position":{},"original":"\tat com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)","position":{},"original":"\tat com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)","position":{},"original":"\tat com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)","position":{},"original":"\tat com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processOne(Main.java:632)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processOne(Main.java:632)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)","position":{},"original":"\tat com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)","position":{},"original":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.run(Main.java:246)","position":{},"original":"\tat com.android.dx.command.dexer.Main.run(Main.java:246)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.main(Main.java:215)","position":{},"original":"\tat com.android.dx.command.dexer.Main.main(Main.java:215)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.Main.main(Main.java:106)","position":{},"original":"\tat com.android.dx.command.Main.main(Main.java:106)"} AGPBI: {"kind":"SIMPLE","text":"...while parsing reactor/communications/ClientEndpointTCP.class","position":{},"original":"...while parsing reactor/communications/ClientEndpointTCP.class"} AGPBI: {"kind":"SIMPLE","text":"1 error; aborting","position":{},"original":"1 error; aborting"}
- Modificar clase en jar: android build failed
- Dependencias transicionales de AAR en Maven
- Ejecutar un tarro multidex independiente en Android Kitkat
- Creación de un SDK de producto: ¿Cómo puedo añadir un lib nativo (.so) y un jar con el SDK que estoy creando?
- Cree una biblioteca de Jar Android para su distribución
- Cómo obtener NoClassDefFoundError cuando se utiliza common.lang.StringUtils en el código androide java?
- Ejecutar un jar ejecutable en android
- Librerías Android Jar
Resulta que Java 8 aún no es compatible con el SDK de Android (O algo similar en esas líneas). La instalación de Oracle JDK 7 en mi escritorio y la recompilación de mi .jar
solucionaron el problema completamente.
La parte más importante fue en la segunda línea del error producido: " bad class file magic (cafebabe) or version (0034.0000)
". 0x34 es hexadecimal para 52, lo que significa que los binarios están dirigidos a JRE que admiten Java 8, pero los requisitos de sistema de Android Studio indican que se requiere JDK 7
Pasos para cambiar a Oracle JDK 7:
- Descargar JDK
.tar
desde el sitio de Oracle - Untar contenidos a
/opt/
-
sudo update-alternatives --install /bin/java java /opt/jdk*version*/jre/bin/java 1023
-
sudo update-alternatives --install /bin/javac javac /opt/jdk*version*/bin/javac 1023
-
sudo update-alternatives --install /bin/jar jar /opt/jdk*version*/bin/jar 1023
- Diseño de material: cómo establecer transparencia para el botón de acción flotante de Android
- Cambio de enfoque de enfoque de niño android