web-dev-qa-db-fra.com

Problème lors de la signature de la version Android "Échec de lecture de la clé à partir du magasin de clés"

J'utilise gradle (assembleRelease) pour générer la version apk.

J'ai sauvegardé le fichier de clés dans project/app/filename.keystore (dans l'application)

J'ai spécifié des détails relatifs à la connexion au fichier gradle.properties

RELEASE_STORE_FILE=filename.keystore
RELEASE_STORE_PASSWORD=****
RELEASE_KEY_ALIAS=alias
RELEASE_KEY_PASSWORD=****

Mon fichier build.gradle contient les éléments suivants liés à la signature 

signingConfigs {
        release {

            storeFile file(RELEASE_STORE_FILE)
            storePassword RELEASE_STORE_PASSWORD
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_KEY_PASSWORD
        }
    }

J'ai spécifié des configurations de signature dans le même fichier gradle que ci-dessous

 buildTypes {
    release {
        signingConfig signingConfigs.release
    }
 }

Cependant, quand j'essaye de créer la version release, je continue à avoir l'erreur suivante 

Error:Execution failed for task ':app:package<flavor>Release'.
> Failed to read key from keystore

J'ai essayé de suivre  

  • Donner un mot de passe incorrect pour voir si le fichier peut être trouvé. Donne l'erreur suivante avec le chemin correct car je suppose que le fichier peut être trouvé.

    Impossible de lire la clé du magasin "": le magasin de clés a été falsifié ou le mot de passe est incorrect

Appréciez votre contribution!

13
HasaniK

Mon problème était que j'avais entré une keyAlias aléatoire. En essayant de signer l'apk en utilisant le IDE (IntlliJ Idea et Android Studio: menu Construire -> générer un APK signé), en cliquant sur le bouton en forme d'ellipse (...) situé en regard du champ de saisie du alias de clé que j'avais précédemment défini pour mon magasin de clés. Vérifiez bien que vous ne saisissez pas un mot de passe aléatoire ad-hoc ni un keyAlias ​​pour votre magasin de clés, car ils doivent être identiques au mot de passe et à l'alias de clé que vous avez définis pour votre magasin de clés lors de sa création.

Si vous avez oublié le mot de passe ou l'alias de clé, j'ai bien peur que vous deviez créer un nouveau magasin de clés, car vous ne pouvez pas lire votre magasin de clés sans ceux-ci. Je suggère de sauvegarder ces deux propriétés (et de joindre votre fichier de magasin de clés) dans un gestionnaire de mots de passe comme Lastpass, car vous en aurez besoin à l'avenir.

26
Javad Sadeqzadeh

Mon problème était que j'avais un espace supplémentaire dans le fichier gradle.properties. Donc, si vous avez des entrées comme celle-ci:

MYAPP_RELEASE_KEY_ALIAS=my-key-alias(\s)(\r\n)

Assurez-vous qu'il n'y a pas d'espaces de début pour toutes les entrées:

MYAPP_RELEASE_KEY_ALIAS=my-key-alias(\r\n)
5
Alappin

J'utilisais des guillemets avec alias et mots de passe, comme indiqué ci-dessous

storePassword="spass"
keyAlias="kalias"
keyPassword="kpass"

Supprimer les guillemets a résolu mon problème

storePassword=spass
keyAlias=kalias
keyPassword=kpass
5
Vasudev

Je n'ai pas complètement résolu ce problème, mais je pense qu'il est lié aux entrées suivantes dans 'Telegram\TMessagesProj\build.gradle':

signingConfigs {
    debug {
        storeFile file("config/release.keystore")
        storePassword RELEASE_STORE_PASSWORD
        keyAlias RELEASE_KEY_ALIAS
        keyPassword RELEASE_KEY_PASSWORD
    }

    release {
        storeFile file("config/release.keystore")
        storePassword RELEASE_STORE_PASSWORD
        keyAlias RELEASE_KEY_ALIAS
        keyPassword RELEASE_KEY_PASSWORD
    }
}

Notez que la configuration DEBUG est définie sur nous comme un 'release.keystore'.

Les mots de passe et les alias sont stockés dans 'Telegram\gradle.properties' et j'ai réussi à les remplacer par ceux que j'utilise lors de la signature d'APK et en modifiant la ligne de débogage pour qu'elle pointe vers votre propre clé de signature (créée via Android Studio).

Par exemple. Changer la ligne à

déboguer { Fichier storeFile ("chemin/vers/votre/signature/clé/ApkSigning.jks") ...}

Et définissez les mots de passe et les alias appropriés dans le fichier de propriétés Gradle.

J'espère que cela pourra aider.

1
asnake