Ich möchte, dass mein Gradle erstellt wird, um mit Gradle eine von der Version signierte apk-Datei zu erstellen.
Ich bin nicht sicher, ob der Code korrekt ist oder ob mir dabei ein Parameter fehlt gradle build
.
Dies ist ein Teil des Codes in meiner Gradle-Datei:
android {
...
signingConfigs {
release {
storeFile file("release.keystore")
storePassword "******"
keyAlias "******"
keyPassword "******"
}
}
}
Der Gradle-Build ist ERFOLGREICH und in meinem build/apk
Ordner werden nur die Dateien ...-release-unsigned.apk
und angezeigt ...-debug-unaligned.apk
.
Irgendwelche Vorschläge, wie man das löst?
Antworten:
Einfacher als bisherige Antworten:
Setzen Sie dies in
~/.gradle/gradle.properties
Ändern Sie Ihre
app/build.gradle
und fügen Sie diese in denandroid {
Codeblock ein:Dann kannst du rennen
gradle assembleRelease
Siehe auch die Referenz für das
signingConfigs
Gradle DSLquelle
file()
nimmt immer relative Pfade an. Verwendennew File(path)
Sie diese Option, wenn Sie möchten, dass sie als absolut behandelt wird.Ich habe es geschafft, das Problem zu lösen, indem ich diesen Code hinzugefügt und mit
gradle build
folgenden Elementen erstellt habe :Dies generiert eine signierte Release-Apk-Datei.
quelle
gradle build
odergradlew build
im Terminal / Prompt-BefehlBeachten Sie, dass das Skript von @ sdqali (zumindest bei Verwendung von Gradle 1.6) jedes Mal nach dem Kennwort fragt, wenn Sie eine Gradle-Aufgabe aufrufen. Da Sie es nur benötigen, wenn Sie es tun
gradle assembleRelease
(oder ähnliches), können Sie den folgenden Trick verwenden:Beachten Sie, dass ich auch Folgendes hinzufügen musste (unter Android), damit es funktioniert:
quelle
installRelease
verschwand aus der Liste der Aufgaben ... Warum?KEYSTORE
auch für Debug-Builds und für die "Gradle-Synchronisierung" in Android Studio definiert werden muss. Andernfalls wird ein Fehler angezeigt, dass der Pfad null ist.Wenn Sie vermeiden möchten, dass Ihr Schlüsselspeicher und Ihr Kennwort fest codiert werden build.gradle fest codiert werden , können Sie eine Eigenschaftendatei verwenden, wie hier erläutert: HANDHABUNG VON SIGNIERKONFIGEN MIT GRADLE
Grundsätzlich:
1) Erstellen Sie eine Datei myproject.properties unter /home/[username‹/.signing mit folgenden Inhalten:
2) Erstellen Sie eine gradle.properties-Datei (möglicherweise im Stammverzeichnis Ihres Projektverzeichnisses) mit dem Inhalt:
3) beziehen Sie sich in Ihrem build.gradle wie folgt darauf:
quelle
Automatische App-Signatur mit Gradle bei Verwendung von Git
Es ist erstaunlich, wie viele verschlungene Möglichkeiten es dafür gibt. Hier ist mein eigener Weg, auf dem ich versuche, mich an Googles eigene Empfehlung zu halten . Ihre Erklärung ist jedoch nicht ganz klar, daher werde ich das Verfahren für Linux im Detail beschreiben.
Beschreibung:
Die Standardanweisungen von Google zum automatischen Signieren einer App während des Builds, ohne die Kennwörter und Signaturdateien in Ihrem GIT-Pfad (App Development) zu behalten, sind eher unklar. Hier finden Sie eine schrittweise Anleitung dazu.
Anfangsannahmen:
Sie haben eine App namens "MyApp" in einem Verzeichnis, das über den folgenden Pfad angegeben ist :
$HOME/projects/mydev/MyApp
. Das MyApp-Verzeichnis wird jedoch mit GIT verwendet und gesteuert.Problem
Wir möchten natürlich nicht, dass sich unsere Signatur- oder Passwortdateien irgendwo im GIT-gesteuerten Verzeichnis befinden, auch wenn wir sehr gut in der Lage sind, diese zu verwenden
.gitignore
usw. können. Es ist immer noch zu riskant und leicht, einen Fehler zu machen. Wir wollen also unsere Keystore- und Signaturdateien draußen haben.Lösung
Wir müssen drei (3) Dinge tun:
build.gradle
, um (1) und (2) zu verwenden.In diesem Beispiel nennen wir die beiden Dateien:
keystore.properties
MyApp-release-key.jks
Wir können diese beiden Dateien hier ablegen:
(1) Erstellen Sie die Keystore-Kennwortdatei
Die erste Datei enthält die Klartextkennwörter, die in verwendet werden. und Pfade zur Release-Key-Datei in (2). Beginnen Sie mit dem Ausfüllen, da dies das Kopieren und Einfügen für den nächsten Schritt erleichtert.
Bearbeiten Sie
keystore.properties
so, dass der Inhalt wie folgt lautet:Der einzige schwierige Teil hier ist der
myStoreFileLocation
. Dies ist der Pfad aus der Moduldateibuild.gradle
während des Builds. Dies bedeutet normalerweise einen Pfad ähnlich und relativ zu :$HOME/projects/mydev/MyApp/app/build.gradle
. Um auf dieMyApp-release-key.jks
Datei zu verweisen, müssen wir hier Folgendes einfügen:../../../MyApp-release-key.jks
Hier haben wir auch den Alias "myapp" für den Schlüssel gewählt. Dann sollte die endgültige Datei aussehen:
(2) Erstellen Sie die Signaturdatei
Die zweite Datei wird automatisch generiert, wenn Sie den Signaturschlüssel erstellen. Wenn Sie keine anderen Apps haben und dies Ihr einziger Schlüsselspeicher ist, erstellen Sie die Datei mit:
Hier werden Sie nach zwei Passwörtern und einer Reihe von Informationen gefragt. (Gleiches wie in Android Studio.) Kopieren Sie nun Ihre zuvor ausgewählten Passwörter und fügen Sie sie ein.
(3) Bearbeiten Sie Ihre Moduldatei
gradle.build
, um die oben genannten zu verwendenDie folgenden Teile müssen in der Gradle-Build-Datei Ihrer App / Ihres Moduls vorhanden sein. Fügen Sie zunächst die folgenden Zeilen außerhalb und vor Ihrem
android {}
Block hinzu.Fügen Sie dann innerhalb des
android {}
Blocks Folgendes hinzu:Jetzt können Sie aus der Shell heraus Ihre App neu erstellen mit:
Dadurch sollte eine ordnungsgemäß signierte App generiert werden, die in Google Play verwendet werden kann.
UPDATE: 2019-04-02
Neuere Versionen von
keytool
und etwas sagt Ihnen, dass Sie eine PKCS12- basierte Schlüsseldatei anstelle der Original- / Standard-Schlüsseldatei verwenden sollten, wie ich sie oben verwende. Sie gehen dann auf Sie zu sagen Sie das neue offenen PKCS12 - Format umwandeln sollten. Es scheint jedoch, dass die Android-Entwicklungstools noch nicht ganz dafür bereit sind, denn wenn Sie dies tun, werden die folgenden seltsamen Fehler angezeigt:Verwenden Sie also keinen konvertierten Schlüssel!
quelle
keystore.properties
Datei für die Quellcodeverwaltung festschreiben, um die Arbeit auf Entwicklungsmaschinen zu erstellen. Ich habe einen Build - Server - Setup beschrieben hier .keytool
Generieren eines PKCS12-Keystores: Sie können-storetype JKS
denkeytool
Befehl übergeben, um den Keystore-Typ auf JKS zu setzen, der vom Android- Tool benötigt wird.Wie @Destil sagte, aber erlauben Sie anderen, die nicht den Schlüssel zum Bauen haben: Einfacher als frühere Antworten:
Setzen Sie dies in
~/.gradle/gradle.properties
Ändern Sie Ihre
build.gradle
wie folgt :Dann können Sie
gradle assembleRelease
OR ausführengradle build
quelle
(Als Antwort auf user672009 oben.)
Eine noch einfachere Lösung, wenn Sie Ihre Passwörter aus einem Git-Repository heraushalten möchten. Wenn Sie jedoch Ihr build.gradle einbinden möchten, das auch mit Produktaromen hervorragend funktioniert, müssen Sie eine separate Gradle-Datei erstellen. Nennen wir es "signing.gradle" (fügen Sie es in Ihren .gitignore ein). Als wäre es Ihre build.gradle-Datei abzüglich aller Daten, die nicht mit der Anmeldung zusammenhängen.
Fügen Sie dann in Ihre build.gradle-Datei diese Zeile direkt unter "Plugin anwenden: 'android'" ein.
Wenn Sie nicht über mehrere Geschmacksrichtungen verfügen oder diese verwenden, benennen Sie "flavour1" in "release" um, und Sie sollten fertig sein. Wenn Sie Aromen verwenden, fahren Sie fort.
Verknüpfen Sie schließlich Ihre Geschmacksrichtungen mit der richtigen Signaturkonfiguration in Ihrer build.gradle-Datei, und Sie sollten fertig sein.
quelle
Wenn Sie die Keystore-Datei bereits haben, können Sie Ihrem Build-Befehl einfach einige Parameter hinzufügen:
Keine dauerhaften Änderungen an Ihrem Android-Projekt erforderlich.
Quelle: http://www.tinmith.net/wayne/blog/2014/08/gradle-sign-command-line.htm
quelle
Dies ist eine Antwort auf user672009 und eine Ergänzung zu sdqalis Beitrag (sein Code stürzt beim Debug-Version über die IDE-Schaltfläche "Ausführen" ab):
Sie können den folgenden Code verwenden:
quelle
keyPassword new String(console.readPassword("Enter key password: "))
um sicherzustellen, dass Ihr Passwort während der Eingabe nicht angezeigt wirdIn neuerem Android Studio gibt es eine GUI-Methode, die sehr einfach ist und auch Gradle-Dateien auffüllt.
File -> Project Structure
Module ->
Wählen Sie das Hauptmodul ('App' oder ein anderer benutzerdefinierter Name).Signing
Registerkarte -> Plusbild zum Hinzufügen einer neuen KonfigurationFüllen Sie die Daten auf der rechten Seite
OK und Gradle-Datei wird automatisch erstellt
Sie manuell eine Zeile hinzufügen müssen
signingConfig signingConfigs.NameOfYourConfig
innerhalbbuiltTypes{release{}}
Bilder:
Zwei wichtige (!) Hinweise:
(EDIT 12/15)
Um signierte APKs zu erstellen, müssen Sie die Registerkarte Terminal von Android Studio (unten auf der Hauptoberfläche) öffnen und einen Befehl ausgeben
./gradlew assembleRelease
Wenn Sie vergessen haben
keyAlias
(was mir oft passiert), müssen Sie initiierenBuild -> Generate Signed APK
, um den Prozess zu starten und den Namen des Alias-Schlüssels zu sehen.quelle
build.gradle
Datei codiert, nicht wahr?Wenn Sie apk wie ich über eine Befehlszeile erstellen, können Sie die Signaturkonfiguration als Argumente angeben.
Fügen Sie dies Ihrem hinzu
build.gradle
Mach dein
signingConfigs
soDann führen Sie
gradlew
so ausquelle
build.gradle
? Höchststufe? Bitte fügen Sie mehr Code hinzuapp/build.gradle
Datei, über die ich spreche.quelle
Sie können auch die Befehlszeilenoption -P von gradle verwenden, um das Signieren zu erleichtern. Fügen Sie in Ihrem build.gradle singende Konfigurationen wie folgt hinzu:
Rufen Sie dann gradle build wie folgt auf:
Sie können -P verwenden, um storeFile und keyAlias festzulegen, wenn Sie dies bevorzugen.
Dies ist im Grunde die Lösung von Destil, jedoch mit den Befehlszeilenoptionen.
Weitere Informationen zu den Gradle-Eigenschaften finden Sie im Gradle-Benutzerhandbuch .
quelle
Die Antwort von @ Destil ist gut, wenn Sie dieselbe Konfiguration für alle Projekte wiederverwenden können. Alternativ wird Android Studio mit einem geliefert
local.properties
Datei geliefert, die möglicherweise stattdessen verwendet werden kann, aber angeblich IDE-generiert ist, und ich kann keine Möglichkeit finden, sie in Android Studio zu erweitern.Dies ist eine Variation der Antwort von @ jonbo . Diese Antwort ermöglicht projektspezifische Einstellungen, ist jedoch mit einem gewissen Entwickleraufwand verbunden. Insbesondere ist ein erhebliches Boilerplate erforderlich, um die
signingConfigs
Definition in eine separate Datei zu verschieben - insbesondere, wenn Sie dies für mehrere Projekte tun müssen. Dies ist ein Hauptgrund für die Auswahl dieser Lösung gegenüber Destil. Dies kann etwas gelindert werden, indem auch die Linie einbezogen wirdin der Anmeldeinformationsdatei, da dies den Abschluss der IDE ermöglicht.
Schließlich erlauben die meisten Lösungen hier nicht , das Projekt im Debug-Modus zu erstellen - der das Debug-Signieren automatisch übernimmt -, ohne eine syntaktisch, wenn nicht semantisch gültige, bereitzustellen
signingConfigs
Definition bereitzustellen. Wenn Sie keinen Release-Build von einer bestimmten Maschine erstellen müssen, kann dieser zusätzliche Schritt als unnötiges Hindernis angesehen werden. Auf der anderen Seite kann dies eine Hilfe für ignorante oder faule Kollegen sein, die Debug-Builds in der Produktion ausführen.Diese Lösung ermöglicht Debug-Builds, ohne sich um Anmeldeinformationen kümmern zu müssen. Für die Erstellung von Release-Builds sind jedoch gültige Anmeldeinformationen erforderlich, und es wird nur sehr wenig Boilerplate benötigt. Als Nachteil könnte es jedoch andere dazu ermutigen, Dummy-Werte durch echte Anmeldeinformationen zu ersetzen, und es gibt keine Möglichkeit, sich davor zu schützen.
Dadurch wird eine Dummy-Eigenschaft erstellt, die lediglich dazu dient, eine syntaktisch gültige Build-Datei zu erstellen. Die den
ext.signing
Eigenschaften von ' zugewiesenen Werte sind für Debug-Builds irrelevant. So aktivieren Sie Release - Builds, Kopierenext.signing
insigning.gradle
und die Dummy - Werte mit gültigen Anmeldeinformationen ersetzen.Sollte natürlich
signing.gradle
von VCS ignoriert werden.quelle
Fast alle Plattformen bieten jetzt eine Art Schlüsselbund an, sodass es keinen Grund gibt, Klartextkennwörter zu belassen.
Ich schlage eine einfache Lösung vor, die das Python-Schlüsselringmodul (hauptsächlich das Begleitkonsolenskript
keyring
) und einen minimalen Wrapper um die Groovy-['do', 'something'].execute()
Funktion verwendet :Mit dieser Funktion wird der
signingConfigs
Abschnitt zu:Vor dem Ausführen müssen
gradle assembleRelease
Sie die Kennwörter in Ihrem Schlüsselbund nur einmal festlegen:Fröhliche Veröffentlichungen!
quelle
Erweitern Sie die Antwort von David Vavra, erstellen Sie eine Datei ~ / .gradle / gradle.properties und fügen Sie hinzu
Dann in build.gradle
quelle
Ich hatte ziemlich viel Spaß daran, dies herauszufinden. Hier ist mein Durchgang.
A bis Z-Anleitung zum Erstellen einer Gradle-Build-Datei in IntelliJ (v.13.1.4) In dieser Anleitung wird davon ausgegangen, dass Sie wissen, wie eine Keystore-Datei erstellt wird. Damit dieses Tutorial funktioniert, muss sich Ihre Keystore-Datei in Ihrem App-Ordner befinden und Ihre zipalign.exe-Datei muss sich in 'SDK-ROOT \ tools' befinden. Diese Datei befindet sich normalerweise in 'SDK-ROOT \ build-tools' und unter diesem Ordner befindet sie sich im höchsten API-Ordner (Alpha oder Beta, ich empfehle die Alpha-Version).
Für diejenigen unter Ihnen, die direkt hier hineinspringen möchten, ist die Gradle-Build-Datei.
Sie können einen Teil dieser Erstellungsdatei (oben) über die Menüoption erstellen: Datei- / Projektstruktur Wählen Sie hier Facetten aus und klicken Sie auf 'Android-Gradle (App). Von hier aus sehen Sie die Registerkarten: "Eigenschaften", "Signieren", "Flavours", "Build-Typen" und "Abhängigkeiten". In diesem Rundgang werden nur "Signieren" und "Build-Typen" verwendet. Geben Sie unter "Build-Typen" (im Abschnitt "Name") einen beliebigen Namen ein, mit dem Sie Ihre Build-Typ-Konfiguration identifizieren möchten, und geben Sie in den anderen 4 Feldern Ihre Keystore-Informationen ein (legen Sie den Keystore-Pfad unter Ihrem App-Ordner fest).
Geben Sie unter 'Build Types' den Wert 'assembleRelease' in das Namensfeld ein. 'Debuggable' sollte auf false gesetzt sein, 'Jni Debug Build' sollte false sein, 'Run Proguard' auf true und 'Zip Align' auf true. Dadurch wird eine Build-Datei generiert, aber nicht wie oben dargestellt. Anschließend müssen Sie der Build-Datei einige Dinge hinzufügen. Der Speicherort der ProGuard-Datei wird hier manuell in der Gradle-Build-Datei festgelegt. (wie oben abgebildet)
Die DSL-Container, die Sie anschließend hinzufügen müssen, lauten wie folgt:
Sie müssen auch hinzufügen:
Beachten Sie, dass sich dieser DSL-Container oben ('Abhängigkeiten') am Ende der Konfigurationsdatei befinden sollte, jedoch nicht im Android-DSL-Container. Um den Abhängigkeitscontainer über das IntelliJ-Menü zu erstellen, wählen Sie: Datei- / Projektstruktur. Von dort aus wählen Sie erneut Facetten und dann Android-Gradle (App). Sie sehen die gleichen 5 Registerkarten wie oben erwähnt. Wählen Sie die Registerkarte "Abhängigkeiten" und fügen Sie die gewünschten Abhängigkeiten hinzu.
Nachdem dies alles erledigt ist, sollte eine Gradle-Build-Datei angezeigt werden, die der Datei oben in dieser Anleitung ähnelt. Um Ihre signierte Version mit Reißverschluss zu erstellen, müssen Sie die Gradle-Aufgaben öffnen. Sie gelangen zu diesem Fenster, indem Sie Ansicht / Werkzeugfenster / Gradle auswählen. Von hier aus können Sie auf 'assembleAssembleRelease' doppelklicken. Dies sollte Ihre bereitstellbare APK generieren.
Die potenziellen Probleme, die beim Kompilieren Ihrer Version auftreten können, sind (ohne darauf beschränkt zu sein): Ihre Gradle-Builddatei befindet sich am falschen Ort. Es gibt zwei Gradle-Builddateien. eine in Ihrem Anwendungsstammordner und eine andere im App-Ordner unter dem Anwendungsstamm. Sie müssen letzteres verwenden.
Möglicherweise haben Sie auch Flusenprobleme. (Hinweis: Android Developer Studio kann Lint-Probleme viel besser erkennen als IntelliJ. Sie werden dies bemerken, wenn Sie versuchen, eine signierte APK über die Menüoptionen zu generieren.)
Um Flusenprobleme zu umgehen, müssen Sie den folgenden DSL-Container in den Android-Container (oben) stellen:
Wenn Sie dies in Ihren Android-DSL-Container einfügen, wird eine Fehlerdatei im Build-Ordner (direkt unter Ihrem App-Ordner) generiert. Der Dateiname sollte etwa "lint-results-release-fatal.html" lauten. Diese Datei teilt Ihnen dies mit die Klasse, in der der Fehler aufgetreten ist. Eine andere Datei, die generiert wird, ist eine XML-Datei, die die mit dem Flusenfehler verknüpfte 'Problem-ID' enthält. Der Dateiname sollte ungefähr "lint-results-release-fatal.xml" sein. Irgendwo oben in der Datei sehen Sie ein Knotenproblem, in dem Sie etwas Ähnliches wie 'id = "IDOfYourLintProblem"' sehen.
Um dieses Problem zu beheben, öffnen Sie die Datei in Ihrem Projekt, die in der Datei 'lint-results-assembleRelease-fatal.html' aufgeführt ist, und geben Sie die folgende Codezeile in die Java-Klassendatei direkt über dem Klassennamen ein: @SuppressLint ("IDOfYourLintProblem" "). Möglicherweise müssen Sie 'android.annotation.SuppressLint;' importieren.
Ihre Java-Klassendatei sollte also folgendermaßen aussehen:
Beachten Sie, dass das Unterdrücken von Flusenfehlern nicht immer die beste Idee ist. Sie sind möglicherweise besser dran, Ihren Code zu ändern, der die Flusenfehler verursacht hat.
Ein weiteres Problem, das möglicherweise auftreten kann, besteht darin, dass Sie die Umgebungsvariable für die Umgebungsvariable Gradle HOME nicht festgelegt haben. Diese Variable heißt 'GRADLE_HOME' und sollte als Pfad des Gradle-Ausgangsverzeichnisses festgelegt werden, z. B. 'C: \ gradle-1.12'. Manchmal möchten Sie auch die Umgebungsvariable für 'ANDROID_HOME' auf 'YOUR- setzen. SDK-Root \ sdk '
Kehren Sie anschließend zum Fenster mit den Gradle-Aufgaben zurück und doppelklicken Sie auf assembleAssembleRelease.
Wenn alles erfolgreich ist, sollten Sie in der Lage sein, in den Ordner app \ build \ apk zu gehen und Ihre bereitstellbare APK-Datei zu finden.
quelle
Noch ein Ansatz für das gleiche Problem. Da es nicht empfohlen wird, Anmeldeinformationen im Quellcode zu speichern, haben wir beschlossen, die Kennwörter für den Schlüsselspeicher und den Schlüsselalias in einer separaten Eigenschaftendatei wie folgt festzulegen:
Wenn Sie git verwenden, können Sie eine Textdatei mit dem Namen "secure.properties" erstellen. Sie sollten sicherstellen, dass Sie es aus Ihrem Repository ausschließen (wenn Sie git verwenden, fügen Sie es der .gitignore-Datei hinzu). Dann müssten Sie eine Signaturkonfiguration erstellen, wie in einigen anderen Antworten angegeben. Der einzige Unterschied besteht darin, wie Sie die Anmeldeinformationen laden würden:
Vergessen Sie niemals, die signingConfig manuell dem Release-Build-Typ zuzuweisen (aus irgendeinem Grund gehe ich manchmal davon aus, dass sie automatisch verwendet wird). Es ist auch nicht obligatorisch, Proguard zu aktivieren, aber es ist empfehlenswert.
Dieser Ansatz gefällt uns besser als die Verwendung von Umgebungsvariablen oder das Anfordern von Benutzereingaben, da dies über die IDE erfolgen kann, indem zum Realease-Build-Typ gewechselt und die App ausgeführt wird, anstatt die Befehlszeile verwenden zu müssen.
quelle
Android Studio Gehen Sie zu Datei -> Projektstruktur oder drücken Sie Strg + Alt + Umschalt + S.
Siehe das Bild
OK klicken
Dann werden die signingConfigs in Ihrer build.gradle-Datei generiert.
quelle
Ich hatte mehrere Probleme, bei denen ich die folgende Zeile an eine falsche Stelle gesetzt habe:
Stellen Sie sicher, dass Sie die signingConfigs-Teile in den Android-Bereich einfügen:
anstatt
Es ist leicht, diesen Fehler zu machen.
quelle
Es ist 2019 und ich muss APK mit V1 (JAR-Signatur) oder V2 (vollständige APK-Signatur) signieren. Ich googelte "signierte apk gradle generieren" und es brachte mich hierher. Also füge ich hier meine ursprüngliche Lösung hinzu.
Meine ursprüngliche Frage: Wie verwende ich V1 (Jar-Signatur) oder V2 (vollständige APK-Signatur) aus der Datei build.gradle?
quelle
Um die anderen Antworten zu ergänzen, können Sie Ihre Datei gradle.properties zusammen mit build.gradle auch in Ihrem eigenen Modulordner ablegen, falls Ihr Keystore für ein Projekt spezifisch ist.
quelle
Ich arbeite in Ubuntu14.04. vim ~ / .bashrc und füge export ANDROID_KEYSTORE = export ANDROID_KEYALIAS = hinzu
und dann in build.gradle set.
quelle
System.console()
returnnull
.Eine Alternative besteht darin, eine Aufgabe zu definieren, die nur bei Release-Builds ausgeführt wird.
quelle
Sie können Kennwörter über die Befehlszeile anfordern:
Der
if-then-else
Block verhindert die Anforderung von Kennwörtern beim Erstellen einer Version. Obwohl derelse
Zweig nicht erreichbar ist, bringt er Gradle dazu, eineinstall...Release
Aufgabe zu erstellen .Hintergrundgeschichte . Wie unter https://stackoverflow.com/a/19130098/3664487 angegeben , können " Gradle-Skripte mithilfe der System.console (). ReadLine-Methode zur Benutzereingabe auffordern ." Leider fordert Gradle immer ein Passwort an, auch wenn Sie eine Debug-Version erstellen (vgl. Wie erstelle ich eine mit einer Version signierte Apk-Datei mit Gradle? ). Glücklicherweise kann dies überwunden werden, wie ich oben gezeigt habe.
quelle
Hinzufügen meiner Möglichkeit, dies in React-Native mit dem Paket react-native-config zu tun .
Erstellen Sie eine .env-Datei:
Beachten Sie, dass dies nicht Teil der Versionskontrolle sein sollte.
in Ihrem
build.gradle
:quelle
In meinem Fall habe ich die falsche Apk in die Version einer anderen App hochgeladen.
quelle
Für Groovy (build.gradle)
Sie sollten Ihre Anmeldeinformationen nicht direkt in die Datei build.gradle einfügen . Stattdessen sollten die Anmeldeinformationen aus einer Datei stammen, die nicht der Versionskontrolle unterliegt.
Legen Sie eine Datei signating.properties ab, in der sich das modulspezifische build.gradle befindet. Vergessen Sie nicht, es Ihrer .gitignore- Datei hinzuzufügen !
signieren.Eigenschaften
build.gradle
quelle
Für Kotlin Script (build.gradle.kts)
Sie sollten Ihre Anmeldeinformationen nicht direkt in die Datei build.gradle.kts einfügen Datei . Stattdessen sollten die Anmeldeinformationen aus einer Datei stammen, die nicht der Versionskontrolle unterliegt.
Legen Sie eine Datei signieren.Eigenschaften ab, in der sich das modulspezifische build.gradle.kts befindet. Vergessen Sie nicht, es Ihrer .gitignore- Datei hinzuzufügen !
signieren.Eigenschaften
build.gradle.kts
quelle
Wenn Sie nicht sehen möchten, kann die Methode readLine () für ein Nullobjekt nicht aufgerufen werden. Sie müssen zuerst in gradle.properties schreiben .
quelle