Для добавления Firebase в ваш Android-проект необходимо добавить в проект плагин Gradle и конфигурационный файл .
Если вы добавляете Firebase в свой Android-проект с помощью консоли Firebase , REST API управления или Firebase CLI , вам необходимо вручную добавить плагин Gradle и файл конфигурации JSON в свой проект. Однако, если вы используете Firebase Assistant for Android Studio , эти задачи будут выполнены автоматически во время настройки.
Добавьте плагин Gradle.
Добавьте плагин Google Services Gradle ( ) в файл build.gradle :
dependencies {
classpath 'com.google.gms:google-services:4.5.0'
// ...
}
Плагин Gradle для сервисов Google выполняет две основные функции:
Обрабатывает конфигурационный файл
и создает ресурсы 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-файл.