J'essaie de générer un fichier APK signé. J'ai mon fichier password.keystore situé dans\Dictionary\Android\app et quand j'ai exécuté gradlew assembleRelease
sur cmd, l'erreur:
L'exécution a échoué pour la tâche ': app: validateSigningRelease'.
Fichier de clés non défini pour la signature de la version de configuration
Où devrais-je stocker mon fichier password.keystore? Parce que quand j'ai commenté la if (project.hasProperty("password.keystore") {
, cela semble fonctionner, mais avec l'erreur suivante:
Impossible de traiter l'événement entrant 'ProgressComplete' (ProgressCompleteEvent)
Comment dois-je écrire ma condition si ou où dois-je stocker le fichier password.keystore?
Le code source est le suivant:
signingConfigs {
release {
if (project.hasProperty("password.keystore")) {
storeFile file("password.keystore")
storePassword "password"
keyAlias "username"
keyPassword "password"
}
}
}
Le fichier keystore doit se trouver dans le dossier Android/app .
Le message "Le fichier de clés non défini pour la signature de la version de configuration" doit faire en sorte qu'il n'y ait pas de signatureConfig dans le fichier Android/app/build.gradle.
buildTypes {
release {
// other settings
signingConfig signingConfigs.release
}
}
Pour tester, vous pouvez simplement coder en dur les paramètres dans Android/app/build.gradle, au lieu de les définir dans gradle.properties. Cela corrigeait pour moi le problème avec 'Keystore a été falsifié ou le mot de passe était incorrect'
signingConfigs {
release {
//if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file("key.keystore")
storePassword "****"
keyAlias "myKey"
keyPassword "****"
// }
}
}
J'ai trouvé une solution!
Si vous avez suivi les instructions officielles de Réagissez Native , comme moi, vous ajoutez ce qui suit à votre gradle.properties
MYAPP_RELEASE_STORE_FILE=<your-app>.keystore
MYAPP_RELEASE_KEY_ALIAS=<keystore-alias>
MYAPP_RELEASE_STORE_PASSWORD=<password>
MYAPP_RELEASE_KEY_PASSWORD=<password>
Et puis vient la partie que j'ai totalement mal comprise.
Dans le fichier app/build.gradle
-, vous êtes pas censé remplacer les chaînes. Si votre gradle.properties
est semblable à celui que j'ai collé, votre app/build.gradle
devrait ressembler à ceci:
signingConfigs {
release {
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
}
Ce que j’avais fait à l’origine, c’est que j'ai remplacé les chaînes (c'est-à-dire 'MYAPP_RELEASE_STORE_FILE' par le chemin d'accès à mon fichier de magasin de clés), mais vous n'êtes pas censé remplacer les variables. Je suppose que vous pouvez voir le lien entre les chaînes que nous avons créées dans gradle.properties
et le release-config que nous avons créé dans app/build.gradle
.
N'oubliez pas de placer également votre fichier .keystore
- dans Android/app
.
J'ai eu exactement le même problème. J'ai oublié d'éditer le fichier gradle.properties. Ça devrait ressembler à ça:
Android.useDeprecatedNdk=true
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
Après avoir exploré toutes les réponses concernant ce problème, aucune des réponses n’a été utile!
Donc essayé ci-dessous l'expérience et ça a aidé !!!!
Placez le fichier my-release-key.keystore
sous le répertoire Android dans le dossier de votre projet.
En fait, je préfère stocker ces paramètres en dehors du référentiel d’application à l’aide de variables d’environnement car il contient des informations sensibles telles que mot de passe, etc.
signingConfigs {
release {
if (System.env.MYAPP_RELEASE_STORE_FILE != null) {
storeFile file(System.env.MYAPP_RELEASE_STORE_FILE)
storePassword System.env.MYAPP_RELEASE_STORE_PASSWORD
keyAlias System.env.MYAPP_RELEASE_KEY_ALIAS
keyPassword System.env.MYAPP_RELEASE_KEY_PASSWORD
}
}
}
Une fois que cela est fait, je peux juste charger un script bash qui a les détails comme
# path to my keystore
export MYAPP_RELEASE_STORE_FILE=/path/to/key.file
# ...
De cette façon, la configuration de la signature est complètement isolée du repo. Cela vous empêche de faire des commits accidentels avec vos secrets.
project.hasProperty
recherchera dans votre fichier gradle.properties
une variable nommée password.keystore.
Allez dans ~/.gradle
et voyez si vous avez un fichier gradle.properties
; si c'est le cas, assurez-vous que la variable password.keystore
est présente, elle devrait pointer vers votre fichier de clés: password.keystore=password.keystore
.
Bien que vous deviez nommer quelque chose de différent, comme MYAPP_RELEASE_STORE_FILE=password.keystore
. Ensuite, lorsque vous exécuterez ./gradlew assembleRelease
, votre projet aura la propriété recherchée et ce qui suit résoudra true et permettra à gradlew de définir toutes les propriétés deingerConfigs.release:
if (project.hasProperty(MYAPP_RELEASE_STORE_FILE)) {
storeFile file(...)
storePassword your_password_property
...
}
Assurez-vous d’avoir placé votre fichier .keystore dans le dossier de l’application et effectuez les changements de niveau comme ci-dessous:
signingConfigs {
release {
storeFile file(RELEASE_STORE_FILE)
storePassword RELEASE_STORE_PASSWORD
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD
}
}
Assurez-vous que le nom d'alias utilisé dans gradle.properties
est identique à celui utilisé lors de la création de keystore
(en utilisant keytool
)