Wystarczy, że zmienię nazwę wersji w jednym miejscu. Kod też jest prosty.
Poniższe przykłady utworzą pliki apk o nazwach MyCompany-MyAppName-1.4.8-debug.apk lub MyCompany-MyAppName-1.4.8-release.apk w zależności od wybranego wariantu kompilacji.
Pamiętaj, że to rozwiązanie działa zarówno w przypadku pakietów APK, jak i pakietów aplikacji (pliki .aab) .
Zobacz też: Jak zmienić nazwę pliku mapowania proguard w Gradle dla projektu Android
Rozwiązanie dla najnowszej wtyczki Gradle
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")
}
}
Powyższe rozwiązanie zostało przetestowane z następującymi wersjami wtyczek Android Gradle:
- 3.5.2 (listopad 2019 r.)
- 3.3.0 (styczeń 2019 r.)
- 3.1.0 (marzec 2018 r.)
- 3.0.1 (listopad 2017)
- 3.0.0 (październik 2017)
- 2.3.2 (maj 2017)
- 2.3.1 (kwiecień 2017)
- 2.3.0 (luty 2017)
- 2.2.3 (grudzień 2016 r.)
- 2.2.2
- 2.2.0 (wrzesień 2016 r.)
- 2.1.3 (sierpień 2016 r.)
- 2.1.2
- 2.0.0 (kwiecień 2016 r.)
- 1.5.0 (2015/11/12)
- 1.4.0-beta6 (2015/10/05)
- 1.3.1 (2015/08/11)
Zaktualizuję ten post, gdy pojawią się nowe wersje.
Rozwiązanie przetestowane tylko w wersjach 1.1.3-1.3.0
Następujące rozwiązanie zostało przetestowane z następującymi wersjami wtyczek Android Gradle:
- 1.3.0 (30.07.2015) - Nie działa, błąd zaplanowany do naprawienia w 1.3.1
- 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 (2015/03/25)
- 1.1.3 (2015/03/06)
plik oceny aplikacji:
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
do nazwy? Wiem, że to nie jest tak naprawdę związane z domyślną konfiguracją, ale próbuję wymyślić, jak usunąć przestarzałevariantOutput.getAssemble()
ostrzeżenieTo rozwiązało mój problem: używanie
applicationVariants.all
zamiastapplicationVariants.each
Aktualizacja:
Wygląda więc na to, że nie działa to z wersjami 0.14+ wtyczki Android Studio Gradle.
To załatwia sprawę (odniesienie do tego pytania ):
źródło
versionName
zdefiniowanąAndroidManifest.xml
konfigurację w zamiast gradle? Daje mi tomyapp-release-null.apk
teraz.each
naall
ioutput.outputFile
naoutputFileName
. Jeśli ktoś potwierdzi, że to działa, można to zmienić w odpowiedzi :)Error:(34, 0) Cannot set the value of read-only property 'name'
(ZMIENIONO do pracy z Android Studio 3.0 i Gradle 4)
Szukałem bardziej złożonej opcji zmiany nazwy pliku apk i napisałem tę w nadziei, że będzie pomocna dla każdego innego. Zmienia nazwę apk z następującymi danymi:
Zajęło mi to trochę badań w klasach i trochę kopiowania / wklejania z innych odpowiedzi. Używam gradle 3.1.3 .
W pliku build.gradle:
Jeśli skompilujesz dzisiaj (13-10-2016) o 10:47, otrzymasz następujące nazwy plików w zależności od wybranego smaku i typu kompilacji:
Uwaga: niewyrównana nazwa apk wersji jest nadal domyślną.
źródło
each
naall
ioutput.outputFile
naoutputFileName
” - ten post zawiera szczegółowe informacje na ten temat: stackoverflow.com/a/44265374/2162226Podsumowując, dla tych, którzy nie wiedzą, jak zaimportować paczkę
build.gradle
(tak jak ja), użyj następującegobuildTypes
,===== EDYCJA =====
Jeśli ustawisz
versionCode
iversionName
wbuild.gradle
pliku jak poniżej:Powinieneś to ustawić tak:
====== EDYCJA w Android Studio 1.0 ======
Jeśli korzystasz z Android Studio 1.0, pojawi się następujący błąd:
Powinieneś zmienić
build.Types
część na następującą:źródło
Jeśli nie określisz versionName w bloku defaultConfig,
defaultConfig.versionName
spowoduje tonull
aby pobrać versionName z manifestu, możesz napisać następujący kod w build.gradle:
źródło
W moim przypadku chciałem tylko znaleźć sposób na zautomatyzowanie generowania różnych
apk
nazwrelease
idebug
wariantów. Udało mi się to łatwo zrobić, umieszczając ten fragment jako dzieckoandroid
:W przypadku nowej wtyczki Gradle dla Androida 3.0.0 możesz zrobić coś takiego:
To daje coś takiego:
My_nice_name_3.2.31_dbg.apk
źródło
Inną alternatywą jest użycie:
Spowoduje to ustawienie „appname-1.0.0” na wszystkie wyjścia apk.
źródło
No such property: archivesBaseName for class: org.gradle.api.internal.project.DefaultProject_Decorated
Gradle 6+
Teraz używam następujących w Android Studio 4.0 i Gradle 6.4:
Gradle 4
Składnia nieco się zmieniła w Gradle 4 (Android Studio 3+) (od
output.outputFile
dooutputFileName
, idea z tej odpowiedzi jest teraz:źródło
Właściwy sposób na zmianę nazwy apk, zgodnie z odpowiedzią @Jon
Lub w inny sposób możesz osiągnąć te same wyniki za pomocą
źródło
Istnieje wiele odpowiedzi, które są poprawne w całości lub po pewnych modyfikacjach. Ale i tak mam zamiar dodać swoje, ponieważ miałem problem z nimi wszystkimi, ponieważ używałem skryptów do dynamicznego generowania VersionName i VersionCode, podłączając się do
preBuild
zadania.Jeśli używasz podobnego podejścia, oto kod, który będzie działał:
Wyjaśnienie: ponieważ nadpisuję kod wersji i nazwę w pierwszej akcji
preBuild
muszę dodać zmianę nazwy pliku na koniec tego zadania. Więc to, co zrobi gradle w tym przypadku, to:Wstaw kod / nazwę wersji -> wykonaj akcje preBuild -> zamień nazwę na apk
źródło
źródło
W moim przypadku rozwiązuję ten błąd w ten sposób
dodanie SUFFIX do wersji debugowania, w tym przypadku dodam tekst "-DEBUG" do mojego wdrożenia debugowania
źródło
versionNameSuffix
oparciu o gałąź GIT? Na przykład, jeśli nie ma go w pozycji „master”, zawsze ma sufiks, nawet jeśli jest to wersja wydanaW przypadku najnowszych wersji Gradle możesz użyć następującego fragmentu:
Najpierw ustaw lokalizację manifestu aplikacji
A później w build.gradle
Dostosuj, jeśli masz różne manifesty w zależności od typu kompilacji. ale skoro mam jedyny - u mnie działa idealnie.
źródło
Od wersji Android Studio 1.1.0 stwierdziłem, że ta kombinacja działa w treści pliku Androida
build.gradle
. Dzieje się tak, jeśli nie możesz dowiedzieć się, jak zaimportować dane pliku manifestu xml. Chciałbym, żeby był bardziej obsługiwany przez Android Studio, ale po prostu baw się wartościami, aż uzyskasz żądaną nazwę pliku APK:źródło