У меня была такая же проблема: у меня есть проект, который создает несколько приложений, каждое приложение имеет два варианта: один распространяется через Google Play и использует API-интерфейсы Google Play Services и Firebase, другой вариант распространяется через веб-загрузку (в основном для устройств AOSP) и не может включать сервисы Google Play или API Firebase.
В нашем файле app/build.gradle мы не хотели никаких причудливых тестов условий, которые не кажутся совершенно очевидными, под этим мы подразумевали «если вариант == веб, то не применять подключаемые сервисы Google Play». Мы также не хотели иметь несколько копий файла google-services.json, то есть по одной для каждого приложения, нам нужна была копия, содержащая все пакеты приложений, включенные для сервисов Google Play. Это связано с тем, что мы довольно регулярно добавляем и удаляем приложения и хотим управлять этими приложениями как одним проектом в консоли Firebase.
Решение состояло в том, чтобы создать измерение распределения, это измерение должно быть помещено первым в массиве flavorDimensions (подключаемый модуль com.google.gms.google-services ищет google-services.json только в первом измерении). ).
flavorDimensions 'distribution', 'application'
productFlavors {
store {
dimension 'distribution'
}
web {
dimension 'distribution'
applicationIdSuffix ".nogms"
}
app1 {
dimension 'application'
applicationId 'com.example.app1'
}
app2 {
dimension 'application'
applicationId 'com.example.app2'
}
У параметра распространение было два значения: "магазин" и "Интернет".
Файл google-services.json, сгенерированный консолью Firebase, был помещен в каталог app/src/store.
В каталог app/src/web мы поместили фиктивный файл google-services.json со следующим содержимым:
{
"project_info": {
"project_number": "0",
"project_id": "api-project-0"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:0:android:0",
"android_client_info": {
"package_name": "com.example.app1.nogms"
}
},
"api_key": [
{
"current_key": "none"
}
]
},
{
"client_info": {
"mobilesdk_app_id": "1:0:android:0",
"android_client_info": {
"package_name": "com.example.app2.nogms"
}
},
"api_key": [
{
"current_key": "none"
}
]
}
]
}
Это делает плагин счастливым. (Наборы приложений, отличные от GMS, необходимо добавлять в массив «client»:[] по мере необходимости).
Библиотеки GMS и Firebase были условно включены только в разновидности магазина:
dependencies {
storeImplementation 'com.google.firebase:firebase-core:16.0.8'
storeImplementation 'com.google.firebase:firebase-iid:17.1.2'
storeImplementation 'com.google.firebase:firebase-messaging:17.6.0'
}
И, наконец, подключаемый модуль Google Play Services был применен глобально в конце build.gradle, как указано в https://firebase.google.com/docs/android/setup
apply plugin: 'com.google.gms.google-services'
person
BitByteDog
schedule
21.06.2019
android.applicationVariants.all{ it.variantData.getVariantConfiguration().getFullName().capitalize(); //if here}
- person Leonard Arnold   schedule 14.02.2017