Projemde lezzet boyutları kullanıyorum ve benim oluşturulan tatlar için applicationID ayarlamak için döngü için kullanıyoruz:Lezzet boyutlarını kullanırken Android applicationId ayarının doğru yolu nedir?
flavorDimensions "appname", "brand"
productFlavors {
user {
dimension "appname"
}
installer {
dimension "appname"
}
branda {
dimension "brand"
}
brandb {
dimension "brand"
}
brandc {
dimension "brand"
}
brandd {
dimension "brand"
}
}
Bir Ben şu anda desteklemeyen olanlar filtre:
variantFilter { variant ->
def names = variant.flavors*.name
if (names.contains("installer") && (names.contains("brandc") || names.contains("brancd"))) {
variant.ignore = true
}
}
Sonra applicationID lezzet adını göre güncelleyin: iki soru var
applicationVariants.all { variant ->
def flavorString = variant.getVariantData().getVariantConfiguration().getFlavorName()
def mergedFlavour = variant.getVariantData().getVariantConfiguration().getMergedFlavor();
switch (flavorString) {
/**
* user
*/
case "userBranda":
mergedFlavour.setApplicationId("com.mycompany.product.user.someName")
mergedFlavour.setVersionName("1.0.0")
break
case "userBrandb":
mergedFlavour.setApplicationId("com.mycompany.product.user.b")
mergedFlavour.setVersionName("2.0.0")
break
case "userBrandc":
mergedFlavour.setApplicationId("com.mycompany.product.user.otherName")
mergedFlavour.setVersionName("1.5.0")
break
case "userBrandd":
mergedFlavour.setApplicationId("com.mycompany.product.user.d")
mergedFlavour.setVersionName("1.0.1")
break
/**
* installer
*/
case "installerBranda":
mergedFlavour.setApplicationId("com.mycompany.product.installer.marketingName")
mergedFlavour.setVersionName("1.0.0")
break
case "installerBrandb":
mergedFlavour.setApplicationId("com.mycompany.product.installer.b")
mergedFlavour.setVersionName("1.0.0")
break
default:
throw new GradleException("flavor ${flavorString} is not supported, please configure it first...")
break
}
:
- Bunu yapmanın doğru yolu bu mu? Android eklentisi flavorDimensions kullanarak applicationId'yi yapılandırmanın bir yolunu desteklemiyor mu?
- Burada söz Zaten içeride tanımlanan uygulama paketi olan bir google-services.json kullanıyorsanız örneğin dışında, vakaların çoğunda çalışır yapılandırması. Basit productFlavor kullanım için yapılandırma normalde çalışır, ama lezzet boyutlarını kullanmak durumunda gradle hep şikayet ediyor::app:processUserBrandaDebugGoogleServices
No matching client found for package name 'com.mycompany.product'
Temelde 'com.mycompany.product' AndroidManifest varsayılan olarak tanımlanır paketidir. xml. Ben
app/build/intermediates/manifests/full/userBranda/debug/AndroidManifest.xml
bakarsanız ben paket başarı ile değiştirildi görebiliriz.
Bununla ilgili sonuca varabildiklerim, yalnızca lezzet boyutlarında, bir şekilde taslakların yalnızca processUserBrandaDebugGoogleServices'ten sonra birleştirilmesidir. Bu, bu noktada, bildiride tanımlanan paketin varsayılan değer olduğu anlamına gelir.
Aynı sorun yaşayan herkes burada mı? Bu sorun nasıl çözülür? Bu bir android gradle eklenti hatası mı? Kısacası
Bkz http://tools.android.com/tech- Daha fazla bilgi için docs/new-build-system/applicationid-vs-packagename. –
Dokümantasyon, flavorDimensions için applicationId ayarı hakkında hiçbir şey söylemiyor. –
Yani http://stackoverflow.com/a/26585241/4310905 hemen hemen aynıdır, bu yüzden kodunuz iyi görünüyor. –