Introduction
L'inspection du keystore revient constamment pendant le développement et la publication Android :
- Play Console exige SHA1/SHA256
- La configuration Firebase nécessite l'empreinte
- Vérifier qu'un APK est signé avec la bonne clé
Voici une référence pour les commandes que vous utiliserez dans chacune de ces situations.
De base : Voir toutes les informations du keystore
keytool -list -v -keystore your-keystore.jks
Après avoir saisi votre mot de passe, vous verrez une sortie comme celle-ci :
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
Alias name: mykey
Creation date: Jan 1, 2024
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=My App, OU=Development, O=My Company
SHA1: AB:CD:EF:12:34:56:...
SHA256: 01:23:45:67:89:AB:...
Les valeurs SHA1 et SHA256 sont les empreintes que vous enregistrez dans Firebase et Play Console.
Vérifier uniquement le nom d'alias
keytool -list -keystore release.jks
Omettre -v donne une vue compacte — utile quand vous avez juste besoin du nom d'alias et du type d'entrée.
Vérifier quelle clé a signé un APK
Inspecter les informations de signature d'un APK existant :
apksigner verify --print-certs app-release.apk
Ou :
keytool -printcert -jarfile app-release.apk
Cela vous permet de confirmer le SHA1/SHA256 de l'APK — utile pour vérifier "cet APK a-t-il été signé avec la bonne clé ?"
Vérification du debug.keystore
Android Studio génère automatiquement un debug.keystore à un emplacement par défaut.
Emplacement :
C:\Users\<username>\.android\debug.keystore (Windows)
~/.android/debug.keystore (Mac/Linux)
Commande :
# Windows
keytool -list -v -keystore %USERPROFILE%\.android\debug.keystore
# Mac/Linux
keytool -list -v -keystore ~/.android/debug.keystore
Valeurs par défaut :
| Élément | Valeur |
|---|---|
| Mot de passe | android |
| Alias | androiddebugkey |
| Validité | 30 ans |
Vérification de la configuration de signature dans build.gradle
Pour voir quel keystore votre build utilise, regardez la section signingConfigs dans app/build.gradle.
Groovy (build.gradle) :
signingConfigs {
release {
storeFile file("release.jks")
storePassword "xxxxx"
keyAlias "mykey"
keyPassword "xxxxx"
}
}
Kotlin (build.gradle.kts) :
signingConfigs {
create("release") {
storeFile = file("release.jks")
storePassword = System.getenv("STORE_PASSWORD")
keyAlias = "mykey"
keyPassword = System.getenv("KEY_PASSWORD")
}
}
Lire les mots de passe depuis des variables d'environnement plutôt que les coder en dur est l'approche sûre pour les environnements CI/CD.
Si keytool n'est pas trouvé sous Windows
'keytool' is not recognized as an internal or external command
Cette erreur signifie que le répertoire bin du JDK n'est pas dans votre PATH.
Option 1 : Exécuter avec le chemin complet
"C:\Program Files\Java\jdk-17\bin\keytool.exe" -list -v -keystore release.jks
Option 2 : Ajouter au PATH (correction permanente)
- Ouvrir les propriétés système → Variables d'environnement
- Ajouter
C:\Program Files\Java\jdk-17\binàPath - Redémarrer votre terminal
Option 3 : Utiliser le JDK fourni avec Android Studio
"C:\Program Files\Android\Android Studio\jbr\bin\keytool.exe" -list -v -keystore release.jks
Android Studio est livré avec un JDK, donc si vous l'avez installé, cela fonctionne toujours.
Résumé
| Objectif | Commande |
|---|---|
| Voir toutes les infos keystore | keytool -list -v -keystore xxx.jks |
| Vérifier uniquement le nom d'alias | keytool -list -keystore xxx.jks |
| Vérifier la signature APK | apksigner verify --print-certs xxx.apk |
| Vérifier debug.keystore | keytool -list -v -keystore %USERPROFILE%\.android\debug.keystore |
La prochaine fois que vous aurez besoin de SHA1/SHA256 pour la configuration Firebase ou Play Console, ces commandes vous y mèneront rapidement.