app-release-unsigned.apk ist nicht signiert


199

Ich habe die Zip-Datei einer Android-App auf Github heruntergeladen und versuche, sie auszuführen, erhalte jedoch einen Dialog mit dieser Nachricht

app-release-unsigned.apk is not signed. Please configure the signing information for the selected flavor using the Project Structure dialog.

Ich benutze Android Studio. Was soll ich machen?

Antworten:


437

Wenn jemand Release Build mit Android Studio debuggen möchte , gehen Sie folgendermaßen vor:

  1. Stellen Sie die Build-Variante auf den Release-Modus.

Geben Sie hier die Bildbeschreibung ein

  1. Klicken Sie mit der rechten Maustaste auf die App im linken Navigationsbereich und klicken Sie auf Moduleinstellungen öffnen .

  2. Gehen Sie zur Registerkarte Signieren. Fügen Sie eine Signaturkonfiguration hinzu und geben Sie Informationen ein. Wählen Sie auch Ihren Schlüsselbund.

Geben Sie hier die Bildbeschreibung ein

  1. Wechseln Sie zur Registerkarte Build Type . Wählen Sie den Freigabemodus und stellen Sie Folgendes ein:

-Debuggable to true .

- Konfigurieren Sie die Konfiguration . (Die, die Sie gerade erstellt haben).

Geben Sie hier die Bildbeschreibung ein

Synchronisieren Sie Ihren Gradle. Genießen!


3
Sollten wir Debuggable auf false setzen, wenn wir die Release-APK für prod generieren? oder macht das studio das alleine?
Ishaan Garg

7
@IshaanGarg Sie sollten debuggable auf false setzen, während Release apk
NightFury

1
Sie würden denken, es würde standardmäßig das erste erstellte Wunder sein, warum es nicht funktioniert ... vielleicht wäre es für einige schlecht, Pakete zu signieren, die sie nicht signieren wollten ... aber danke, Mann, ich habe vergessen, den Build-Typ festzulegen " Signing Config "und bis zum Screenshot erinnerte ich mich nicht
CrandellWS

14
Es besteht KEINE NOTWENDIGKEIT , Debuggable auf true zu setzen (es sei denn, dies ist wirklich beabsichtigt).
Computingfreak

4
Sie sollten sich jedoch bewusst sein, dass nach dem Festlegen einer Konfiguration für den Build-Typ alle Ihre Schlüsselinformationen (einschließlich der Kennwörter) in der Gradle-Datei angezeigt werden ...
Jacob.B

95

Stellen Sie sicher , dass die Build-Variante in Android Studio auf Debug (und nicht auf Release ) eingestellt ist (überprüfen Sie das Fenster " Build-Varianten" ).

Wenn Debug eingestellt ist, sollte die App automatisch mit dem automatisch generierten Debug-Keystore signiert werden, ohne dass die Build-Skripte bearbeitet werden müssen.

Sie müssen jedoch einen bestimmten Schlüsselspeicher für die Freigabe erstellen und konfigurieren.

Offizielle Dokumentation zu Debug- und Release-Modi: https://developer.android.com/tools/publishing/app-signing.html


53

Signieren Sie Ihren Build immer mit Ihrem build.gradle DSL-Skript wie folgt:

    android {
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }
}

Wenn Sie mehr über das Gradle-Build-System von Android Studio erfahren möchten, besuchen Sie einfach:

Gradle Plugin Benutzerhandbuch


Aber warum muss ich das tun? In der Anleitung heißt es: "Standardmäßig gibt es eine Debug-Konfiguration, die für die Verwendung eines Debug-Keystores mit einem bekannten Kennwort und einem Standardschlüssel mit einem bekannten Kennwort eingerichtet ist." Ich habe keine Probleme mit anderen Anwendungen.
Andrew

Ob Ihr Passwort in Ordnung ist und debug.keystore erreichbar ist, weiß ich nicht. Die üblichen Probleme, die ich in der Vergangenheit dabei gesehen habe, sind Dateiberechtigungen oder Verzeichnisberechtigungen. Möglicherweise werden in dem von Ihnen heruntergeladenen Projekt lokale Android Studio-Dateien gespeichert, die auf einen anderen Debug-Keystore als Ihren verweisen. In jedem Fall muss in Ihrem Gradle-Protokoll der Pfadfehler angezeigt werden. Fügen Sie dieses Protokoll hinzu, um weitere Hilfe zu erhalten.
Martin Revert

Hmmm, funktioniert auch bei mir nicht. Keine Gradle-Fehler, aber immer noch der Signaturfehler (und er zeigt auf meine Schlüsseldatei).
Brian Knoblauch

Hallo Brian! Könnten Sie versuchen, Ihren debug.keystore zu löschen? Starten Sie dann ein neues Dummy-Projekt und es muss ein neuer Schlüsselspeicher generiert werden. Öffnen Sie danach Ihr eigentliches Projekt erneut und versuchen Sie es. Es ist das einzige, was ich empfehlen kann, wenn etwas anderes, das zuvor kommentiert wurde, fehlschlägt.
Martin Revert

1
Befindet sich nicht debug.keystoreim .androidOrdner? Vielleicht möchten Sie den vollständigen Pfad angeben, es sei denn, Sie haben ihn in Ihr Projekt verschoben
Gokhan Arik

35

Ich konnte signierte APK erfolgreich debuggen. Gehen Sie wie folgt vor: -

  1. Wählen Sie in der ToolBar "Build Variant" die Version "release"
  2. Im Build.gradlefür den Modulsatz debuggable truefür Release-Build-Typ
  3. Gehen Sie zu Datei-> Projektstruktur-> auf der Registerkarte Signieren, füllen Sie alle Informationen aus-> Unter Registerkarte Aromen-> Wählen Sie Signierkonfiguration, die Sie gerade erstellt haben
  4. Setzen Sie die Haltepunkte
  5. Führen Sie die Anwendung im Debug-Modus aus

Ich arbeite nicht für mich. Ich habe debuggable für die Staging-Variante auf true gesetzt, muss aber vor dem Erstellen die apk signieren.
Nishant Tanwar

18

Wenn jemand eine separate Build-Variante mit Android Studio 3.5 debuggen und freigeben möchte, führen Sie die folgenden Schritte aus: 1. Setzen Sie die Build-Variante auf den Freigabemodus.

Variante erstellen

  1. Gehen Sie zu Datei >> Projektstruktur
  2. Wählen Sie Module und dann Signing Config
  3. Klicken Sie unter Signierkonfiguration auf das Plus-Symbol

Signierkonfiguration

  1. Wählen Sie den Release-Bereich und geben Sie Ihre Release-App-Informationen ein, dann Übernehmen und OK.

Einloggen

  1. Gehen Sie zu Ihrer App-Ebene build.gradleund ändern Sie Ihren buildTypesAbschnitt "Release" wie unten abgebildet. Screenshot.

Finale

Führen Sie dann Ihr Projekt aus. Viel Spaß beim Codieren.


Woher bekommen Sie die .jks-Datei?
Marc Alexander

@MarcAlexander hier ist kein .jks Code Screenshot zu generieren. Sie können eine .jks-Datei aus dem Android Studio-Editor generieren.
Shohel Rana

13

signingConfigs sollte vor buildTypes stehen

signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }

12

Wenn Sie die App im Debug- Modus ausführen möchten

1) Schauen Sie sich die linke Seite unten an. Über Favoriten befinden sich Build-Varianten

2) Klicken Sie auf Varianten erstellen. Klicken Sie auf Release und wählen Sie Debug

es funktioniert perfekt !!!


9

Das von Ihnen heruntergeladene App-Projekt enthält möglicherweise signierte Informationen in der Datei build.gradle. Wenn Sie Codes wie diese gesehen haben:

buildTypes {
    debug {
        signingConfig signingConfigs.release
    }
    release {
        signingConfig signingConfigs.release
    }
}

Sie können sie löschen und erneut versuchen.


8

Für gradle Kotlin dsl

signingConfigs {
    create("releaseConfig") {
        storeFile = file("your keystore file path")
        storePassword = "storePassword"
        keyAlias = "keyAlias"
        keyPassword = "keyPassword"
    }
}
buildTypes {
    getByName("release") {
        signingConfig = signingConfigs.getByName("releaseConfig")
        isMinifyEnabled = true
        isShrinkResources = true
        proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
    }
}

6

Aus Sicherheitsgründen können Sie keine nicht signierte apk auf Android installieren. Wenn Sie also nur die nicht signierte apk haben, müssen Sie sie unterschreiben. So geht's: Link

Beachten Sie, dass Sie die apk mit einem selbstsignierten Zertifikat signieren können.

Eine Alternative kann sein:

  • um die signierte apk herunterzuladen falls verfügbar.
  • Um die Quellen herunterzuladen, kompilieren Sie sie (mit Android-Studio oder gradle oder ...). Es werden mehrere Apks erstellt und eine davon wird mit Ihrem Debug-Schlüssel signiert (und Sie können ihn installieren).

1
Ich bin mir nicht sicher, ob ich es verstehe. Ich habe die Zip-
Datei

Sie müssen also eine signierte Version kompilieren. Normalerweise wird die signierte Version zur gleichen Zeit erstellt und befindet sich im selben Verzeichnis wie die nicht signierte.
Ben75

Wenn ich eine signierte apk generiere, funktioniert es, aber ich kann es nicht jedes Mal tun, wenn ich die App testen muss. Ich vermisse hier etwas, ich möchte nur die App ausprobieren, wie ich es mit meinen eigenen Anwendungen
mache

5

Mein Problem wurde gelöst, indem die von Stéphane vorgeschlagene Build-Variante geändert wurde. Wenn jemand Schwierigkeiten hatte, die "Build-Varianten" zu finden, wie ich es hier getan habe, ist ein Screenshot, in dem Sie sie finden können.

Geben Sie hier die Bildbeschreibung ein


1
Ich habe Probleme nach der Änderung der Build-Variante von Debug zu Release
Parth Patel

2

Wählen Sie in der Symbolleiste die Option Build-Varianten. Ändern Sie die Build-Variante von Release in Debug


2

Wie ich das gelöst habe

Dieser Fehler tritt auf, weil Sie Ihre Build-Varianten auf den Release-Modus eingestellt haben. Stellen Sie den Build-Modus ein und führen Sie das Projekt erneut aus.

Wenn Sie im Release-Modus ausgeführt werden möchten, generieren Sie einfach eine signierte Apk, wie wir es normalerweise tun, wenn Sie die App veröffentlichen


Ich habe nur "Debug" - und "Release" -Optionen?
Steve Smith

0

Meine Lösung bestand darin, den Namen meiner Signaturkonfiguration von "config" in "debug" zu ändern. Zur Überprüfung habe ich es in einen anderen zufälligen Namen geändert und den Fehler erneut erhalten. Dann habe ich ihn wieder in "debug" geändert und der Fehler war verschwunden. Also, während es künstlich erscheint und ich eher nicht glaube, dass dies die ganze Geschichte ist, probieren Sie diese Lösung aus.


0

Ich sehe auch dieses Problem und meinen Code unten

        storeFile file(properties.getProperty("filepath"))
        storePassword properties.getProperty("keypassword")
        keyAlias properties.getProperty("keyAlias")
        keyPassword properties.getProperty("keypassword")

Der Grund ist ein Fehler beim Eigenschaftsnamen. Es sollte keyPassword und nicht keypassword sein


0

Was bei mir endlich funktioniert hat und ich habe keine Ahnung warum, ist:

  • Ging zu LastPass (dem Dienst, mit dem ich alle meine Passwörter behalte)
  • Wählen Sie mein Passwort aus, indem Sie den Cursor auf das Passwort setzen und doppelklicken
  • Einmal ausgewählt, drücke ich cmd C zum Kopieren
  • Ging zum Android-Studium und cmd V zum Einfügen

Beachten Sie, dass ich viele Male versucht habe zu kopieren, indem ich das Passwort ausgewählt habe, indem ich auf das Ende des Passworts geklickt und das Passwort durch Bewegen der Maus ausgewählt habe.

Es ist seltsam, aber es funktionierte nur durch Doppelklicken auf das Passwort, um es zu kopieren.

Außerdem habe ich die von @NightFury in diesem Beitrag erläuterte Methode "Moduleinstellungen öffnen> Signieren ..." verwendet.


0

Wenn Sie die folgenden Codezeilen in die für mich funktionierende Datei build.gradel einfügen, fügen Sie sie wie gezeigt unter dem Block buildTypes unterhalb der Version hinzu

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix ".debug"
        debuggable true
    }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.