Android compare la signature du package actuel avec debug.keystore
Que tout ce que nous faisons, j'ai une application qui est signé par le débogage.fichier de clés (par défaut) lorsqu'il est en mode de développement (construction). Quand il va à la production, nous avons sign avec notre clé privée.
Est-il possible de déterminer au moment de l'exécution du package actuel est signé avec debug.fichier de clés (il est en mode de développement) ou est signé avec notre clé privée est en mode de production).
J'ai essayé quelque chose comme
PackageManager packageManager = getPackageManager();
try {
Signature[] signs = packageManager.getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES).signatures;
for (Signature signature : signs) {
Log.d(TAG, "sign = " + signature.toCharsString());
}
} catch (NameNotFoundException e) {
e.printStackTrace();
}
Je ne sais pas quoi faire ensuite? Est-ce la bonne façon de le faire? Comment faire pour obtenir comparable de débogage.fichier de stockage des clés de signature?
Je sais qu'il existe Empreinte MD5 keytool -list -keystore ~/.android/debug.keystore
mais dans la Signature de la classe, il n'est pas "empreinte digitale md5"-comme méthode.
Je veux faire cela à cause de MapView Clé, l'exploitation forestière, LicenseChecker et des trucs comme ça.
source d'informationauteur zmeda
Vous devez vous connecter pour publier un commentaire.
La signature en
PackageInfo
ne semble pas être bien nommée depuis tha champ ne contient pas le paquet de signature, mais le signataire du certificat X509 de la chaîne. Il faut noter que, la plupart du temps), cette chaîne semble être limité à un seul certificat auto-signé.Selon le développeur Android page la Signature de Vos Applications le débogage de signature de certificat est généré avec ce nom:
CN=Android Debug,O=Android,C=US
Par conséquent, il est facile de tester si la demande a été signée en mode débogage:
Basé sur Jcs réponsenous nous en servons pour trouver au moment de l'exécution qui a construit l'exécution du package:
Pour tout certificat, il vous suffit ensuite de trouver la valeur de hachage une fois et l'ajouter à la liste.
La façon la plus simple de "trouver la valeur de hachage une fois" peut-être juste ajouter une fenêtre de toast avant de l'instruction switch qui affiche
modulusHash
de compiler votre application, exécuter, écrire la table de hachage, retirer le pain de code et ajouter de la valeur de hachage de la liste.Sinon, quand je l'ai fait, j'ai créé une petite application passe-partout avec une activité unique et un seul
TextView
avec l'IDtv
dans la page principale, mettre ceci dans l'activité:(changement
com.stackexchange.marvin
pour le nom de votre application), compilé cette mini-application, et envoyé l'APK à tous les développeurs, en leur demandant d'exécuter sur leur dev appareil et laissez-moi savoir à l'affiche de hachage.