Signature de code pour Android

Dans cet article, vous allez découvrir comment coder la signature pour Android (APK). Vous devrez signer votre application pour Android si vous avez sélectionné Android comme l’une des plates-formes lors de la création et de la création de votre projet d’inclusion dans un wrapper.

Important

Si vous souhaitez plutôt signer une application AAB pour la distribution Google Play, reportez-vous à Signer votre application.

Préparation de votre ordinateur

Vous devrez également fournir les informations suivantes pour commencer :

Génération de clés

Notes

Passer à signer le package APK si vous avez déjà généré des clés et un hachage de signature lors de la création de l’enregistrement de l’application.

Nous utiliserons keytool.exe (disponible après l’installation de Android Studio, à partir de l’emplacement du dossier « Lecteur:\Program Files\Android\Android Studio\jre\bin\keytool.exe ») pour créer un certificat pour signer le package d’application. Keytool est utilisé pour gérer un magasin de clés (base de données) de clés cryptographiques, de chaînes de certificats X.509 et de certificats de confiance.

Pour générer une clé, ouvrez une invite de commande et exécutez la commande suivante :

keytool -genkey -alias SIGNATURE_ALIAS -keyalg RSA -keystore PATH_TO_KEYSTORE -keysize 2048 -validity 10000

Paramètres :

  • genkey – commande pour générer une clé.
  • alias : indique l’alias à utiliser à l’avenir pour faire référence à l’entrée du magasin de clés contenant les clés qui sont générées.
  • keyalg – nom de l’algorithme de clé.
  • keystore – nom du magasin de clés que vous utilisez.
  • keysize – taille de chaque clé à générer.
  • validity – validité de la clé en nombre de jours.

Exemple :

  • Si vous préparez Key Vault, PATH_TO_KEYSTORE devrait avoir l’extension .pfx.

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.pfx -keysize 2048 -validity 10000

  • Si vous préparez une signature manuelle, PATH_TO_KEYSTORE doit avoir l’extension .jks.

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.jks -keysize 2048 -validity 10000

Une capture d’écran avec la commande keytool utilisant les paramètres de l’exemple ci-dessus.

Générer le hachage de signature

Notes

Passer à signer le package APK si vous avez déjà généré des clés et un hachage de signature lors de la création de l’enregistrement de l’application.

Après avoir généré la clé, nous utiliserons la commande exportcert dans keytool pour exporter le certificat du magasin de clés.

keytool -exportcert -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE | openssl sha1 -binary | openssl base64

Paramètres :

  • exportcert – lit depuis le magasin de clés le certificat associé à l’alias et le stocke dans le fichier cert_file. Lorsqu’aucun fichier n’est spécifié, le certificat est sorti sur stdout.
  • alias – alias utilisé lors de la génération des clés précédemment.
  • keystore – nom du magasin de clés que vous utilisez.
  • openssl – génère la clé SHA1 pour Android.

Ajoutez le hachage de signature généré dans l’URI de redirection pendant l’enregistrement de l’application.

Convertir manuellement l’hexadécimal SHA1 en hachage de signature encodé en Base64

Vous pouvez voir l’erreur suivante si votre hachage de signature n’est pas correctement encodé ou inacceptable dans le portail Azure :

« Le hachage de signature doit être SHA1 encodé en base64. »

Lorsque cette erreur apparaît, essayez plutôt de générer le hachage de signature en procédant comme suit :

  1. Exécutez keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE pour répertorier les informations de certificat en mode détaillé.
  2. Copiez la valeur SHA1 sous la section Empreintes de certificat à partir du résultat. Assurez-vous de ne copier que la valeur hexadécimale.
    Par exemple : EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
  3. Utilisez n’importe quel convertisseur « Hexadécimal vers Base64 » disponible pour convertir la valeur hexadécimale de l’empreinte de certificat copiée en valeur codée en Base64.
    Exemple de la valeur encodée Base64 : 8CPPeLaz9etdqQyaQubcqsy2Tw=
  4. Copiez la valeur encodée en Base64 générée en tant que Hachage de signature dans le portail Azure pendant l’enregistrement de l’application.

Signature du package APK

Pour signer le package APK, nous utiliserons l’outil apksigner. Cet outil vous permet de signer des APK et de vous assurer que la signature du package APK sera vérifiée avec succès sur toutes les plates-formes Android prises en charge par les APK.

Rechercher votre apksigner

  1. Vérifiez le chemin d’accès au SDK Android dans Android Studio.

  2. Sélectionnez Outil > Gestionnaire de SDK > Emplacement du SDK Android.

    Si vous utilisez iOS, vérifiez le fichier apksigner à partir du répertoire buildTools Version :

    Accédez au répertoire SDK >build-tools > buildToolsVersion > lib et vérifiez le fichier apksigner.jar

Utiliser le fichier apksigner

Exécutez la commande suivante pour utiliser apksigner et signez le package :

apksigner.bat sign --ks PATH_TO_KEYSTORE --ks-key-alias KEY_ALIAS PATH_TO_APK

Paramètres :

  • ks – chemin d’accès au magasin de clés.
  • ks-key-alias – chemin d’accès à l’alias de clé vers le fichier APK.

À l’invite, entrez le mot de passe.

Plus d’informations : Outils de ligne de commande Android Studio : apksigner

Distribuer l’application

Vous pouvez héberger le package sur un service de distribution tel que App Center. Pour distribuer à l’aide de Microsoft Intune, consultez Ajouter une application cœur de métier Android à Microsoft Intune. Pour en savoir plus sur l’octroi d’un accès à une application au service Intune App Protection, consultez Accordez à votre application l’accès au service Intune App Protection.

Voir aussi