* J'ai reformulé le message depuis le premier post *
Lorsque j'essaie d'exécuter une version apk récemment générée, le message d'erreur "l'apk de votre variante actuellement sélectionnée ... n'est pas signée". Ceci est dans le popup Edit Configuration. Voici mes étapes:
Alors, pourquoi cette erreur? L'APK généré semble être valide. Je l'ai posté avec succès sur l'Android Store (test alpha uniquement) et vérifié que les vidages de pile sont obfusqués.
Ce que je ne peux pas faire, c'est le télécharger (étape 6 ci-dessus) sur mon appareil. Je suppose que ça va puisque je peux très bien télécharger la version de débogage.
(*) Android Studio définit par défaut la sortie de la version apk dans un répertoire plus élevé, probablement plus pratique. Cependant, je trouve plus difficile de gérer la cohérence des fichiers générés quand ils sont dispersés, je préfère donc tous les apks générés au même endroit.
Définir la configuration de la signature dans la structure du projet.
Run (ou Debug) app semble utiliser des apks construits avec "Buiild -> Build APK". Donc, nous devrions définir la configuration de la signature si les variantes de construction du module d'application sont "release".
Essayez d'ajouter ceci dans votre fichier de construction:
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
}
}
First, Créez un fichier de clés s'il n'y en a pas.
Secondemet à jour le fichier fichier de génération de version de l'applicationen quelque chose comme celui-ci pour inclure la configuration de signature).
Android {
signingConfigs {
config {
keyAlias 'mykeyalias'
keyPassword 'Android'
storeFile file('/Users/yourname/path/to/the/Android/project/folder/Android_project_folder_name/app/debug.keystore')
storePassword 'Android'
}
}
buildTypes {
debug {
applicationIdSuffix = ".debug"
versionNameSuffix "-debug"
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
}
Third, générez et exécutez l'application, c'est fait.
J'ai eu le même problème s'est avéré j'ai mal configuré la propriété signingConfigs
.
Plus précisément, je pensais que je n'avais pas de mot de passe pour la clé où je l'avais définie. Après avoir ajouté les informations manquantes, cela a fonctionné.
signingConfigs {
config {
keyAlias 'key0'
storeFile file('C:/Users/xxx/xxx/keystore/xxx.jks')
storePassword '123'
keyPassword '123' // this was missing
}
}
Dans https://developer.Android.com/studio/publish/app-signing#secure-shared-keystore il est écrit que vous ne devez pas conserver les informations d'identification dans build.gradle
et VCS. Créez donc un fichier de configuration de signature (Build> Generate Signed APK ...), puis faites-le.
Créez un fichier nommé
keystore.properties
dans le répertoire racine de votre projet . Ce fichier doit contenir vos informations de signature, comme suit: :storePassword=myStorePassword keyPassword=mykeyPassword keyAlias=myKeyAlias storeFile=myStoreFileLocation
Dans le fichier build.gradle de votre module, ajoutez du code pour charger votre fichier
keystore.properties
avant le blocAndroid {}
.// Create a variable called keystorePropertiesFile, and initialize it to your // keystore.properties file, in the rootProject folder. def keystorePropertiesFile = rootProject.file("keystore.properties") // Initialize a new Properties() object called keystoreProperties. def keystoreProperties = new Properties() // Load your keystore.properties file into the keystoreProperties object. keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) Android { ... }
Vous pouvez faire référence aux propriétés stockées dans
keystoreProperties
en utilisant la syntaxekeystoreProperties['propertyName']
. Modifiez le blocsigningConfigs
Du fichierbuild.gradle
de votre module pour faire référence aux informations de signature Stockées danskeystoreProperties
en utilisant cette syntaxe.Android { signingConfigs { config { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } ... }
Facultativement, dans build.gradle
, vous pouvez ajouter:
buildTypes {
release {
...
signingConfig signingConfigs.config
}
}
Maintenant, vous pouvez faire un apk signé. N'oubliez pas d'exclure keystore.properties
de VCS.