به عنوان بخشی از افزودن Firebase به پروژه اندروید خود، باید افزونه Gradle و فایل پیکربندی را به پروژه خود اضافه کنید.
اگر Firebase را با استفاده از کنسول Firebase ، رابط برنامهنویسی مدیریت REST یا رابط خط فرمان Firebase به پروژه اندروید خود اضافه کنید، باید افزونه Gradle و فایل پیکربندی JSON را به صورت دستی به پروژه خود اضافه کنید. با این حال، اگر Firebase Assistant for Android Studio استفاده میکنید، این وظایف به طور خودکار در طول راهاندازی برای شما انجام میشوند.
افزونه Gradle را اضافه کنید
افزونهی Gradle مربوط به سرویسهای گوگل ( ) را به فایل build.gradle خود اضافه میکنید:
dependencies {
classpath 'com.google.gms:google-services:4.5.0'
// ...
}
افزونه Gradle سرویسهای گوگل دو عملکرد اصلی دارد:
فایل پیکربندی
را پردازش میکند و منابع اندرویدی تولید میکند که میتوانند در کد برنامه شما استفاده شوند.google-services.json وابستگیهایی را برای کتابخانههای اساسی مورد نیاز برای سرویسهایی که فعال کردهاید اضافه میکند. این مرحله مستلزم آن است که افزونه Google services Gradle را در فایل
app/build.gradleخود اعمال کنید، مانند این:
apply plugin: 'com.google.gms.google-services'میتوانید نتیجهی این مرحله را با اجرای
./gradlew :app:dependenciesمشاهده کنید.
فایل پیکربندی JSON را اضافه کنید
فایل پیکربندی معمولاً در پوشه app/ (در ریشه ماژول برنامه اندروید استودیو) قرار دارد. از نسخه 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 شامل اطلاعاتی در مورد کلاینتها (برنامههای اندروید) است که به پروژه اضافه کردهاید.
هنگام پردازش فایل JSON برای برنامه اندروید شما، افزونه فقط از شیء client استفاده میکند که با نام بسته شما (برای نوع ساخت فعلی) بر اساس منطق زیر مطابقت دارد:
برای هر عضو از آرایه
client، افزونه مقدارclient_info/android_client_info/package_nameرا بررسی میکند. اگر نام بسته با این مقدار مطابقت داشته باشد، شیء عضو را برمیگرداند.اگر هیچ یک از اعضای
clientبا نام بسته مطابقت نداشته باشند، افزونه یک استثنا ایجاد میکند.
در ادامهی این سند از YOUR_CLIENT برای اشاره به عضوی از آرایهی client که توسط منطق توضیح داده شده در بالا تعیین میشود، استفاده میشود.
تولید فایلهای XML
نتیجه اصلی پردازش JSON تولید دو فایل XML است که میتوانید به عنوان منابع اندروید در کد خود به آنها ارجاع دهید. در زیر نمونههایی از هر فایل آمده است:
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 در فایل پیکربندی در مکانهای ذکر شده در زیر موجود است. اگر پروژه اندروید شما پیکربندیای دارد که مانع از استفاده از افزونه 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/ پروژه اندروید استودیو خود کپی کنید، یا اگر از چندین نوع ساخت استفاده میکنید، آن را در پوشه app/src/{build_type} قرار دهید.
من نمیتوانم نمادهایی مانند R.string.gcm_defaultSenderId یا R.xml.global_tracker را پیدا کنم.
مطمئن شوید که نام بسته در فایل build.gradle شما با نام بستهای که هنگام ایجاد فایل google-services.json وارد کردهاید، مطابقت دارد. اگر مطمئن نیستید، دوباره مراحل شروع را اجرا کنید و یک فایل JSON جدید دریافت کنید.