Gần đây tôi đã cập nhật SDK Android trên máy Jenkins thành rev15 từ rev13 và phải làm lại một số công cụ xây dựng tùy chỉnh của chúng tôi theo số build.xml
để phù hợp với các thay đổi được thực hiện trong rev14. Tôi làm việc này trên máy trạm của tôi, và kiểm tra nó trong mong đợi tất cả mọi thứ để được đào. Thay vào đó, việc xây dựng không thành công với các lỗi sau:Làm thế nào để sửa lỗi ZipException này trong khi biên soạn một dự án Android trên 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
tôi có thể xây dựng thành công dự án bằng cách chạy ant
như là người dùng Jenkins trực tiếp trong thư mục workspace Jenkins với SDK Android cùng, Ant, và JDK rằng Jenkins đang sử dụng . Tôi thậm chí cắt và dán dòng thực hiện ra khỏi nhật ký Jenkins để đảm bảo rằng tất cả các nút bấm và công tắc đều được đặt giống nhau. Vì vậy, nó là một cái gì đó về cách Jenkins đang chạy xây dựng đó là vấn đề.
Tôi đã Jenkins kết xuất môi trường dưới dạng bước "thực thi trình bao" của bản dựng và tôi thấy rằng biến số LD_LIBRARY_PATH
được đặt.
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
Tôi đặt giá trị này trong thiết bị đầu cuối của mình trong khi chạy xây dựng từ trình bao và không thành công giống như khi Jenkins chạy mọi thứ. Ah-ha!
Vấn đề là tôi không thể tìm ra cách giữ biến số LD_LIBRARY_PATH
khỏi bị đặt hoặc chỉ vào thứ gì đó không gây ra sự cố này. Nó không được thiết lập trong môi trường của người dùng Jenkins, và tôi không thể tìm thấy bất cứ thứ gì có thể là một tham chiếu đến nó trong cấu hình Jenkins. Giá trị mà nó đặt đã thay đổi khi tôi cài đặt một JDK cập nhật và cập nhật giá trị JAVA
trong /etc/defaults/jenkins
vì vậy nó liên quan rõ ràng, nhưng không may, hành vi không cải thiện bất kỳ.
Tôi hết ý tưởng. Bất kỳ giúp đỡ?
Dường như nó có liên quan đến các tệp jar bị thất lạc. – Argyle