Условно примените плагин GMS google-services
Я был очень осторожен, чтобы не вводить зависимости Google-Android в мое приложение Android на протяжении многих лет, и у меня есть две разновидности, сохраняющие эту сегрегацию, withAmazon
а также withGoogle
,
app
|_ main
|_ test
|_ withAmazon
|_ withGoogle
Недавно я экспериментировал с Firebase Analytics, который во многом является продуктом только для Google OHA, и я не верю, что он предназначен для работы вне экосистемы Google (хотя есть некоторые отчеты, которые он делает). Частью установки для Firebase является применение google-services
плагин.
apply plugin: 'com.google.gms.google-services'
Тем не менее withAmazon
аромат не включает google-service.json
... потому что... ну, это не для Google.
app
|_ main
|_ test
|_ withAmazon
|- java
|- AndroidManifest.xml
|_ withGoogle
|- java
|- AndroidManifest.xml
|- google-services.json
... но так как плагины Gradle, по-видимому, должны применяться в рамках всего проекта, возможно ли применить плагин gms только к одному из вариантов? Сбой сборки в сценарии, описанном выше при компиляции аромата Amazon, так как он жалуется на google-services.json
не существует... что правильно.
Прямо сейчас мой обходной путь должен переместить google-services.json
под app/
каталог. Задача решена. Тем не менее, это не правильно, что мое очень четкое разделение между Google и "чистой" ОС Android нарушается.
Любая помощь любезно получена.
1 ответ
Я решил эту проблему, изменив мой родительский файл build.gradle следующим образом;
if (getGradle().getStartParameter().getTaskRequests().toString().contains(withGoogleFlavor)){
apply plugin: 'com.google.gms.google-services'
}
Теперь плагин (и связанные с ним сервисы Google Play Services) не добавляются во вкладку Amazon моего приложения. Кроме того, google-services.json
теперь живет под вкусом "withGoogle".
Замечания: withGoogle
это определение, определенное в другом месте со значением "withGoogle". Подтверждение: /questions/3911048/kak-primenit-plagin-tolko-k-odnomu-aromatu-v-gradle/3911060#3911060