À titre expérimental, je voudrais utiliser la clé de plate-forme de ma plateforme Android personnalisée pour signer un fichier APK arbitraire, qui est construit via le NDK. Quel est le processus à suivre pour faire cela?Android: Après la construction de la source de la plate-forme, comment signer un fichier APK arbitraire avec la clé de la plate-forme?
Répondre
Si vous possédez votre paire clé/certificat de plateforme (.pk8 + x509.pem). Ce qui peut être trouvé sous construction/cible/produit/sécurité dans le sdk pulbic.
Vous pouvez utiliser le SignApk.jar de la ligne de commande
java jar SignApk.jar platform.x509.pem platform.pk8 Application.apk Application_signed.apk
Ou Pour faciliter l'automatisation, vous pouvez importer la paire clé/cert dans votre fichier keystore java, avec le keytool-importkeypair, et utiliser un fichier makefile ou une éclipse pour la signature.
keytool-importkeypair -k ~/.android/debug.keystore -p androïde -pk8 platform.pk8 -cert platform.x509.pem -alias plate-forme
Le signapk.jar (tous les minuscules) fichier mentionné dans aprock' answer peut être trouvé à prebuilts/sdk/tools/lib/signapk.jar
(ou out/host/linux-x86/framework/signapk.jar
). Ci-dessous, je vais décrire comment gérer le keystore utilisé par Eclipse et ant release
.
La commande suivante prend le fichier clé platform.pk8 et le certificat X509 platform.x509.pem et sort le matériau clé décryptée dans tmp.p12. Le nom platformkey est utilisé pour
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 et ant debug
utiliser le keystore à ~/.android/debug.keystore qui est verrouillé avec le mot de passe android
. (Vous pouvez également spécifier un autre fichier keystore si vous le souhaitez, par exemple ~/.android/mykeys.keystore
.) La commande suivante stocke le contenu de la clé de tmp.p12 dans le fichier de clés (sans mot de passe pour les clés, si vous le souhaitez, éditez -srcstorepass ''
ci-dessous):
keytool -importkeystore -deststorepass android -srckeystore tmp.p12 \ -srcstoretype PKCS12 -srcstorepass '' -destkeystore ~/.android/debug.keystore
À ce stade, vous pouvez supprimer le fichier tmp.p12 car il n'est plus nécessaire.
Afin de vérifier ce qui est dans votre keystore, vous pouvez exécuter la commande suivante keytool
(la sortie, il apparaît sur la ligne par la suite):
$ keytool -list -keystore ~/.android/debug.keystore -storepass android ... platformkey, Nov 23, 2013, PrivateKeyEntry, Certificate fingerprint (SHA1): 12:34:56:(stripped):AB:CD:EF
Lorsque vous ne avez plus besoin de la clé, il peut être enlevés avec:
keytool -delete -keystore ~/.android/debug.keystore -storepass android -alias platformkey
Dans votre fichier local.properties
, mettez (si vous omettez les options key.*.password
, vous devez le saisir à chaque fois que vous signez l'APK):
key.store=${user.home}/.android/debug.keystore
key.alias=platformkey
key.store.password=android
key.alias.password=
Maintenant vous pouvez lancer ant release
pour signer votre APK en utilisant la clé de la plate-forme que vous avez enregistré dans un fichier de clés.
vous devriez également supprimer le dossier META-INF dans apk = zip -d my_application.apk META-INF/\ * – kreker