web-dev-qa-db-de.com

Problem beim Signieren von Android Release Build "Schlüssel konnte nicht aus Schlüsselspeicher gelesen werden"

Ich benutze gradle (assembleRelease) , um die Release-Apk zu generieren.

Ich habe die Keystore-Datei in project/app/filename.keystore (in der Anwendung) gespeichert.

Ich habe Details zum Anmelden in der Datei gradle.properties angegeben

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

Meine build.gradle -Datei hat folgendes mit der Signatur zu tun 

signingConfigs {
        release {

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

Ich habe Signierungskonfigurationen in derselben Gradle-Datei wie unten angegeben

 buildTypes {
    release {
        signingConfig signingConfigs.release
    }
 }

Wenn ich jedoch versuche, den Release-Build zu erstellen, erhalte ich immer einen Fehler 

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

Ich habe versucht folgende  

  • Geben Sie ein falsches Kennwort ein, um zu sehen, ob die Datei gefunden werden kann. Gibt den folgenden Fehler mit dem richtigen Pfad aus, da ich davon ausgehe, dass die Datei gefunden werden kann.

    Schlüssel konnte nicht aus dem Speicher gelesen werden "": Keystore wurde manipuliert oder das Passwort war falsch.

Schätzen ihre eingaben!

13
HasaniK

Mein Problem war, dass ich eine zufällige keyAlias eingegeben hatte. Beim Versuch, die apk mit IDE zu signieren (Menü IntlliJ Idea und Android Studio: Build -> signierte APK generieren), klicken Sie auf den Ellipsen-Button (...) neben dem Textfeld für die Eingabe des Schlüsselalias Schlüsselalias, den ich zuvor für meinen Schlüsselspeicher festgelegt hatte. Vergewissern Sie sich noch einmal, dass Sie keine zufälligen Ad-hoc-Passwörter und keyAlias ​​für Ihren Keystore eingeben, da diese mit dem Passwort und dem Schlüssel-Alias ​​identisch sein sollten, den Sie bei der Erstellung des Keystores festgelegt haben.

Wenn Sie entweder das Kennwort oder den Schlüsselalias vergessen haben, müssen Sie leider einen neuen Schlüsselspeicher erstellen, da Sie den Schlüsselspeicher nicht ohne diesen Schlüssel lesen können. Ich empfehle Ihnen, diese beiden Eigenschaften (und Ihre Keystore-Datei) in einem Passwort-Manager wie Lastpass zu speichern, da Sie sie in Zukunft benötigen.

26

Mein Problem war, dass ich in der Datei gradle.properties zusätzlichen Leerraum hatte. Wenn Sie also folgende Einträge haben:

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

Stellen Sie sicher, dass keine führenden Leerzeichen für alle Einträge vorhanden sind:

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

Ich habe doppelte Anführungszeichen mit Alias ​​und Passwörtern verwendet (siehe unten)

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

Das Entfernen von Anführungszeichen hat mein Problem gelöst

storePassword=spass
keyAlias=kalias
keyPassword=kpass
5
Vasudev

Ich habe dieses Problem nicht vollständig behoben, aber ich denke, es hängt mit den folgenden Einträgen in 'Telegramm\TMessagesProj\build.gradle' zusammen:

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
    }
}

Beachten Sie, dass die DEBUG-Konfiguration auf 'release.keystore' gesetzt ist.

Die Passwörter und der Alias ​​werden in 'Telegram\gradle.properties' gespeichert. Ich hatte einige Erfolge, indem ich sie in die verwandelte, die ich beim Signieren von APKs verwende, und die Debug-Zeile so ändert, dass sie auf Ihren eigenen Signaturschlüssel verweist (erstellt mit Android Studio).

Z.B. Ändern Sie die Zeile in

debug { storeFile-Datei ("Pfad/zu/Ihrem/signing/key/ApkSigning.jks") ...}

Und legen Sie die entsprechenden Kennwörter und Aliasnamen in der Eigenschaftendatei fest.

Hoffentlich hilft das.

1
asnake