Android Studio: Wie generiert man signiertes APK mit Gradle?
Lesezeit: 7 Minuten
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
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.)
Gehen Sie im rechten Bereich von Android Studio zu Gradle Task und suchen Sie nach assembleRelease oder assemble(#your_defined_buildtype) unter Modulaufgaben
Gehen Sie im linken Bereich zu Build-Variante und wählen Sie den Build aus der Dropdown-Liste aus
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:
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?
@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
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:
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
Schritt5:
Ich empfehle, APK mit Android Studio zu erstellen. Build > Generate Signed Bundle/APK...
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
9962800cookie-checkAndroid Studio: Wie generiert man signiertes APK mit Gradle?yes
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