2 buildTypes (debug, release) ve 2 productFlavors (product1, product2) var. Her buildType ve productFlavors için bir buildConfigField tanımlamak istiyorum. BuildConfigField, sunucudan veri indirme uygulaması olan url'dur ve her ürün için değişiklik yaparFlavor ve buildTypes.Android Gradle'da Lezzet Başına Kod Yolu
buildTypes {
debug {
debuggable true
}
release {
debuggable false
}
}
productFlavors {
product1 {
buildConfigField STRING, "URL_BASE", '"https://api1.release.com"'
}
product2 {
buildConfigField STRING, "URL_BASE", '"https://api2.release.com"'
}
}
Ama hiç böyle bir şey istiyorum:
Şimdi, var
buildTypes {
debug {
debuggable true
}
release {
debuggable false
}
}
productFlavors {
product1 {
debug {
buildConfigField STRING, "URL_BASE", '"https://api1.debug.com"'
}
release {
buildConfigField STRING, "URL_BASE", '"https://api1.release.com"'
}
product2 {
debug {
buildConfigField STRING, "URL_BASE", '"https://api2.debug.com"'
}
release {
buildConfigField STRING, "URL_BASE", '"https://api2.release.com"'
}
}
}
Bunu nasıl başarabiliriz?
Güncelleme:
Her URL_BASE yüzden olamaz grup URL'ler farklı modeli vardır. Olumlu bir çözüm, farklı yapı tiplerinde 2 çeşidin url tabanını eklemek ve lezzet içinde doğru olanı seçmek. Eğer bir 'KEY_MAP' gibi gradle kaynakları eklemek gerekirse
buildTypes {
debug {
debuggable true
buildConfigField STRING, API_VARIANT_PRODUCT1, '"api1.deb.com"'
buildConfigField STRING, API_VARIANT_PRODUCT2, '"api2.debug.com"'
}
release {
debuggable false
buildConfigField STRING, API_VARIANT_PRODUCT1, '"api1.release.com"'
buildConfigField STRING, API_VARIANT_PRODUCT2, '"api2.release.com"'
}
}
productFlavors {
product1 {
buildConfigField STRING, URL_BASE, '"https://" + API_VARIANT_PRODUCT1 + "/v1"'
}
product2 {
buildConfigField STRING, URL_BASE, '"https://" + API_VARIANT_PRODUCT2 + "/v1"'
}
}
}
GÜNCELLEME 2
çözüm bu page içindedir.
Her yapı türü için eşit olan java sınıfları hakkında ne düşünüyorsunuz? Ürüne eklemek için her java sınıfını kopyalamam gerekir1Debug, product1Release? Ya da product1 adında bir klasör oluşturmam gerekiyor mu ve bu kod içeride mi? Örneğin, SplashActivity.java adlı bir java sınıfı, bu, yapı türleri için hata ayıklama ve ürün1 sürümünde aynıdır. Teşekkürler – beni
Java sınıfları için her buildTypes için 1 sınıf koymalısınız. Bu durumda kullanabilirsiniz: '- app/src/hata ayıklama:' ' - app/src/product1Release' ' - app/src/product2Release' –