簡體   English   中英

無法從Jenkins簽署Android APK,但可以從命令行工作

[英]Fail to sign Android APK from Jenkins, but works from command line

我有以下構建環境:

  • Ubuntu的
  • Java 1.6.0_24
  • Apache ant 1.8.2
  • 詹金斯1.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 ...指令定義所有這些屬性,以確保您提供的所有值都正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM