Что делает Google-сервисы.json действительно делает?
Я работаю над добавлением сервисов Google Analytics и GCM в мое текущее приложение.
В руководстве по реализации обеих служб google просит разработчика создать файл json: google-services.json и поместите его в корневой каталог приложения.
Я обнаружил, что даже если я удалю этот файл json из своего приложения, службы все еще работают.
просто хочу знать наверняка, для чего на самом деле этот файл? Каково его использование и как оно работает?
3 ответов:
Я немного исследовал плагин google-services и json и нашел источники для этого плагина.
во-первых
gradle-плагин google-services, на который ссылается classpath и с помощью apply, является только плагином времени сборки! Таким образом, это влияет только на процесс сборки вашего приложения, но не на процесс выполнения!
этот плагин предназначен только как быстрый старт-помощник для быстрой интеграции Google-сервисов в ваше приложение. Очевидно, что процесс несколько запутан и не документирован, поэтому Google должен был дать понять, что этот процесс делает.
на самом деле, я нашел исходный код для плагина версии com.гуглить.gms: google-services: 1.4.0-beta3 и не нашел в нем никакой конкретной ссылки на appinvites, и я не нашел никакого Google API для приглашений приложений! (Но, возможно, он просто использует общий проект API с его идентификатором проекта, я не пробовал это)
что это значит
google-услуги gradle-плагин ищет упомянутые google-сервисы.JSON-файл в вашем приложении-модуль. Затем он ищет настроенные параметры, такие как 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например, если вы следовали учебнику GCM, файл JSON будет включите идентификатор проекта API в качестве следующего android-ресурса:
<string name="gcm_defaultSenderId">project-id</string>таким образом, этот плагин и файл JSON не являются необходимыми для запуска или публикации вашего приложения, это просто быстрый помощник для создания некоторых основных файлов android-ресурсов для более легкой интеграции конкретных функций Google API.
обратите внимание в исходном коде, указанном ниже, что плагин google-services всегда генерирует те android-ресурсы для каждого варианта приложения, который определен в вашем приложение/сборка.градля.
если вы этого не хотите, вы должны использовать эти сгенерированные ресурсы в нужных вам вариантах приложений и удалить остальные. Не забудьте удалить плагин google-services apply из приложения / сборки.gradle, иначе он будет восстановлен для всех вариантов приложений.
что это не
этот плагин и JSON-файл напрямую не влияют на внутреннюю работу указанных Google-функций для вашего приложения! Если вы уже следовали старым учебникам developer.android.com о том, как интегрировать, например, GCM или Google Analytics, тогда вам даже не нужно интегрировать ни gradle-плагин google-services, ни google-services.файл json!
обратите внимание, где я нашел источники
после того, как вы интегрировали Google-services gradle-plugin и при синхронизации вашего проекта, 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-файл будет сгенерирован в приложении/построения/создания/РЭС/гугл-сервисы/отладки/значения/значения.xml с вашими свойствами проекта, и вы можете легко получить доступ, как обычная строка xml. Пример:
String serverClientId = getString(R.string.default_web_client_id);есть список со всеми строками и momre info в google-сервис.документ JSON
Comments