Ho aggiornato di recente l'SDK Android sulla macchina Jenkins su rev15 da rev13 e ho dovuto ripristinare alcune delle nostre cose di compilazione personalizzate in build.xml
per adattarle alle modifiche apportate in rev14. Ho lavorato a questo sulla mia workstation, e l'ho controllato aspettandomi che tutto fosse peachy. Al contrario, la generazione non riesce con il seguente errore:Come posso risolvere questo ZipException durante la compilazione di un progetto Android su 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
posso costruire con successo il progetto eseguendo ant
come l'utente Jenkins direttamente nella directory di lavoro Jenkins con la stessa SDK di Android, Formica, e JDK che Jenkins sta usando . Ho persino tagliato e incollato la riga di esecuzione dal log di Jenkins per garantire che tutte le manopole e gli interruttori siano impostati allo stesso modo. Quindi è qualcosa su come Jenkins sta facendo funzionare la build che è il problema.
Ho avuto Jenkins eseguire il dump dell'ambiente come un passo "shell exec" della build, e vedo che la variabile LD_LIBRARY_PATH
è impostata.
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
ho impostato questo valore nel mio terminale durante l'esecuzione la build dal guscio, e fallisce nello stesso modo di quando Jenkins gestisce le cose. Ah-ah!
Il problema è che non riesco a capire come mantenere la variabile LD_LIBRARY_PATH
da impostare o puntare a qualcosa che non causerà questo problema. Non è impostato nell'ambiente dell'utente Jenkins e non riesco a trovare nulla che possa essere un riferimento ad esso nella configurazione di Jenkins. Il valore impostato cambia quando ho installato un JDK aggiornato e aggiornato il valore JAVA
in /etc/defaults/jenkins
, quindi è chiaramente correlato, ma sfortunatamente, il comportamento non è migliorato.
Sono fuori di idee. Qualsiasi aiuto?
Sembra decisamente correlato ai file jar errati. – Argyle