web-dev-qa-db-ja.com

Android:プラットフォームソースを構築した後、プラットフォームキーで任意のAPKに署名する方法

実験として、カスタムビルドのプラットフォームキーを使用したいと思いますAndroidプラットフォームは、NDKを介してビルドされた任意のAPKに署名します。これを行うためのプロセスは何ですか?

25
zer0stimulus

プラットフォームのキー/証明書のペア(.pk8 + x509.pem)がある場合。これは、pulbic sdkのbuild/target/product/securityにあります。

コマンドラインからSignApk.jarを使用できます

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

または、自動化を容易にするために、キーと証明書のペアをJavaキーストアファイルに keytool-importkeypair を指定して)インポートし、ant makefileまたはEclipse for署名。

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

46
aprock

aprock 'answer に記載されているsignapk.jar(すべて小文字)ファイルは、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でロックされている〜/ .Android/debug.keystoreにあるキーストアを使用します。 (必要に応じて、他のキーストアファイルを指定することもできます。例:~/.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、2013年11月23日、PrivateKeyEntry、
証明書のフィンガープリント(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に署名できます。

16
Lekensteyn