¿Cómo puedo solucionar este ZipException mientras compilaba un proyecto de Android en Jenkins?
Recientemente he actualizado el SDK de Android en la máquina de Jenkins a rev15 de rev13, y tuve que rehacer algunas de nuestras cosas de compilación personalizadas en build.xml
para encajar con los cambios realizados en rev14. Trabajé esto en mi estación de trabajo, y lo revisé esperando que todo fuera peachy. En su lugar, la generación falla con el error siguiente:
-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 ejecutando la ant
como el usuario de Jenkins directamente en el directorio del espacio de trabajo de Jenkins con el mismo androide SDK, hormiga, y JDK que Jenkins está utilizando. Incluso cortar y pegar la línea de ejecución fuera de la Jenkins registro para asegurarse de que todos los mandos e interruptores se establecen el mismo. Así que es algo acerca de cómo Jenkins está ejecutando la compilación que es el problema.
- Xamarin.Android android: versionCode android: versionName - Desde Jenkins Build Server
- Pasa parámetro de perfil MAVEN de jenkins
- ¿Cómo hacer Cucumber Android pruebas de integración?
- El proyecto Build Unity con Jenkins falló
- Calabash-android - error instalando APK - remoto Sistema de archivos de sólo lectura
Jenkins había volcado el entorno como un "shell exec" paso de la construcción, y veo que la variable LD_LIBRARY_PATH
está establecida.
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
Establecer este valor en mi terminal mientras se ejecuta la compilación desde el shell, y falla de la misma manera que cuando Jenkins ejecuta las cosas. Ah ah
El problema es que no puedo averiguar cómo mantener la variable LD_LIBRARY_PATH
de establecer, o apuntando a algo que no causará este problema. No está establecido en el entorno del usuario de Jenkins, y no puedo encontrar nada que pueda ser una referencia a él en la configuración de Jenkins. El valor que estableció cambió cuando instalé un JDK actualizado y actualizé el valor de JAVA
en /etc/defaults/jenkins
por lo que está claramente relacionado, pero desafortunadamente, el comportamiento no mejoró ninguno.
Estoy sin ideas. ¿Alguna ayuda?
- Biblioteca resolver a una ruta sin archivo project.properties
- Emulador de Android en Jenkins error: dispositivo desconectado
- El análisis del proyecto falla después de actualizar a SonarQube 5.0
- ¿Cómo subir un APK de Jenkins / Hudson a Play Store?
- Jenkins no puede iniciar el emulador
- Emulador de Android en Docker
- Integración continua con Android
- " Emulador no parecía comenzar; renunciando"
El problema resultó ser que debido a alguna complicación de configuración involucrada en hacer uso de la característica de construcción de matriz Jenkins (una característica muy agradable, por cierto) que una biblioteca no estaba poniendo su archivo classes.jar
donde el proyecto padre esperaba Encontrarlo, causando el error reportado. Eso era básicamente un "archivo no encontrado" que no lo dice. Todavía no estamos seguros de qué (si algo?) El LD_LIBRARY_PATH
tenía que ver con él.
Mi colega modificó el archivo build.xml
para el proyecto principal y la biblioteca para convenir con más fuerza en dónde los archivos de salida van a terminar, y ahora todo funciona de nuevo, mucho para nuestro alivio.
Yo tuve el mismo problema. Estaba construyendo sobre Jenkins y el tarro estaba siendo copiado en librerías incorrectamente.
Estoy usando el Jenkins Copy Artifacts Plugin para tomar un frasco de biblioteca común y copiarlo en libs /. Conseguí el error cuando no utilicé la opción "Flatten Directories". Una vez que acabo de tener el tarro en el directorio de libs todo estaba de vuelta a la normalidad.
Esperemos que esto salve a alguien el dolor de cabeza!
- Cordova Ionic: habilita el teclado suave de emoji de android
- Android, NSD / DNS-SD: detección no confiable de NsdManager y resolución de IP