Eclipse da "Conversión al formato de Dalvik fallado" mientras que la hormiga trabaja

Recientemente he actualizado mis herramientas SDK y el ADT Plugin a la última versión (también Android 2.3). Esto requirió algunos cambios en mi config (principalmente agregué proguard.config=procfg.txt a default.properties para que pudiera usar el soporte incorporado para proguard), y eliminé la configuración proguard vieja de build.xml . Ahora, mi problema es que Eclipse da un error bastante largo (que voy a incrustar al final de la pregunta) El problema es que no he agregado recientemente ninguna bibliotecas. Y otra vez, la compilación usando las ant trabaja según lo esperado:

 $ ant debug Buildfile: /home/felix/workspace/XXX/build.xml [setup] Android SDK Tools Revision 8 [setup] Project Target: Android 2.3 [setup] API level: 9 [setup] [setup] ------------------ [setup] Resolving library dependencies: [setup] No library dependencies. [setup] [setup] ------------------ [setup] [setup] WARNING: Attribute minSdkVersion in AndroidManifest.xml (4) is lower than the project target API level (9) [setup] [setup] Importing rules file: tools/ant/main_rules.xml -debug-obfuscation-check: -set-debug-mode: -compile-tested-if-test: -dirs: [echo] Creating output directories if needed... -pre-build: -resource-src: [echo] Generating R.java / Manifest.java from the resources... -aidl: [echo] Compiling aidl files into Java classes... -pre-compile: compile: [javac] /opt/android-sdk/tools/ant/main_rules.xml:361: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds [javac] Compiling 1 source file to /home/felix/workspace/XXX/bin/classes -post-compile: -obfuscate: -dex: [echo] Converting compiled files and external libraries into /home/felix/workspace/XXX/bin/classes.dex... -package-resources: [echo] Packaging resources [aapt] Creating full resource package... -package-debug-sign: [apkbuilder] Creating XXX-debug-unaligned.apk and signing it with a debug key... debug: [echo] Running zip align on final apk... [echo] Debug Package: /home/felix/workspace/XXX/bin/XXX-debug.apk BUILD SUCCESSFUL Total time: 6 seconds 

Sin embargo, Eclipse está lloriqueando sobre clases repetidas o algo así:

 [2010-12-08 15:06:43 - XXX]: Dx UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: already added: Lcom/android/vending/licensing/AESObfuscator; [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:143) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processClass(Main.java:338) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processFileBytes(Main.java:315) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.access$100(Main.java:56) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:266) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processOne(Main.java:284) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processAllFiles(Main.java:220) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.run(Main.java:176) [2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [2010-12-08 15:06:43 - XXX]: Dx at java.lang.reflect.Method.invoke(Method.java:597) [2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(Unknown Source) [2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(Unknown Source) [2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(Unknown Source) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) [2010-12-08 15:06:43 - XXX]: Dx UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: already added: Lcom/android/vending/licensing/AESObfuscator; [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:143) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processClass(Main.java:338) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processFileBytes(Main.java:315) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.access$100(Main.java:56) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:266) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processOne(Main.java:284) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processAllFiles(Main.java:220) [2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.run(Main.java:176) [2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [2010-12-08 15:06:43 - XXX]: Dx at java.lang.reflect.Method.invoke(Method.java:597) [2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(Unknown Source) [2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(Unknown Source) [2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(Unknown Source) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238) [2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) [2010-12-08 15:06:43 - XXX]: Dx trouble processing: [2010-12-08 15:06:44 - XXX]: Dxclass name (com/android/vending/licensing/LicenseCheckerCallback) does not match path (classes/com/android/vending/licensing/LicenseCheckerCallback.class) ...while parsing classes/com/android/vending/licensing/LicenseCheckerCallback.class ...while processing classes/com/android/vending/licensing/LicenseCheckerCallback.class [2010-12-08 15:06:44 - XXX]: Dx trouble processing: [2010-12-08 15:06:44 - XXX]: Dxclass name (com/android/vending/licensing/NullDeviceLimiter) does not match path (classes/com/android/vending/licensing/NullDeviceLimiter.class) ...while parsing classes/com/android/vending/licensing/NullDeviceLimiter.class ...while processing classes/com/android/vending/licensing/NullDeviceLimiter.class [2010-12-08 15:06:44 - XXX]: Dx trouble processing: [2010-12-08 15:06:44 - XXX]: Dxclass name (com/android/vending/licensing/PreferenceObfuscator) does not match path (classes/com/android/vending/licensing/PreferenceObfuscator.class) ...while parsing classes/com/android/vending/licensing/PreferenceObfuscator.class ...while processing classes/com/android/vending/licensing/PreferenceObfuscator.class [2010-12-08 15:06:44 - XXX]: Dx ... --------------------------------------- ... ... and so on for every class in my project ... ... --------------------------------------- ... [2010-12-08 15:06:44 - XXX]: Dx229 warnings [2010-12-08 15:06:44 - XXX]: Dx2 errors; aborting [2010-12-08 15:06:44 - XXX] Conversion to Dalvik format failed with error 1 

¿Por qué está pasando esto? ¿Por qué está buscando en las classes/ , que no existe?

El proyecto funcionó sin ningún problema hasta ayer, y todavía funciona si se compila a través de ant .


Editar: Las Fix project properties y el Clean project no funcionan.


Editar 2: Los errores siguen yendo y viniendo. No tengo ningún .jar s. Además, estoy usando ProGuard. En un cierto punto la hormiga dejó de trabajar también (no puedo recordar los errores), hice un

 touch `find .` 

Y las cosas empezaron a funcionar de nuevo (Eclipse y hormiga), por un tiempo. Ahora Eclipse vomita errores de nuevo. ¿¡Que esta pasando!?


Editar 3: Parece que el problema reside en la integración de ProGuard. Siempre que comento la directiva proguard.config de default.properties ya un proyecto refresh + clean, funciona. Esto es bastante raro porque, al construir en modo de depuración, Eclipse no debe ofuscar / optimizar el código a través de ProGuard de todos modos. Además, mi configuración de ProGuard funciona bien a través de Ant.


Edición 4: Eclipse + Ant + ProGuard = no se llevan bien juntos. Si cierro Eclipse, descomente mi directiva proguard.config , construyo con Ant, comento mi directiva proguard.config , abre Eclipse, Eclipse comienza a lanzar errores. Parece que Ant está dejando algo atrás. Si hago un proyecto limpio funciona bien.

Ejecute "ant clean" y luego limpie su proyecto en Eclipse. Asegúrese de guardar los archivos generados por proguard (/ bin / proguard) antes de hacer esto porque los directorios "bin" y "gen" se eliminan. Solución molesta, pero es así como me dio esta cuestión.

Parece que el problema era que Eclipse y Ant no se llevaban bien. He dejado de usar Ant en absoluto y ahora Eclipse parece estar funcionando bien (puedo incluso exportar paquetes firmados y obfuscated usando el asistente).

Por lo tanto, para concluir, Ant + Eclipse = un gran no no.

Asegúrese de actualizar a la última versión de ADT que es 8.0.1 desde hace unas horas.

Tuve los mismos problemas.

Mi solución de trabajo:
1 ant clean, para deshacerse de los errores dex
2 agregar .jars en libs para eclipsar el proyecto (aadt errors?)

No tengo problemas al usar proguard en la configuración.

FYI Me las arreglé para obtener el mismo mensaje de error al construir una de mis aplicaciones usando hormiga. Sin embargo en mi caso había dejado 2 versiones de un archivo jar en la carpeta libs. Ambos archivos jar fueron incluidos por mi script de hormigas modificado (basado en las recomendaciones de No se puede construir y ejecutar un proyecto de prueba de android creado usando "ant create test-project" cuando el proyecto probado tiene jars en el directorio libs ) que causó el problema. Mi proyecto de eclipse sólo tenía una de las 2 bibliotecas especificadas por lo que no encontró el problema.

Mi solución fue simple y funcionó, cambié el nombre de uno de los 2 archivos jar a otra extensión .jazz y pude construir el proyecto con éxito usando ant.

Sólo un poco FYI, nos encontramos con este mismo problema debido a un frasco pegado en nuestra / libs / carpeta. Todo estaba bien en Eclipse, pero nuestro esclavo de compilación se quejaba de las definiciones de clases duplicadas. Teníamos las mismas clases que el .java, el archivo .jar en / libs / no estaba incluido en la ruta de compilación, pero parece que el script de construcción de hormigas en nuestro servidor de compilación Jenkins lo incluyó de todas maneras. Se ha eliminado de / libs / y todo vuelve a la normalidad ahora 🙂

Esto ocurre cuando hay varias instancias de la misma biblioteca que se incluye en la ruta de construcción.

  • Cómo diseñar "animación manual" en un juego de Android sin retrasos de código
  • Error de Eclipse dando "excepción de bucle de evento no controlado" No más identificadores
  • ¿Qué significa cuando Android ADT no está firmado (Eclipse)
  • El proyecto de importación dio Unable to resolve target 'android-7'
  • Android: ¿el espacio de trabajo de eclipse tarda mucho tiempo en crearse?
  • Problema de configuración de mockito con eclipse. Da error: java.lang.verifyError
  • ¿Por qué falta el fragment_main.xml en el ADT Bundle 20140702?
  • R desaparecidos después de crear el proyecto android desde una fuente existente
  • Logcat in eclipse mantiene el borrado automático
  • Eclipse Java - nombre de paquete no válido - Palabras reservadas en el nombre del paquete
  • Eclipse: emulador androide en ejecución, pero el programa no se inicia
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.