Ich muss den Versionsnamen nur an einer Stelle ändern. Der Code ist auch einfach.
In den folgenden Beispielen werden je nach ausgewählter Build-Variante Apk-Dateien mit dem Namen MyCompany-MyAppName-1.4.8-debug.apk oder MyCompany-MyAppName-1.4.8-release.apk erstellt .
Beachten Sie, dass diese Lösung sowohl für APK- als auch für App-Bundles (.aab-Dateien) funktioniert. .
Siehe auch: So ändern Sie den Namen der Proguard-Zuordnungsdatei in Gradle für Android-Projekte
Lösung für das aktuelle Gradle Plugin
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.company.app"
minSdkVersion 13
targetSdkVersion 21
versionCode 14 // increment with every release
versionName '1.4.8' // change with every release
setProperty("archivesBaseName", "MyCompany-MyAppName-$versionName")
}
}
Die obige Lösung wurde mit den folgenden Android Gradle Plugin-Versionen getestet:
- 3.5.2 (November 2019)
- 3.3.0 (Januar 2019)
- 3.1.0 (März 2018)
- 3.0.1 (November 2017)
- 3.0.0 (Oktober 2017)
- 2.3.2 (Mai 2017)
- 2.3.1 (April 2017)
- 2.3.0 (Februar 2017)
- 2.2.3 (Dezember 2016)
- 2.2.2
- 2.2.0 (September 2016)
- 2.1.3 (August 2016)
- 2.1.2
- 2.0.0 (April 2016)
- 1.5.0 (12.11.2015)
- 1.4.0-beta6 (05.10.2015)
- 1.3.1 (11.08.2015)
Ich werde diesen Beitrag aktualisieren, sobald neue Versionen herauskommen.
Lösung nur in den Versionen 1.1.3-1.3.0 getestet
Die folgende Lösung wurde mit den folgenden Android Gradle Plugin-Versionen getestet:
- 1.3.0 (30.07.2015) - Funktioniert nicht, Fehler soll in 1.3.1 behoben werden
- 1.2.3 (21.07.2015)
- 1.2.2 (28.04.2015)
- 1.2.1 (27.04.2015)
- 1.2.0 (26.04.2015)
- 1.2.0-beta1 (25.03.2015)
- 1.1.3 (06.03.2015)
App Gradle-Datei:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.company.app"
minSdkVersion 13
targetSdkVersion 21
versionCode 14 // increment with every release
versionName '1.4.8' // change with every release
archivesBaseName = "MyCompany-MyAppName-$versionName"
}
}
variant.buildType.name
, den Namen zu ergänzen ? Ich weiß, dass dies nicht wirklich mit der Standardkonfiguration zusammenhängt, aber ich versuche herauszufinden, wie die veraltetevariantOutput.getAssemble()
Warnung entfernt werden kannDies löste mein Problem: Verwenden
applicationVariants.all
stattapplicationVariants.each
Aktualisieren:
Es scheint also, dass dies mit mehr als 0.14+ Versionen des Android Studio Gradle Plugins nicht funktioniert.
Dies macht den Trick (Referenz aus dieser Frage ):
quelle
versionName
definierte inAndroidManifest.xml
anstelle von gradle config habe? Es gibt mirmyapp-release-null.apk
jetzt.each
zuall
undoutput.outputFile
zuoutputFileName
. Wenn jemand bestätigt, dass dies funktioniert, kann es in die Antwort bearbeitet werden :)Error:(34, 0) Cannot set the value of read-only property 'name'
(BEARBEITET für Android Studio 3.0 und Gradle 4)
Ich suchte nach einer komplexeren Option zum Umbenennen von apk-Dateinamen und schrieb diese in der Hoffnung, dass sie für alle anderen hilfreich ist. Es benennt die apk mit folgenden Daten um:
Ich habe ein bisschen in Gradle-Klassen recherchiert und ein bisschen aus anderen Antworten kopiert / eingefügt. Ich benutze Gradle 3.1.3 .
In der build.gradle:
Wenn Sie heute (13-10-2016) um 10:47 kompilieren, erhalten Sie die folgenden Dateinamen, abhängig von der gewählten Variante und dem gewählten Build-Typ:
Hinweis: Der apk-Name der nicht ausgerichteten Version ist immer noch der Standardname.
quelle
each
zuall
undoutput.outputFile
zuoutputFileName
" geändert werden muss - enthält dieser Beitrag einige Details dazu: stackoverflow.com/a/44265374/2162226Um zusammenzufassen, für diejenigen, die nicht wissen, wie man ein Paket importiert
build.gradle
(wie ich), verwenden Sie FolgendesbuildTypes
:===== BEARBEITEN =====
Wenn Sie Ihr
versionCode
undversionName
in Ihrerbuild.gradle
Datei wie folgt einstellen :Sie sollten es so einstellen:
====== BEARBEITEN mit Android Studio 1.0 ======
Wenn Sie Android Studio 1.0 verwenden, wird folgende Fehlermeldung angezeigt:
Sie sollten das
build.Types
Teil folgendermaßen ändern :quelle
Wenn Sie im defaultConfig-Block keinen Versionsnamen angeben,
defaultConfig.versionName
führt dies zunull
Um den Versionsnamen aus dem Manifest zu erhalten, können Sie folgenden Code in build.gradle schreiben:
quelle
In meinem Fall wollte ich nur einen Weg finden, um die Generierung verschiedener
apk
Namenrelease
unddebug
Varianten zu automatisieren . Ich habe es leicht geschafft, indem ich dieses Snippet als Kind vonandroid
:Für das neue Android Gradle Plugin 3.0.0 können Sie so etwas tun:
Dies erzeugt so etwas wie:
My_nice_name_3.2.31_dbg.apk
quelle
Eine andere Alternative ist die Verwendung der folgenden:
Dadurch wird "appname-1.0.0" für alle Ihre apk-Ausgaben festgelegt.
quelle
No such property: archivesBaseName for class: org.gradle.api.internal.project.DefaultProject_Decorated
Gradle 6+
Ich verwende jetzt Folgendes in Android Studio 4.0 und Gradle 6.4:
Gradle 4
Die Syntax hat sich in Gradle 4 (Android Studio 3+) etwas geändert (von
output.outputFile
bisoutputFileName
, Idee aus dieser Antwort ist jetzt:quelle
Der richtige Weg, um apk gemäß @ Jon Antwort umzubenennen
Oder auf andere Weise können Sie dieselben Ergebnisse erzielen
quelle
Es gibt viele Antworten, die entweder vollständig oder nach einigen Änderungen richtig sind. Aber ich werde meine trotzdem hinzufügen, da ich das Problem mit allen hatte, weil ich Skripte verwendet habe, um VersionName und VersionCode dynamisch zu generieren, indem ich mich in die eingebunden habe
preBuild
Aufgabe .Wenn Sie einen ähnlichen Ansatz verwenden, ist dies der Code, der funktioniert:
Zur Erklärung: Da ich Versionscode und Namen in der ersten Aktion von überschreibe
preBuild
ich die Umbenennung der Datei am Ende dieser Aufgabe hinzufügen. Was Gradle in diesem Fall tun wird, ist:Versionscode / Name einfügen-> PreBuild-Aktionen ausführen -> Name für apk ersetzen
quelle
quelle
In meinem Fall löse ich diesen Fehler auf diese Weise
Hinzufügen eines SUFFIX zur Debug-Version. In diesem Fall füge ich den Text "-DEBUG" zu meiner Debug-Bereitstellung hinzu
quelle
versionNameSuffix
basierend auf dem GIT-Zweig zu verwenden? Zum Beispiel, wenn es nicht auf "Master" ist, haben Sie immer ein Suffix, auch wenn es eine Release-Version istFür die neuesten Gradle-Versionen können Sie das folgende Snippet verwenden:
Legen Sie zuerst den Speicherort Ihres Anwendungsmanifests fest
Und später in build.gradle
Passen Sie an, ob Sie unterschiedliche Builds pro Build-Typ haben. aber da ich die einzige habe - funktioniert perfekt für mich.
quelle
Ab Android Studio 1.1.0 fand ich, dass diese Kombination im Android- Body der
build.gradle
Datei funktioniert . Dies ist der Fall, wenn Sie nicht herausfinden können, wie die Manifest-XML-Dateidaten importiert werden. Ich wünschte, es würde mehr von Android Studio unterstützt, aber spielen Sie einfach mit den Werten herum, bis Sie die gewünschte Ausgabe des Apk-Namens erhalten:quelle