Automatisches Erhöhen und Freigeben signierter Apk in Android Studio mithilfe von Gradle-Skript

8

Ich versuche, die Parameter versionName und VersionCode in Android Manifest automatisch zu aktualisieren und sie im Namen der Ausgabedatei anstelle von "app-release.apk" zu verwenden.

Von diese Seite habe ich diesen Code in meine build.gradle-Datei hinzugefügt :

%Vor%

Dieser Code funktioniert einwandfrei, die 2 Aufgaben werden ausgeführt und die Manifestdatei wird korrekt aktualisiert. Nun möchte ich die 2 Variablen mVersionCode und mNextVersionName im release Block innerhalb der buildTypes wie folgt verwenden:

%Vor%

aber der zurückgegebene Wert der 2 ist null.

Ich habe auch versucht, Eigenschaften und zusätzliche Eigenschaften einzustellen:

%Vor%

in den 2 Aufgaben und sie in den release -Block ohne Glück holen.

Hat jemand Ideen, wie das zu erreichen ist?

    
Alex Cortinovis 07.07.2015, 09:46
quelle

3 Antworten

1

Alles klar, hier ist mein Code von build.gradle des Anwendungsmoduls:

%Vor%

Das versionalization.gradle , das am Kopf angewendet wird, verwende ich, um die VersionInfo zu erhöhen, und gebe dann zwei zu verwendende Werte zurück.

%Vor%

Es ist recht einfach, zwei Dateien zu lesen, um die notwendigen Felder zum Erstellen der Versionsinformationen zu verwenden.

Wir kopieren / benennen zuletzt die endgültige APK.

Außerdem habe ich den Kopier- / Umbenennungsteil wie folgt zuerst erreicht, aber es funktioniert nicht, wenn Sie irgendwelche Produktaromen haben, ich füge hier als eine andere Wahl ein.

%Vor%     
VinceStyling 12.07.2015, 07:20
quelle
2

Niemand antwortete, aber ich fand eine funktionierende Lösung. Ich mag es nicht, es kann besser gemacht werden, aber im Moment ist die einzige Problemumgehung, die ich gefunden habe.

Ich bin immer noch auf der Suche nach einer besseren Lösung, wenn Sie eine haben, werde ich froh sein, sie zu lesen und zu verwenden, anstatt meiner.

Also habe ich eine neue Aufgabe in der Datei "gradle.build" hinzugefügt, sie erstellt einfach eine Kopie der Datei "app-release.apk" und benennt sie mit den Werten in der Manifest-Datei um:

%Vor%

Wie Sie sehen, ist es nur eine kopierte und bearbeitete Version des Codes in den 2 vorherigen Aufgaben mit einer copy {} -Funktion (hier die docs ), es liest die Werte von versionName und versionCode, ohne sie zu inkrementieren, und fügt sie dann in den neuen Dateinamen ein, den ich ersetzen werde.

Bei dieser Aufgabe müssen noch die zwei anderen Aufgaben vorhanden sein, damit Sie schließlich drei Aufgaben haben. In der ersten Zeile dieser Aufgabe steht dependsOn(assembleRelease) . Das ist sehr wichtig, es wird alle anderen standardmäßigen Release-Build-Tasks ausführen (inklusive unserer 2 Tasks, die im Manifest inkrementieren und schreiben), die die aktualisierte und signierte Apk generieren.

Wenn Sie jetzt versuchen, das "signierte APK generieren ..." auszuführen, werden Sie feststellen, dass diese Aufgabe nicht ausgeführt wird. Stattdessen müssen Sie es manuell starten:

Fügen Sie Ihre Aufgabe in den "run configurations" wie dies hinzu, und dann sollten Sie in der Lage sein, die Aufgabe von hier oder hier Wenn Sie die signierte Apk mit dem benutzerdefinierten Namen veröffentlichen möchten. Wenn Sie eine signierte apk mit dem Standardnamen erzeugen möchten (und immer noch versionName und versionCode inkrementieren), verwenden Sie einfach die "signierte APK ..." Option wie zuvor.

Wenn Sie diese Methode verwenden, müssen Sie im buildTypes -Teil der Datei keinen Code hinzufügen.

    
Alex Cortinovis 09.07.2015 14:26
quelle
0

Um zusätzliche Eigenschaftenerweiterungen zu verwenden, müssen Sie sie wie folgt definieren:

%Vor%

Dann kannst du sie in deinem BuildScript frei benutzen, indem du sie genau so verwendest, wie du sie in deinen obigen Aufgaben benutzt hast.

    
Ariel 09.07.2015 16:52
quelle

Tags und Links