我有以下构建环境:
- Ubuntu
- Java 1.6.0_24
- 阿帕奇蚂蚁 1.8.2
- 詹金斯 1.427
- 码头 6.1.26
我可以从命令行(在 jenkins 工作区)创建一个发布 APK(zipaligned 和签名),方法是运行ant release
,然后在出现提示时输入密钥库通行证。
但是,使用来自 Jenkins 作业的相同构建命令会失败,并显示以下内容:
release:
[echo] Signing final apk...
[signjar] Signing JAR: /home/james/.jenkins/workspace/android-sam/androidsam/bin/AndroidSam-unsigned.apk to /home/james/.jenkins/workspace/android-sam/androidsam/bin/AndroidSam-unaligned.apk as mykeystore
[signjar] jarsigner: Certificate chain not found for: mykeystore . mykeystore must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.
BUILD FAILED
/home/james/tools/android-sdk-linux_x86/tools/ant/main_rules.xml:641: jarsigner returned: 1
在 jenkins ant 目标步骤中,我设置了以下属性:
key.store=my-release-key.keystore
key.alias=mykeystore
key.store.password=<mypass>
key.alias.password=<mypass>
sdk.dir=/home/james/tools/android-sdk-linux_x86
什么会导致詹金斯无法签名,从而从命令行执行相同的目标可以正常工作?
我已经对此进行了谷歌搜索,发现有些人正在编写自己的 bash 脚本来签署他们的 APK,然后将它们作为 shell 目标运行,但这似乎是一种很肮脏的方式......有什么建议吗?
谢谢