При добавлении Firebase в проект для Android вам нужно добавить в проект плагин Gradle и файл конфигурации .
Если вы добавляете Firebase в проект для Android с помощью консоли Firebase, Management REST API или CLI Firebase, вам нужно вручную добавить в проект плагин Gradle и файл конфигурации JSON. Однако если вы используете Firebase Assistant for Android Studio, эти задачи будут выполнены автоматически во время настройки.
Добавьте плагин Gradle
Добавьте плагин Google Services Gradle () в файл build.gradle:
dependencies {
classpath 'com.google.gms:google-services:4.5.0'
// ...
}
У плагина сервисов Google для Gradle есть две основные функции:
Обрабатывает файл конфигурации
и создает ресурсы Android, которые можно использовать в коде приложения.google-services.json Добавляет зависимости для базовых библиотек, необходимых для включенных сервисов. Для этого нужно применить плагин Google Services Gradle в файле
app/build.gradle, как показано ниже:
apply plugin: 'com.google.gms.google-services'Чтобы посмотреть результат этого шага, выполните команду
./gradlew :app:dependencies.
Добавьте файл конфигурации JSON
Файл конфигурации обычно находится в каталоге app/ (в корне модуля приложения Android Studio). Начиная с версии 2.2.0 плагин поддерживает JSON-файлы, относящиеся к типу сборки и версии продукта. Все перечисленные ниже структуры каталогов являются допустимыми:
// dogfood and release are build types.
app/
google-services.json
src/dogfood/google-services.json
src/release/google-services.json
...
Если используются версии продукта, то такие более сложные структуры каталогов также допустимы.
// free and paid are product flavors.
app/
google-services.json
src/dogfood/paid/google-services.json
src/release/free/google-services.json
...
Как обрабатывается файл конфигурации JSON
Файл конфигурации имеет следующую базовую структуру:
{
"project_info": {...},
"client": [...],
}
Объект project_info содержит общую информацию о проекте, а каждый элемент массива client – информацию о клиентах (приложениях Android), добавленных в проект.
При обработке JSON-файла для приложения Android плагин использует только объект client, который соответствует названию пакета (для текущего типа сборки) на основе следующей логики:
Для каждого элемента массива
clientплагин проверяет значениеclient_info/android_client_info/package_name. Если название пакета совпадает с этим значением, возвращается объект участника.Если ни один из элементов
clientне соответствует названию пакета, плагин выдает исключение.
В оставшейся части этого документа YOUR_CLIENT используется для обозначения элемента массива client, определенного по описанной выше логике.
Создание XML-файлов
Основной результат обработки JSON – создание двух XML-файлов, на которые можно ссылаться как на ресурсы Android в коде. Ниже приведены примеры каждого файла.
app/build/generated/res/google-services/{build_type}/values/values.xml<?xml version="1.0" encoding="utf-8"?> <resources> <! -- Present in all applications --> <string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string> <! -- Present in applications with the appropriate services configured --> <string name="gcm_defaultSenderId" translatable="false">1035469437089</string> <string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string> <string name="ga_trackingId" translatable="false">UA-65557217-3</string> <string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string> <string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string> <string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string> <string name="project_id" translatable="false">mydemoapp</string> </resources>app/build/generated/res/google-services/{flavor}/{build_type}/xml/global_tracker.xml<?xml version="1.0" encoding="utf-8"?> <resources> <string name="ga_trackingId" translatable="false">UA-65557218-3</string> </resources>
Значения в XML-файлах
Каждое значение в XML-файлах присутствует в файле конфигурации в указанных ниже местах. Если в вашем проекте для Android есть конфигурация, которая не позволяет использовать плагин Gradle, вы можете вручную воссоздать XML-файлы, используя эти значения.
google_app_idYOUR_CLIENT/client_info/mobilesdk_app_idgcm_defaultSenderIdproject_info/project_numberdefault_web_client_idYOUR_CLIENT/oauth_client/client_id (client_type == 3)ga_trackingIdYOUR_CLIENT/services/analytics-service/analytics_property/tracking_idfirebase_database_urlproject_info/firebase_urlgoogle_api_keyYOUR_CLIENT/api_key/current_keygoogle_crash_reporting_api_keyYOUR_CLIENT/api_key/current_keyproject_idproject_info/project_id
Устранение неполадок
При сборке появляется сообщение об ошибке: File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it.
Консоль Firebase поможет вам скачать файл конфигурации .
Скачав файл конфигурации , скопируйте его в папку app/ проекта Android Studio или в папку app/src/{build_type}, если вы используете несколько типов сборки.
Я не могу найти символы, такие как R.string.gcm_defaultSenderId или R.xml.global_tracker.
Убедитесь, что название пакета в файле build.gradle совпадает с названием пакета, которое вы указали при создании файла google-services.json. Если вы не уверены, выполните процедуру начала работы ещё раз и получите новый JSON-файл.