Saya hanya perlu mengubah nama versi di satu tempat. Kode juga sederhana.
Contoh di bawah ini akan membuat file apk bernama MyCompany-MyAppName-1.4.8-debug.apk atau MyCompany-MyAppName-1.4.8-release.apk tergantung pada varian build yang dipilih.
Perhatikan bahwa solusi ini berfungsi pada APK dan Bundel Aplikasi (file .aab) .
Lihat Juga: Cara mengubah nama file pemetaan proguard dalam gradle untuk proyek Android
Solusi untuk Plugin Gradle Terbaru
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")
}
}
Solusi di atas telah diuji dengan Versi Plugin Android Gradle berikut:
- 3.5.2 (November 2019)
- 3.3.0 (Januari 2019)
- 3.1.0 (Maret 2018)
- 3.0.1 (November 2017)
- 3.0.0 (Oktober 2017)
- 2.3.2 (Mei 2017)
- 2.3.1 (April 2017)
- 2.3.0 (Februari 2017)
- 2.2.3 (Desember 2016)
- 2.2.2
- 2.2.0 (September 2016)
- 2.1.3 (Agustus 2016)
- 2.1.2
- 2.0.0 (April 2016)
- 1.5.0 (2015/11/12)
- 1.4.0-beta6 (2015/10/05)
- 1.3.1 (2015/08/11)
Saya akan memperbarui posting ini ketika versi baru keluar.
Solusi Diuji Hanya pada versi 1.1.3-1.3.0
Solusi berikut telah diuji dengan Versi Plugin Android Gradle berikut:
file app gradle:
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
nama? Saya tahu ini tidak benar-benar terkait konfigurasi default, tapi saya mencoba mencari cara untuk menghapusvariantOutput.getAssemble()
peringatan yang sudah usangIni memecahkan masalah saya: menggunakan
applicationVariants.all
bukanapplicationVariants.each
Memperbarui:
Jadi sepertinya ini tidak bekerja dengan versi 0.14+ dari plugin android studio gradle.
Ini caranya (Referensi dari pertanyaan ini ):
sumber
versionName
didefinisikan dalamAndroidManifest.xml
bukannya config Gradle? Itu memberi sayamyapp-release-null.apk
sekarang.each
keall
danoutput.outputFile
keoutputFileName
. Jika seseorang mengonfigurasi ini berfungsi, itu dapat diedit menjadi jawabannya :)Error:(34, 0) Cannot set the value of read-only property 'name'
(Diedit untuk bekerja dengan Android Studio 3.0 dan Gradle 4)
Saya sedang mencari opsi penggantian nama file apk apk lebih kompleks dan saya menulis yang satu ini dengan harapan itu membantu bagi orang lain. Itu mengubah nama apk dengan data berikut:
Saya perlu sedikit riset di kelas gradle dan sedikit copy / paste dari jawaban lain. Saya menggunakan gradle 3.1.3 .
Di build.gradle:
Jika Anda mengompilasi hari ini (13-10-2016) pada 10:47, Anda mendapatkan nama file berikut tergantung pada rasa dan tipe bangunan yang Anda pilih:
Catatan: nama apk versi yang tidak selaras masih merupakan nama standar.
sumber
each
untukall
danoutput.outputFile
untukoutputFileName
" - posting ini menyediakan beberapa rincian tentang bahwa: stackoverflow.com/a/44265374/2162226Singkatnya, bagi mereka yang tidak tahu cara mengimpor paket
build.gradle
(seperti saya), gunakan yang berikutbuildTypes
,===== EDIT =====
Jika Anda mengatur
versionCode
danversionName
dalambuild.gradle
file Anda seperti ini:Anda harus mengaturnya seperti ini:
====== EDIT dengan Android Studio 1.0 ======
Jika Anda menggunakan Android Studio 1.0, Anda akan mendapatkan kesalahan seperti ini:
Anda harus mengubah
build.Types
bagian ini:sumber
Jika Anda tidak menentukan versiName di blok defaultConfig maka
defaultConfig.versionName
akan menghasilkannull
untuk mendapatkan versiName dari manifes Anda dapat menulis kode berikut di build.gradle:
sumber
Dalam kasus saya, saya hanya ingin menemukan cara untuk mengotomatisasi generasi
apk
namarelease
dandebug
varian yang berbeda. Saya berhasil melakukan ini dengan mudah dengan menempatkan cuplikan ini sebagai anak dariandroid
:Untuk plugin Android gradle 3.0.0 baru Anda dapat melakukan sesuatu seperti itu:
Ini menghasilkan sesuatu seperti:
My_nice_name_3.2.31_dbg.apk
sumber
Alternatif lain adalah menggunakan yang berikut ini:
Ini akan mengatur "appname-1.0.0" untuk semua output apk Anda.
sumber
No such property: archivesBaseName for class: org.gradle.api.internal.project.DefaultProject_Decorated
Gradle 6+
Saya sekarang menggunakan yang berikut ini di Android Studio 4.0 dan Gradle 6.4:
Gradle 4
Sintaks telah berubah sedikit dalam Gradle 4 (Android Studio 3+) (dari
output.outputFile
menjadioutputFileName
, ide dari jawaban ini sekarang:sumber
Cara yang benar untuk mengganti nama apk, sesuai @Jon menjawab
Atau cara lain Anda dapat mencapai hasil yang sama dengan
sumber
Ada banyak jawaban yang benar baik secara penuh atau setelah beberapa modifikasi. Tapi saya akan menambahkan milik saya karena saya mempunyai masalah dengan semuanya karena saya menggunakan skrip untuk menghasilkan VersionName dan VersionCode secara dinamis dengan menghubungkan ke
preBuild
tugas.Jika Anda menggunakan beberapa pendekatan serupa, ini adalah kode yang akan berfungsi:
Untuk menjelaskan: Karena saya mengganti kode dan nama versi dalam tindakan pertama
preBuild
mengganti saya harus menambahkan pengubahan nama file di akhir tugas ini. Jadi apa yang akan dilakukan gradle dalam kasus ini adalah:Suntikkan kode versi / nama-> lakukan tindakan preBuild -> ganti nama untuk apk
sumber
sumber
Dalam kasus saya, saya memecahkan kesalahan ini dengan cara ini
menambahkan SUFFIX ke versi Debug, dalam hal ini saya menambahkan teks "-DEBUG" ke penerapan Debug saya
sumber
versionNameSuffix
berdasarkan cabang GIT? Misalnya, jika ini bukan pada "master", selalu memiliki akhiran, bahkan jika itu adalah versi rilisUntuk versi gradle terbaru, Anda dapat menggunakan cuplikan berikut:
Tetapkan lokasi manifes aplikasi Anda terlebih dahulu
Dan kemudian di build.gradle
Sesuaikan jika Anda memiliki manifes berbeda untuk setiap tipe bangunan. tapi karena saya punya satu - bekerja dengan baik untuk saya.
sumber
Pada Android Studio 1.1.0, saya menemukan kombinasi ini berfungsi di tubuh android
build.gradle
file. Ini jika Anda tidak tahu cara mengimpor data file manifes xml. Saya berharap ini lebih didukung oleh Android Studio, tetapi hanya bermain-main dengan nilai-nilai sampai Anda mendapatkan output nama apk yang diinginkan:sumber