2010-11-22 60 views

回答

44

如果您有平臺密鑰/證書對(.pk8 + x509.pem)。可以在pulbic sdk中的build/target/product/security下找到。

你可以在命令行中使用SignApk.jar

Java的罐子SignApk.jar platform.x509.pem platform.pk8 Application.apk Application_signed.apk

或者爲了使自動化更容易,您可以使用keytool-importkeypair將密鑰/證書對導入到您的java密鑰庫文件中,並使用ant makefile或eclipse進行簽名。

密鑰工具-importkeypair -k 〜/ .android/debug.keystore -p機器人 -pk8 platform.pk8 -cert platform.x509.pem -alias平臺

15

的signapk.jar(全部小寫)文件aprock' answer中提到的文件可以在prebuilts/sdk/tools/lib/signapk.jar(或out/host/linux-x86/framework/signapk.jar)找到。

下面我將介紹如何管理Eclipse使用的密鑰庫和ant release


下面這個命令將密鑰文件platform.pk8和X509證書platform.x509.pem並輸出tmp.p12解密密鑰材料。該名platformkey用於

 
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 | \ 
    openssl pkcs12 -export -in platform.x509.pem -inkey /dev/stdin \ 
    -name platformkey -password pass: -out tmp.p12 

Eclipse和ant debug使用密鑰存儲在〜/ .android/debug.keystore其被鎖定的密碼android。 (您也可以,如果你想指定的其他密鑰庫文件,如~/.android/mykeys.keystore。)下一個命令存儲從tmp.p12在密鑰庫(關鍵材料,而不對鍵輸入密碼,如果你想要一個,下面編輯-srcstorepass '' ):

 
keytool -importkeystore -deststorepass android -srckeystore tmp.p12 \ 
    -srcstoretype PKCS12 -srcstorepass '' -destkeystore ~/.android/debug.keystore 

在這一點上,你可以刪除tmp.p12文件,因爲它不再需要。

爲了檢查什麼是你的密鑰庫,你可以運行下keytool命令(它的線所示之後的輸出):

 
$ keytool -list -keystore ~/.android/debug.keystore -storepass android 
... 
platformkey, Nov 23, 2013, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 12:34:56:(stripped):AB:CD:EF 

當你不再需要鑰匙,它可以

 
keytool -delete -keystore ~/.android/debug.keystore -storepass android -alias platformkey 

在你local.properties文件,把(如果省略key.*.password選項,你每次登錄的時間APK進入吧):

去除現在
key.store=${user.home}/.android/debug.keystore 
key.alias=platformkey 
key.store.password=android 
key.alias.password= 

可以運行ant release使用您存儲在密鑰庫平臺的關鍵簽署APK。