我最近将 Jenkins 机器上的 Android SDK 从 rev13 更新到 rev15,并且必须重做一些自定义构建内容build.xml
以适应 rev14 中所做的更改。我在我的工作站上解决了这个问题,并检查了它,期望一切顺利。相反,构建失败并出现以下错误:
-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
我可以通过运行成功构建项目ant
作为 Jenkins 用户,直接在 Jenkins 工作区目录中使用 Jenkins 使用的相同 Android SDK、Ant 和 JDK。我什至从 Jenkins 日志中剪切并粘贴执行行,以确保所有旋钮和开关设置相同。所以问题在于 Jenkins 如何运行构建。
我让 Jenkins 将环境转储为构建的“shell exec”步骤,我发现LD_LIBRARY_PATH
变量已设置。
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
我在从 shell 运行构建时在终端中设置了这个值,它以与 Jenkins 运行时相同的方式失败。啊哈!
问题是我不知道如何保持LD_LIBRARY_PATH
变量被设置,或者指向不会导致此问题的东西。它没有在 Jenkins 用户环境中设置,并且我在 Jenkins 配置中找不到任何可能引用它的内容。当我安装更新的 JDK 并更新JAVA
值在/etc/defaults/jenkins
所以这显然是相关的,但不幸的是,这种行为没有任何改善。
我没主意了。有什么帮助吗?
问题是,由于使用 Jenkins 矩阵构建功能(顺便说一句,这是一个非常好的功能)所涉及的一些配置欺骗,库没有将其classes.jar
文件位于父项目期望找到的位置,导致报告的错误。这基本上是一个“找不到文件”,但并没有这么说。我们仍然不确定(如果有的话?)LD_LIBRARY_PATH
与此有关。
我的同事调整了build.xml
主项目和库的文件,以便更强有力地就输出文件的最终位置达成一致,现在一切都恢复正常了,这让我们松了一口气。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)