Я немного исследовал плагин google-services и json и нашел источники для этого плагина.
Перво-наперво
Gradle-plugin google-services, на который ссылается classpath и с помощью apply, является только плагином времени сборки! Таким образом, это влияет только на процесс сборки вашего приложения, но не на процесс выполнения!
Этот плагин предназначен только как помощник для быстрой интеграции служб Google в ваше приложение. Очевидно, что процесс несколько запутан и не задокументирован, поэтому Google должен был прояснить, что этот процесс делает.
Фактически, я нашел исходный код для версии плагина com.google.gms: google-services: 1.4.0-beta3 и не нашел в нем какой-либо конкретной ссылки относительно appinvites и не нашел никакого Google API для App Invites! (Но, возможно, он просто использует общий проект API с идентификатором проекта, я этого не пробовал)
Что оно делает
Плагин google-services gradle-plugin ищет упомянутый файл google-services.json в вашем модуле приложения. Затем он ищет настроенные параметры, такие как идентификаторы проекта, идентификаторы отслеживания и т. Д., Созданные консолью разработчика Google API в файле google-services.json. Из найденных настроек значения ресурсов Android генерируются по следующему пути:
$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml
Например, для отладки вашего приложения:
app/build/generated/res/google-services/debug/values/values.xml
Например, если вы следовали руководству GCM, файл JSON будет включать идентификатор проекта API в качестве следующего ресурса android:
<string name="gcm_defaultSenderId">project-id</string>
Таким образом, этот плагин и файл JSON не являются необходимыми для запуска или публикации вашего приложения, это просто помощник по быстрому запуску для создания некоторых базовых файлов ресурсов Android для упрощения интеграции определенных функций Google API.
Обратите внимание, что в исходном коде, упомянутом ниже, плагин google-services всегда генерирует эти ресурсы android для каждого варианта приложения, определенного в вашем app / build.gradle.
Если вы этого не хотите, вы должны использовать эти сгенерированные ресурсы в нужных вам вариантах приложения, а остальные удалить. Не забудьте удалить плагин google-services apply из app / build.gradle, иначе он будет восстановлен для всех вариантов приложения.
Что это не так
Этот плагин и JSON-файл НЕ влияют напрямую на внутреннюю работу указанных функций Google для вашего приложения! Если вы уже следовали более старым руководствам на сайте developer.android.com по интеграции, например, GCM или Google Analytics, вам даже не нужно интегрировать ни google-services gradle-plugin, ни файл google-services.json!
Уведомление о том, где я нашел источники
После того, как вы интегрировали gradle-plugin google-services и при синхронизации вашего проекта, Gradle автоматически загружает зависимость google-services по пути, подобному этому (в Windows вам может потребоваться заглянуть в свой дом / .gradle для Linux):
C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.gms\google-services\1.4.0-beta3\f1580f62e3be313eba041ce19b64fd3f44cf8951\google-services-1.4.0-beta3-sources.jar
Если вы извлечете этот jar-файл, вы найдете два файла:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
которые содержат простой исходный код плагина gradle.
GoogleServicesPlugin.groovy
содержит обработку вариантов приложения, основные определения путей и т. д.
GoogleServicesTask.java
содержит фактическое определение задачи, найдите следующий метод, чтобы увидеть, что он на самом деле делает:
@TaskAction
public void action() throws IOException {