J'ai décodé un fichier APK avec apktool (le code source original a été perdu) afin de résoudre certains problèmes liés aux fichiers XML de mise en page. Je l'ai ensuite reconstruit avec apktool et quand j'ai essayé de l'installer sur mon appareil (en utilisant adb: adb install appname.apk), il m'a donné cette erreur:
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
l'apk original était cependant signé par un magasin de clés (sur Eclipse IDE). Celui-ci ne l'est pas. Comment puis-je le signer correctement avec son fichier de distorsion d'origine en dehors d'Eclipse!?
créer une clé en utilisant
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
puis signez l'apk en utilisant:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name
Utilisez cet outil (utilise le nouvel apksigner de Google):
https: //github.com/patrickfav/uber-apk-signer
Disclaimer: Je suis le développeur :)
Vous devez générer un magasin de clés une fois et l’utiliser pour signer votre apk unsigned
. Utilisez le keytool
fourni par le JDK trouvé dans %Java_HOME%/bin/
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
zipalign
, outil fourni par le Android SDK trouvé, par exemple, dans %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 compresser APRÈS. Lorsque vous utilisez la nouvelle méthode apksigner
, vous le faites AVANT signature (confusion, je sais). Invoquer zipalign avant que 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
Utilisez jarsigner
qui, comme l'outil de clé, est fourni avec la distribution JDK trouvée dans %Java_HOME%/bin/
et utilisez-le comme suit:
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
Android 7.0 présente APK Signature Scheme v2, un nouveau schéma de signature d'application qui offre des temps d'installation plus courts 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 apk signataire 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
le moyen le plus rapide est de signer avec le magasin de clés de débogage:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.Android/debug.keystore app.apk androiddebugkey -storepass Android
ou sous Windows:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore %USERPROFILE%/.Android/debug.keystore test.apk androiddebugkey -storepass Android
Vous utilisez jarsigner pour signer les APK. Vous n'avez pas besoin de signer avec le magasin de clés d'origine, mais d'en générer un nouveau. Lisez les détails: http://developer.Android.com/guide/publishing/app-signing.html
Pour ceux d'entre vous qui ne veulent pas créer un fichier bat à éditer pour chaque projet, ou ne veulent pas se souvenir de toutes les commandes associées aux programmes keytools et jarsigner et veulent juste le faire en un processus, utilisez ce programme:
http://lukealderton.com/projects/programs/Android-apk-signer-aligner.aspx
Je l'ai construit parce que j'en avais marre du long processus de devoir taper tous les emplacements de fichiers à chaque fois.
Ce programme peut sauvegarder votre configuration afin que la prochaine fois que vous la démarrez, il vous suffira de cliquer sur Générer et qu’il le gérera pour vous. C'est ça.
Aucune installation requise, il est entièrement portable et enregistre ses configurations dans un fichier CSV dans le même dossier.
Réponse mise à jour
Vérifiez https://shatter-box.com/knowledgebase/Android-apk-signing-tool-apk-signer/
Ancienne réponse
check apk-signer un bon moyen de signer votre application