Ok nous y voilà. La façon la plus fréquente de créer un apk non signé est d’utiliser la ligne de commande:
./gradlew assemble<$Flavor><$BuildType>
C’est assez similaire pour le bundle d’app:
./gradlew bundle<$Flavor><$BuildType>
par exemple:
./gradlew assembleProdRelease // building apk./gradlew bundleProdRelease // building app bundle
Typiquement, ce sont les commandes pour construire un apk/app bundle, mais les gens ajoutent souvent le signingConfig à build.gradle pour faire la partie signature en même temps.
Donc, en supprimant cette partie dans le fichier build.gradle, nous sommes bons pour créer un bundle apk/app non signé.
L’apk construit sera hébergé dans : build/outputs/apk/flavor/buildtype/
Le bundle d’app sera dans : build/outputs/bundle/flavorBuildType/
Notez que cet apk ne peut pas être installé dans votre appareil sans être signé. Vous obtiendrez une erreur si vous essayez de l’installer :
Pour signer cet apk ou ce bundle d’app, nous utilisons d’abord keytool pour générer un keystore (si vous n’en avez pas), puis nous utilisons jarsigner ou apksigner pour signer l’apk ou le bundle d’app avec le keystore généré.
Générer le keystore:
Exécuter la commande suivante:
keytool -genkey -v -keystore <release_keystore.keystore> -alias <alias_name> -keyalg RSA -keysize 2048 -validity 10000
Puis on vous demandera quelques informations comme d’habitude mais les plus importantes sont le mot de passe du keystore et le mot de passe de l’alias. Une fois le keystore généré, nous allons le signer avec différentes options.
Signer un apk/app bundle avec jarsigner
Supposons que vous ayez déjà installé JDK.
jarsigner -keystore <keystore_file> -storepass <storepass> -keypass <keypass> <unsigned_apk_file> <alias_name>
Cette commande ne génère aucun nouveau fichier mais l’apk non signé deviendra signé sans aucun changement externe visible (nom et taille du fichier).
Avec un app bundle, la commande est exactement la même, il suffit de changer le chemin du fichier apk en fichier app bundle.
En fait, jarsigner est un outil général qui sert à signer un fichier jar. L’outil le plus adaptable pour signer un apk est apksigner qui fonctionne de manière similaire à jarsigner, sauf qu’il ne supporte pas la signature d’un app bundle.
Signer un apk avec apksigner
Important : comme son nom l’indique, apksigner est seulement un signataire d’apk, il ne peut pas signer un App Bundle
La syntaxe pour cela est aussi simple que celle de jarsigner:
apksigner sign --ks <keystore_file> <apk_file>
Après avoir exécuté cette commande, il vous sera demandé le mot de passe du keystore et le mot de passe de l’alias. Entrez ces informations puis nous avons terminé.