Processus automatisé:
Utilisez cet outil (utilise le nouvel apksigner de Google):
https://github.com/patrickfav/uber-apk-signer
Avertissement: Je suis le développeur :)
Processus manuel:
Étape 1: Générer Keystore (une seule fois)
Vous devez générer un keystore une fois et l'utiliser pour signer votre unsigned
apk. Utilisez le fourni par le JDK trouvé danskeytool
%JAVA_HOME%/bin/
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
Étape 2 ou 4: Zipalign
zipalign
qui est un outil fourni par le SDK Android trouvé dans par exemple %ANDROID_HOME%/sdk/build-tools/24.0.2/
est une étape d'optimisation obligatoire si vous souhaitez télécharger l'apk sur le Play Store.
zipalign -p 4 my.apk my-aligned.apk
Remarque: lorsque vous utilisez l'ancien, jarsigner
vous devez zipalign APRÈS la signature. Lorsque vous utilisez la nouvelle apksigner
méthode, vous le faites AVANT de signer (déroutant, je sais). L'appel de zipalign avant apksigner fonctionne correctement car apksigner préserve l'alignement et la compression de l'APK (contrairement à jarsigner).
Vous pouvez vérifier l'alignement avec
zipalign -c 4 my-aligned.apk
Étape 3: signer et vérifier
Utilisation des build-tools 24.0.2 et versions antérieures
Utilisez jarsigner
qui, comme le keytool, est fourni avec la distribution JDK trouvée dans %JAVA_HOME%/bin/
et utilisez-le comme ceci:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name
et peut être vérifié avec
jarsigner -verify -verbose my_application.apk
Utilisation des outils de construction 24.0.3 et plus récents
Android 7.0 présente APK Signature Scheme v2, un nouveau schéma de signature d'applications qui offre des temps d'installation d'application plus rapides et une protection accrue contre les modifications non autorisées des fichiers APK (voir ici et ici pour plus de détails). Par conséquent, Google a implémenté son propre signataire apk appeléapksigner
(duh!) Le fichier de script se trouve dans %ANDROID_HOME%/sdk/build-tools/24.0.3/
(le .jar est dans le /lib
sous - dossier). Utilisez-le comme ça
apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name
et peut être vérifié avec
apksigner verify my-app.apk
La documentation officielle peut être trouvée ici.