Saya mencoba mencari cara untuk dapat mengubah nama aplikasi aplikasi saya per tipe build secara gradle.
Sebagai contoh, saya ingin memiliki versi debug untuk memiliki <APP_NAME>-debug
dan versi qa untuk dimiliki <APP-NAME>-QA
.
Saya kenal dengan:
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-DEBUG'
}
Namun, sepertinya saya tidak dapat menemukan perintah gradle untuk menerapkan perubahan aplikasi saat berada di peluncur.
sumber
release
string.release
bagian, saya melihat bahwa sedikit berbeda karena orang mungkin ingin juga menguji untuk masalah pelokalan sementara memungkinkan "rilis" dan "tes" dibangun untuk hidup berdampingan pada perangkat yang sama. Dalam kasus seperti itu, kedua build mungkin berakhir dengan label launcher yang sama, mungkin menyebabkan kebingungan. Itulah yang saya coba hindari.release
mode. Dan hanya gunakan sumber daya string ini untukapp_name
, bukan untuk peran lain.app_name
, walaupun itu tidak perlu (misalnya, Anda memiliki pengembang Perancis atau Jerman yang tidak berbicara bahasa Inggris dan karenanya perlu diterjemahkan). Agar pengujian dapat melihat apakahrelease
versiapp_name
karya yang tidak dimodifikasi , dengan terjemahannya, uji cobarelease
pembuatannya, atau buatnear-release
jenis pembuatan yang hanya menambahkan akhiran ID aplikasi dan membiarkan senarnya.Anda dapat menggunakan sesuatu seperti ini
Anda dapat menggunakan @ string / app_name di file AndroidManifest.xml.
Pastikan Anda menghapus app_name dari nilai / folder (tidak ada entri dengan nama ini).
sumber
resValue "string", "app_name", System.getenv("APP_NAME") ?: "MyApp"
Anda dapat melakukan ini dengan gradle:
Kemudian di
AndroidManifest.xml
put Anda :Catatan: ini juga berfungsi dengan
productFlavors
.sumber
Untuk mendukung terjemahan, buat ini:
1. hapus string "app_name"
2. tambahkan ke gradle
3. Tetapkan nama aplikasi di Manifest sebagai "@ string / app_name"
4. Tambahkan ke nilai strings.xml
sumber
app_name
di bagian file productFlavoursbuild.gradle
. Pendekatan yang sangat nyaman dan fleksibel saat Anda membutuhkannya.Nama aplikasi terlihat oleh pengguna, dan itulah sebabnya Google mendorong Anda untuk menyimpannya di file strings.xml Anda. Anda bisa menentukan file sumber string terpisah yang berisi string yang spesifik untuk buildTypes Anda. Sepertinya Anda mungkin memiliki
qa
buildType khusus . Jika itu tidak benar, abaikan bagian qa di bawah ini.sumber
Kami membutuhkan solusi untuk mendukung nama aplikasi dengan pelokalan (untuk multi bahasa). Saya telah menguji dengan solusi @Nick Unuchek, tetapi bangunan gagal (tidak ditemukan @ string /). sedikit perubahan untuk memperbaiki bug ini: file build.gradle:
values \ strings.xml:
values-en \ strings.xml:
Manifest.xml:
sumber
tools:replace="android:label"
diapplication
dalamAndroidManifest
Untuk solusi berbasis gradle yang lebih dinamis (mis. Tetapkan nama Aplikasi dasar di utama
strings.xml
sekali, dan hindari mengulangi diri Anda sendiri dalam setiap kombinasi jenis rasa / bahan bangunanstrings.xml
), lihat jawaban saya di sini: https://stackoverflow.com/a/32220436/1128600sumber
Anda dapat menggunakan
strings.xml
di folder yang berbeda, lihat Android nilai string terpisah untuk rilis dan debug build .Jadi, buat file ini:
Kemudian tempel ke
app\src\debug\res\values\
danapp\src\release\res\values\
folder. Ganti "Nama aplikasi Anda" di debug dan lepaskan file. Hapusapp_name
item daristrings.xml
dalamapp\src\main\res\values\
folder.Di dalam
AndroidManifest
kamu akan memiliki yang samaTidak ada perubahan sama sekali. Bahkan jika Anda menambahkan perpustakaan dengan
AndroidManifest
file itu danstrings.xml
.sumber
Ketika penulis meminta untuk melakukan ini di Gradle , kita dapat mengasumsikan dia ingin melakukannya dalam skrip dan bukan pada file konfigurasi. Karena baik Android Studio maupun Gradle telah banyak diperbarui dan dimodifikasi pada tahun lalu (~ 2018), semua jawaban lain di atas, tampaknya terlalu berbelit - belit . Cara mudah-peasy, adalah menambahkan berikut ini ke Anda
app/build.gradle
:sumber