Android Studio: Wie generiert man signiertes APK mit Gradle?

Lesezeit: 7 Minuten

Android Studio Wie generiert man signiertes APK mit Gradle
Klebrig

Ich habe auf Google und SO gesucht, kann aber meine Antwort nicht finden.

Dies ist das erste Mal, dass ich mit dem Gradle-System arbeite, und ich bin jetzt an dem Punkt, ein signiertes APK zum Hochladen auf Google Play zu generieren (Projekt wird aus Eclipse importiert).

Jetzt habe ich den Teil gelesen Hier die Sie hinzufügen sollten signingConfigs zu deinem build.gradle.

Ich habe diese Zeilen hinzugefügt und jetzt habe ich gesehen, dass Sie rennen müssen ./gradlew assembleRelease aber das Ausführen in meinen CMD-Rückgaben

‘gradle’ wird nicht als interner oder externer Befehl, lauffähiges Programm oder Batch-Datei erkannt.

Ich habe auch versucht, mit der rechten Maustaste auf build.gradle zu klicken und es auszuführen, wobei ich sagte, dass es erfolgreich war, aber sobald ich im build/apk-Ordner nachsehe, wird nur eine Datei aufgerufen app-debug-unaligned.apk.

Wie generiere ich also das signierte APK mit dem Gradle-System?

  • Siehe stackoverflow.com/questions/20876069/…

    – Scott Barta

    4. Januar 2014 um 15:49 Uhr

  • @ScottBarta Teilweise hat es funktioniert, nachdem ich in den Release-Modus gewechselt und das Gradle ausgeführt hatte, bekam ich immer noch einen Fehler, aber mit he build> generate signed apk über das Menü hat es schließlich geklappt! Danke, ich habe Sie unter dem angegebenen Link hochgestuft.

    – Klebrig

    4. Januar 2014 um 16:26 Uhr


  • signieren Sie mit der Version v1 (jar-Signatur) oder v2 (vollständige apk-Signatur) aus der Gradle-Datei? Lösung hier: stackoverflow.com/questions/57943259/…

    – Benutzer1506104

    15. September 2019 um 18:12 Uhr

  • Beantwortet das deine Frage? Wie erstelle ich ein „Release“-APK in Android Studio?

    – Mahozad

    18. Februar um 7:37 Uhr

1647153788 735 Android Studio Wie generiert man signiertes APK mit Gradle
Piyush Agarwal

Es gibt drei Möglichkeiten, Ihren Build gemäß der zu generieren buildType. (In Ihrem Fall ist es Release, aber es kann beliebig benannt werden.)

  1. Gehen Sie im rechten Bereich von Android Studio zu Gradle Task und suchen Sie nach assembleRelease oder assemble(#your_defined_buildtype) unter Modulaufgaben

  2. Gehen Sie im linken Bereich zu Build-Variante und wählen Sie den Build aus der Dropdown-Liste aus

  3. Wechseln Sie im Datei-Explorer zum Projektstammverzeichnis, öffnen Sie cmd/terminal und führen Sie Folgendes aus:

    Linux: ./gradlew assembleRelease or assemble(#your_defined_buildtype)

    Fenster: gradlew assembleRelease or assemble(#your_defined_buildtype)

Wenn Sie (nur) einen Release-Build erstellen möchten, können Sie verwenden Bauen > Generieren Sie eine signierte apk. Für andere Build-Typen sind nur die oben genannten drei Optionen verfügbar.

Sie finden die generierte APK in Ihrer module/build Verzeichnis mit dem Namen des Build-Typs darin.

  • Dadurch wird nur dann eine signierte APK erstellt, wenn Sie die Build-Konfiguration in Ihrer build.gradle haben. Wenn Sie dies in Quellcode-Verwaltungstools speichern oder mit anderen teilen, sollten Sie darüber nachdenken, die Anmeldeinformationen Ihres Signaturschlüssels von Ihrem Quellcode zu trennen.

    – Janusz

    7. August 2014 um 7:59 Uhr

  • Build > Generate Signed apk … so einfach ist das

    – Atul

    14. August 2016 um 17:38 Uhr

Es ist möglich, jedes vorhandene Gradle-Projekt von Android Studio zu nehmen und es von der Befehlszeile aus zu erstellen/signieren, ohne Dateien zu bearbeiten. Dies macht es sehr gut, Ihr Projekt in der Versionskontrolle zu speichern, während Sie Ihre Schlüssel und Passwörter getrennt halten:

./gradlew assembleRelease -Pandroid.injected.signing.store.file=$KEYFILE -Pandroid.injected.signing.store.password=$STORE_PASSWORD -Pandroid.injected.signing.key.alias=$KEY_ALIAS -Pandroid.injected.signing.key.password=$KEY_PASSWORD

  • Da wir den Quellcode an Companion weitergeben müssen, ist dies der beste Weg, um unsere Keystore-Sachen geheim zu halten. Danke.

    – Yeung

    14. Dezember 2015 um 3:26 Uhr

  • sowieso diese kennen lernen android.injected.signing.* Eigenschaften Existenz?

    – Tixeon

    16. Juni 2017 um 8:01 Uhr


  • Ich habe diese Informationen von Xav vom Android Studio-Team erhalten, und ich weiß nicht, ob es noch andere Variablen wie diese gibt.

    – Wayne Piekarski

    16. Juni 2017 um 20:23 Uhr

  • Ich erhalte java.lang.RuntimeException: com.android.ide.common.signing.KeytoolException: Failed to read key XXXXXX from store „C:\Users\somedirectory\Desktop\someKey.jks“: Kein Schlüssel mit Alias ​​„XXXXXX“ gefunden im Keystore C:\Users\somedirectory\Desktop\someKey.jks. Warum ist das so?

    – Archie G. Quiñones

    10. Juni 2019 um 6:52 Uhr

1647153789 818 Android Studio Wie generiert man signiertes APK mit Gradle
Droidchef

Sie können diesen Code verwenden

android {
   ...
    signingConfigs {
        release {
            storeFile file("../your_key_store_file.jks")
            storePassword "some_password"
            keyAlias "alias_name"
            keyPassword "key_password"
        }
    }

    buildTypes {

        release {
            signingConfig signingConfigs.release
        }
    }
   ...
}

dann von Ihrem Terminal ausführen

./gradlew assembleRelease

Sie erhalten die apk unter

your-android-app/build/outputs/apk/your-android-app-release.apk

  • @ozcanovunc Bitte überprüfen Sie Ihren Keystore-Pfad erneut. Möglicherweise ist Ihr Pfad falsch definiert.

    – bhavesh kaila

    18. Februar 2016 um 11:17 Uhr


  • Wenn Sie dies tun, stehen die Chancen gut, dass Ihre build.gradle wird in die Versionskontrolle eingecheckt, ebenso wie Ihre Passwörter! Erwägen Sie einen anderen Weg, wenn Sicherheit in Ihrem Projekt wichtig ist.

    – Marco7757

    12. Juli 2019 um 6:00 Uhr

  • Gradle AssembleRelease funktioniert nicht. Verwenden Sie anstelle von gradlew AssemblerRelease

    – Sathish Gadde

    29. November 2019 um 7:13 Uhr

  • Anmeldeinformationen können aus Sicherheitsgründen aus einer separaten Datei gelesen werden

    – Dasar

    20. Januar um 8:27 Uhr

Ich denke, das kann dir helfen https://www.timroes.de/2013/09/22/handling-signing-configs-with-gradle/ dann einfach auswählen Release von dem Build Variants

Dies ist für Kotlin DSL (build.gradle.kts).
Sie können Ihre Eigenschaften entweder in definieren local.properties Datei im Projektstammverzeichnis oder definieren Sie sie als Umgebungsvariablen (was besonders nützlich für CIs wie GitHub Action ist).

// See https://stackoverflow.com/q/60474010
fun getLocalProperty(key: String) = gradleLocalProperties(rootDir).getProperty(key)

fun String?.toFile() = file(this!!)

// Could also use System.getenv("VARIABLE_NAME") to get each variable individually
val environment: Map<String, String> = System.getenv()

android {
    signingConfigs {
        create("MyAppSigningConfig") {
            keyAlias = getLocalProperty("signing.keyAlias") ?: environment["SIGNING_KEY_ALIAS"] ?: error("Error!")
            storeFile = (getLocalProperty("signing.storeFile") ?: environment["SIGNING_STORE_FILE"] ?: error("Error!")).toFile()
            keyPassword = getLocalProperty("signing.keyPassword") ?: environment["SIGNING_KEY_PASSWORD"] ?: error("Error!")
            storePassword = getLocalProperty("signing.storePassword") ?: environment["SIGNING_STORE_PASSWORD"] ?: error("Error!")
            enableV1Signing = true
            enableV2Signing = true
        }
    }

    buildTypes {
        getByName("release") {
            signingConfig = signingConfigs["MyAppSigningConfig"]
            // ...
        }
    }
}

Mein Projekt/local.properties Datei:

signing.keyAlias=foo
signing.keyPassword=bar
# also called keystore
signing.storePassword=abcdefgh
signing.storeFile=C\:\\my-files\\my-keystore.jks

Fügen Sie NICHT Ihre hinzu local.properties Datei an Ihr Versionskontrollsystem (wie Git), da es Ihre geheimen Informationen wie Passwörter usw. der Öffentlichkeit zugänglich macht (wenn es sich um ein öffentliches Repository handelt).

Generieren Sie Ihr APK mit einer der 3 Möglichkeiten, die in dieser Antwort erwähnt wurden.

Wenn Sie in bestimmten Ländern leben, verwenden Sie unbedingt ein VPN.

Schritt 1: Führen Sie diesen Befehl in der Befehlszeile aus:

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

Es wird Sie nach einigen Informationen wie Passwort, Name usw. fragen und diese eingeben.

Schritt 2: Erstellen Sie einen Dateinamen key.properties in Ihrem Android-Ordner. Schreiben Sie diese Zeilen in die erstellte Datei

storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=<location of the key store file, such as ~/key.jks>

Halten Sie die Datei key.properties privat, bewahren Sie immer eine Sicherungskopie der Datei key.properties auf und veröffentlichen Sie sie niemals öffentlich.

Schritt 3: Ersetzen Sie die folgenden Zeilen in Gradle auf App-Ebene

def keystoreProperties = new Properties()
    def keystorePropertiesFile = rootProject.file('key.properties')
    if (keystorePropertiesFile.exists()) {
        keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    }
android {
signingConfigs {
  release {
    keyAlias keystoreProperties['keyAlias']
    keyPassword keystoreProperties['keyPassword']
    storeFile file(keystoreProperties['storeFile'])
    storePassword keystoreProperties['storePassword']
  }
}
buildTypes {
  release {
    signingConfig signingConfigs.release
  }
}
}

Schritt 4:

keytool -list -v -keystore ~/key.jks -alias key -storepass <password> -keypass <password>

Schritt5:
Ich empfehle, APK mit Android Studio zu erstellen.
Build > Generate Signed Bundle/APK...

1647153789 38 Android Studio Wie generiert man signiertes APK mit Gradle
ausgetrickstdavid

Build-Menü > Signiertes APK generieren

  • Wenn Sie das ausführen, sagt es Ihnen, dass dies nicht der richtige Weg ist. Wenn ich diese .apk-Datei hochlade, wird außerdem ein Fehler angezeigt, der besagt, dass Fehlererkennungen oder etwas aktiviert sind.

    – Klebrig

    4. Januar 2014 um 14:46 Uhr

  • es heißt, dass das Debugging eingeschaltet ist … in Android Studio sollte es links einen Tab geben, auf dem “Build-Varianten” steht … klicken Sie darauf und schalten Sie alles von “debug” auf “release” um … danach , signierte APK erneut generieren …

    – David ausgetrickst

    4. Januar 2014 um 16:27 Uhr

  • Das funktioniert nicht mehr! Zum Beispiel hat das APK, das es erstellt, BuildConfig.DEBUG auf „true“ gesetzt. Dies hat mir unendliche Probleme bereitet, Sie müssen jetzt die Methode gradlew AssembleRelease verwenden.

    – Ben Clayton

    17. April 2014 um 14:32 Uhr

  • @BenClayton Du hast vollkommen recht! Ich habe Stunden damit verschwendet! Noch ein sehr nerviger “Bug” in Android Studio – Kein Ende der Probleme in Sicht…

    – sjkm

    29. April 2016 um 10:03 Uhr


  • Ich frage mich, warum dieser einfache Schritt nicht der beste Weg sein kann, um eine signierte APK zu generieren, wie es deutlich erwähnt wird. Dieser Schritt generierte App und funktioniert perfekt für mich, ohne Probleme. Aber viele andere Antworten auf SO verwirrten mich und dachten, was ich getan habe, könnte nicht richtig sein oder was.

    – Atul

    14. August 2016 um 17:35 Uhr


996280cookie-checkAndroid Studio: Wie generiert man signiertes APK mit Gradle?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy