Recientemente actualicé el SDK de Android en la máquina Jenkins a rev15 desde rev13, y tuve que rehacer algunas de nuestras funciones de compilación personalizadas en build.xml
para que encajen con los cambios realizados en rev14. Lo resolví en mi estación de trabajo y lo revisé esperando que todo fuera color de rosa. En cambio, la generación falla con el siguiente error:¿Cómo soluciono esta ZipException al compilar un proyecto de Android en Jenkins?
-obfuscate:
-dex:
[dex] Converting compiled files and external libraries into /export/home/hudson/jobs/path/to/the/file/classes.dex...
[dx]
[dx] UNEXPECTED TOP-LEVEL EXCEPTION:
[dx] java.util.zip.ZipException: error in opening zip file
[dx] at java.util.zip.ZipFile.open(Native Method)
[dx] at java.util.zip.ZipFile.<init>(ZipFile.java:127)
[dx] at java.util.zip.ZipFile.<init>(ZipFile.java:143)
[dx] at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:206)
[dx] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
[dx] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
[dx] at com.android.dx.command.dexer.Main.processOne(Main.java:418)
[dx] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329)
[dx] at com.android.dx.command.dexer.Main.run(Main.java:206)
[dx] at com.android.dx.command.dexer.Main.main(Main.java:174)
[dx] at com.android.dx.command.Main.main(Main.java:95)
[dx] 1 error; aborting
BUILD FAILED
/opt/android-sdk-linux/tools/ant/build.xml:729: The following error occurred while executing this line:
/opt/android-sdk-linux/tools/ant/build.xml:731: The following error occurred while executing this line:
/opt/android-sdk-linux/tools/ant/build.xml:743: The following error occurred while executing this line:
/opt/android-sdk-linux/tools/ant/build.xml:249: null returned: 1
puedo construir con éxito el proyecto mediante la ejecución de ant
como el usuario Jenkins directamente en el directorio de espacio de trabajo de Jenkins con el mismo SDK de Android, Hormiga, y JDK que Jenkins está utilizando . Incluso corté y pegué la línea de ejecución del registro de Jenkins para asegurarme de que todos los mandos e interruptores estén configurados de la misma manera. Entonces, es algo sobre cómo Jenkins está ejecutando la compilación, ese es el problema.
Tenía a Jenkins volcado el entorno como un "ejecutor de shell" paso de la compilación, y veo que la variable LD_LIBRARY_PATH
está configurada.
LD_LIBRARY_PATH=/u0/jdk1.6.0_29/jre/lib/i386/server:/u0/jdk1.6.0_29/jre/lib/i386:/u0/jdk1.6.0_29/jre/../lib/i386
que establece este valor en mi terminal mientras se ejecuta la construcción de la concha, y se produce un error en la misma forma que cuando se ejecuta Jenkins cosas. Ah-ha!
El problema es que no puedo encontrar la forma de evitar que la variable LD_LIBRARY_PATH
se establezca o señalar algo que no cause este problema. No está establecido en el entorno del usuario de Jenkins, y no puedo encontrar nada que pueda ser una referencia en la configuración de Jenkins. El valor que estableció cambió cuando instalé un JDK actualizado y actualicé el valor JAVA
en /etc/defaults/jenkins
, por lo que está claramente relacionado, pero desafortunadamente, el comportamiento no mejoró ninguno.
Estoy sin ideas. ¿Alguna ayuda?
Definitivamente parece estar relacionado con archivos jar extraviados. – Argyle