Saya tahu thread ini sudah cukup lama, tapi menurut saya tidak ada jawaban yang diberikan benar-benar memecahkan masalah. Flavor tidak cocok untuk membuat parameter bangunan Anda dengan hal-hal seperti URL API, dan lebih buruk lagi untuk hal-hal seperti kunci API, dll.
Pertama, build.gradle
yang mendefinisikan ragam adalah bagian dari sumber proyek, oleh karena itu tidak boleh berisi informasi tersebut agar dapat dimasukkan dengan aman ke dalam sistem kendali sumber.
Kedua, mungkin timbul kebutuhan untuk menguji ragam yang berbeda terhadap titik akhir/kunci API yang berbeda. Bagaimana jika Anda hanya ingin melakukan debug pada server http yang baru saja Anda buat untuk mengatasi bug? Apakah Anda akan menciptakan rasa untuk itu? Mungkin tidak... Perasa cocok untuk hal-hal seperti "rasa gratis" dan "rasa premium".
Masalah ini mudah diselesaikan dengan menggunakan flag gradle -P
. Anda dapat mengakses properti gradle yang diteruskan dengan cara ini sebagai variabel reguler di dalam gradle.build Anda, dan Anda dapat memvariasikan perilakunya.
Jika Anda ingin memasukkan tanda ini lebih jauh ke dalam aplikasi Anda, Anda dapat menggunakan solusi Scott yang diposting di sini, dikombinasikan dengan tanda yang disediakan.
Perintah build mungkin akan terlihat seperti:
$ gradle build -Papiroot=http://www.example.com
Dan di build.gradle
Anda, Anda akan mendefinisikan tugas writeValue
seperti ini:
task writeValue(type:Exec) {
commandLine '/usr/local/bin/adb', 'shell', "echo 'API_SERVER=${apiroot}' > /data/data/values.properties"
}
Sekadar informasi, flag -P dapat dikonfigurasi dengan mudah di Android Studio dengan menavigasi dari menu:
Jalankan -> Jalankan/Debug Konfigurasi -> Default -> Gradle -> Parameter Skrip
person
Karol Majta
schedule
23.04.2015