Что делает Google-сервисы.в JSON действительно?

Я работаю над добавлением сервисов Google Analytics и GCM в мое текущее приложение. В руководстве по реализации обеих служб google просит разработчика создать файл json: google-services.json и поместите его в корневой каталог приложения.

Я обнаружил, что даже если я удалю этот файл json из своего приложения, службы все еще работают.

просто хочу знать точно, что этот файл на самом деле? Каково его использование и как оно работает?

3 ответов


Я немного исследовал плагин google-services и JSON и нашел источники этого плагина.

первым делом

gradle-plugin google-services, на который ссылается classpath и с apply, - это только плагин времени сборки! Таким образом, это влияет только на процесс сборки вашего приложения, но не на процесс выполнения!

этот плагин предназначен только как quickstart-помощник для быстрой интеграции Google-сервисов в вашем приложении. Очевидно, что процесс несколько запутан и не документирован, поэтому Google должен был дать понять, что этот процесс делает.

на самом деле, я нашел исходный код для плагина версии com.гуглить.gms: google-services: 1.4.0-beta3 и не нашел в нем конкретной ссылки на appinvites, и я не нашел Google API для приглашений приложений! (Но, возможно, он просто использует общий проект API с его идентификатором проекта, я не пробовал это)

что это значит

гугл-сервисы Gradle-плагин ищет упомянутые google-сервисы.файл json в вашем app-модуле. Затем он ищет настроенные параметры, такие как project-id и tracking-id и такие, генерируемые консолью разработчика 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

Е. Г. если вы следовали ГКМ учебник, файл JSON будет включите идентификатор проекта API в качестве следующего android-ресурса:

<string name="gcm_defaultSenderId">project-id</string>

таким образом, этот плагин и файл JSON не важны для запуска или публикации вашего приложения, это просто быстрый помощник для создания некоторых основных файлов android-ресурсов для облегчения интеграции конкретных функций Google API.

обратите внимание в исходном коде, указанном ниже, что плагин google-services всегда генерирует те android-ресурсы для каждого варианта приложения, который определен в вашем app / build.градля.

если вы этого не хотите, вы должны использовать эти сгенерированные ресурсы в нужных вам вариантах приложения и удалить другие. Не забудьте удалить плагин google-services apply из приложения / сборки.gradle, иначе он будет регенерирован для всех вариантов приложений.

что это не

этот плагин и JSON-файл напрямую не влияют на внутреннюю работу указанных Google-функций для вашего приложения! Если вы уже следовали старым учебникам по developer.android.com о том, как интегрировать, например, GCM или Google Analytics, вам даже не нужно интегрировать ни Gradle-plugin google-services, ни google-services.файл json!

обратите внимание, где я нашел источники

после того, как вы интегрировали Google-services gradle-плагин и при синхронизации проекта, Gradle автоматически загружает зависимость google-services на путь, подобный этому (в Windows, вам может потребоваться заглянуть в ваш дом/.градля для Linux):

C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.gms\google-services.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 { 

что на самом деле этот файл:

google-сервисы.в JSON содержит учетные данные разработчика и параметры конфигурации, которые необходимо проверить при подключении к GoogleApiClient. Хотя ваш сервис отлично работает с вашим тестовым устройством, поскольку он обнаруживает вашу учетную запись разработчика, но после публичного выпуска вашего приложения он не будет работать без файла json. Так что не удаляйте его.

Официальная Документация говорит:

приложение создает GoogleApiClient, указывая, к каким областям и API будет обращаться приложение. Когда GoogleApiClient подключается, пользователь входит в систему.

посмотреть как это работает.


добавить Google-сервисы.json для вашего модуля и сделать чистую и перестроить. Xml-файл будет создан в app/build/generated/res/google-services/debug/values/values.xml с вашими свойствами проекта, и вы можете легко получить доступ, как обычная строка xml. Пример:

String serverClientId = getString(R.string.default_web_client_id);

есть список со всеми строками и информацией momre в google-сервис.документ JSON