我有以下构建环境:
> Ubuntu
> Java 1.6.0_24
> Apache ant 1.8.2
>jenkins1.427
>码头6.1.26
我可以从命令行(在jenkins工作区中)创建一个发布APK(zipaligned and signed),运行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
什么会导致jenkins无法签名,从命令行执行相同的目标工作正常?
我已经搜索了这个,并且发现有些人正在编写自己的bash脚本来签署他们的APK,然后将这些作为shell目标运行,但这似乎是一种肮脏的方式……任何建议?
谢谢
解决方法:
我们已经设置了我们的Jenkins服务器,使用您在此处概述的相同技术来签署我们的APK,它适用于我们.一个区别是我将完全限定的路径放到密钥库而不是依赖于相对路径.我不知道他们在哪里相对.如果您的密钥库处于版本控制中,Jenkins提供了一个工作区根环境变量,您可以使用它来指向它.
从命令行测试此构建也是值得的,您可以使用ant -Dkey.store = / some / key.store …指令定义所有这些属性,以确保您提供的所有值都正确.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。