Ответ 1
Я немного изучил плагин google-services и json и нашел источники этого плагина.
Сначала первые вещи
gradle -plugin google-сервисы, на которые ссылается путь к классам, и с применением - это только плагин для построения времени! Таким образом, это влияет только на процесс сборки вашего приложения, но не на процесс выполнения!
Этот плагин предназначен только для быстрого запуска, чтобы быстро интегрировать Google-сервисы в ваше приложение. Очевидно, что процесс несколько запутан и не документирован, поэтому Google должен был четко указать, что делает этот процесс.
Фактически, я нашел исходный код для версии плагина com.google.gms: google-services: 1.4.0-beta3 и не нашел в ней каких-либо конкретных ссылок в отношении appinvites, а также не нашел Google API для приложений Invites! (Но, возможно, он просто использует общий проект API с идентификатором проекта, я этого не делал)
Что он делает
Google-сервисы 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 файл не являются существенными для запуска или публикации вашего приложения, это просто помощник быстрого запуска для генерации некоторых базовых файлов андроидных ресурсов для упрощения интеграции определенных функций API Google.
Обратите внимание на приведенный ниже исходный код, что плагин google-services всегда генерирует эти ресурсы android для каждого варианта приложения, определенного в вашем приложении /build.gradle.
Если вы этого не хотите, вы должны использовать эти сгенерированные ресурсы в желаемых вариантах приложения и удалить остальные. Не забудьте удалить плагин google-services из приложения /build.gradle, иначе он будет регенерирован для всех вариантов приложений.
Что это не означает
Этот плагин и JSON файл НЕ напрямую влияют на внутреннюю работу указанных Google-функций для вашего приложения! Если вы уже следовали старым учебникам на сайте developer.android.com о том, как интегрировать, например, GCM или Google Analytics, тогда вам даже не нужно интегрировать либо google-сервисы gradle -plugin, либо файл google-services.json!
Уведомление о том, где я нашел источники
После того, как вы интегрировали утилиту google-services gradle -plugin и при синхронизации проекта Gradle автоматически загружает зависимость google-сервисов к пути, подобному этому (в 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 -plugin.
GoogleServicesPlugin.groovy
содержит обработку вариантов приложений и основных определений путей и т.д.
GoogleServicesTask.java
содержит фактическое определение задачи, найдите следующий метод, чтобы увидеть, что он на самом деле делает:
@TaskAction
public void action() throws IOException {