Android:build立平台源码后,如何用平台密钥签名任意APK?

作为一个实验,我想用我定制的Android平台的平台键来签名一个任意的APK,它是通过NDK构build的。 要做这件事的过程是什么?

Solutions Collecting From Web of "Android:build立平台源码后,如何用平台密钥签名任意APK?"

如果您有平台密钥/证书对(.pk8 + x509.pem)。 可以在pulbic sdk中的build / target / product / security下find。

您可以从命令行使用SignApk.jar

java -jar SignApk.jar platform.x509.pem platform.pk8 Application.apk Application_signed.apk

或者为了使自动化更容易,您可以使用keytool-importkeypair将密钥/证书对导入到您的java密钥库文件中,并使用ant makefile或eclipse进行签名。

keytool-importkeypair -k〜/ .android / debug.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform

可以在prebuilts/sdk/tools/lib/signapk.jar (或out/host/linux-x86/framework/signapk.jar )find在aprock答案中提到的signapk.jar(全部小写)文件。

下面我将介绍如何pipe理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使用密码androidlocking的〜/ .android / debug.keystore中的keystore。 (你也可以指定其他密钥库文件,例如~/.android/mykeys.keystore 。)下一个命令将密钥库中的密钥材料从tmp.p12存储(没有密钥的密钥,如果你想一,编辑-srcstorepass ''下面):

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

此时,您可以删除tmp.p12文件,因为它不再需要。

为了检查你的keystore里面是什么,你可以运行下一个keytool命令(输出结果显示在这行之后):

 $ keytool -list -keystore〜 / .android / debug.keystore -storepass android
 ...
 platformkey ,2013年11月23日,PrivateKeyEntry, 
证书指纹(SHA1):12:34:56 :(剥离):AB:CD:EF

当您不再需要钥匙时,可以通过以下方式将其拆除:

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

在您的local.properties文件中,放(如果您省略了key.*.password选项,则必须在每次签名APK时input):

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

现在,您可以运行ant release ,使用您存储在密钥库中的平台密钥对APK进行签名。