Pourquoi les fichiers APK doivent-ils être signés?
Chaque application Android doit être signée numériquement avant de pouvoir être installée. La signature répond à plusieurs objectifs :
- Vérifie l'identité du développeur de l'application
- Garantit que l'APK n'a pas été falsifié
- Permet à Android de faire correspondre les mises à jour de l'application avec l'original
- Requis pour l'installation sur tous les appareils Android
Outil de bureau requis
La signature d'APK nécessite des outils de ligne de commande (JDK / Android SDK). Cela ne peut pas être fait dans un navigateur Web. Suivez le guide ci-dessous pour signer des APK sur votre ordinateur.
Méthode 1 : signature avec apksigner (recommandé)
apksigner est l'outil de signature APK officiel de Google, inclus dans les outils de création du SDK Android.
Étape 1 : générer un magasin de clés
keytool -genkey -v -keystore my-release-key.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias my-key-alias
Étape 2 : signez l'APK
apksigner sign --ks my-release-key.jks \
--ks-key-alias my-key-alias \
--out signed-app.apk unsigned-app.apk
Étape 3 : Vérifiez la signature
apksigner verify --verbose signed-app.apk
Méthode 2 : Signer avec jarsigner (Legacy)
# Sign
jarsigner -verbose -sigalg SHA256withRSA \
-digestalg SHA-256 \
-keystore my-release-key.jks \
app-unsigned.apk my-key-alias
# Verify
jarsigner -verify -verbose app-signed.apk
Étape 4 : Zipalign (Important!)
Après la signature, optimisez l'APK avec zipalign :
zipalign -v 4 signed-app.apk aligned-app.apk
Signature de débogage (pour les tests)
À des fins de test, vous pouvez utiliser le magasin de clés de débogage Android par défaut :
# Location of debug keystore:
# Linux/Mac: ~/.android/debug.keystore
# Windows: C:\Users\{USERNAME}\.android\debug.keystore
# Sign with debug key
apksigner sign --ks ~/.android/debug.keystore \
--ks-key-alias androiddebugkey \
--ks-pass pass:android \
app.apk
Comparaison des outils de signature
| Métrique | signataire apk | jarsigner |
|---|---|---|
| Signature V1 | ||
| Signature V2 | ||
| Signature V3 | ||
| Recommandé | Héritage |
Signataire APK – Foire aux questions
Questions courantes sur la signature d'APK, les magasins de clés et la signature de code Android
Pourquoi l'ordre d'alignement (zipalign avant apksigner) est important sur Android 11-15
L'une des erreurs les plus fréquentes commises par les développeurs et les moddeurs lors de la signature d'un APK modifié ou fusionné est d'exécuter zipalign après pour signer le package ou d'utiliser l'ancien utilitaire jarsigner de Java au lieu du SDK Android de Google apksigner. Étant donné que les schémas de signature APK v2 et v3 calculent un hachage cryptographique sur toute la disposition binaire de l'archive ZIP, la modification des décalages d'octets avec zipalign après la signature invalide immédiatement le bloc de signature v2/v3.
À partir d’Android 11 (API niveau 30) et appliqué strictement sur Android 14 et 15, PackageManager exige deux conditions non négociables pour tout APK ciblant les niveaux de SDK modernes :
- resources.arsc aligné sur 4 octets non compressé : La table de ressources compilée (resources.arsc) doit être stockée non compressée (STORED) et alignée sur une limite de 4 octets afin qu'Android puisse la mapper en mémoire (mmap) directement sans la copier dans la RAM. Exécutez toujours la signature zipalign -p -f -v 4 input.apk aligned.apk avant.
- Bloc de signature v2+ obligatoire : La signature d'un APK ciblant l'API 30+ avec jarsigner (qui n'écrit qu'une signature META-INF/ v1) entraînera le rejet de l'installation par Android 11-15 avec INSTALL_PARSE_FAILED_NO_CERTIFICATES. Utilisez le générateur de commandes interactif ci-dessus pour créer la commande apksigner --v2-signing-enabled=true exacte pour votre magasin de clés, ou vérifiez votre sortie signée dans notre Vérificateur de signature APK.