مقدمه
به عنوان بخشی از فعال کردن Google API یا خدمات Firebase در برنامه Android خود، ممکن است مجبور شوید افزونه google-services
به فایل build.gradle
خود اضافه کنید:
dependencies {
classpath 'com.google.gms:google-services:4.4.2'
// ...
}
افزونه google-services
دو عملکرد اصلی دارد:
- فایل
google-services.json
را پردازش کنید و منابع Android را تولید کنید که می تواند در کد برنامه شما استفاده شود. اطلاعات بیشتر افزودن فایل JSON را ببینید. وابستگی هایی را برای کتابخانه های اصلی مورد نیاز برای سرویس هایی که فعال کرده اید اضافه کنید. این مرحله مستلزم آن است که افزونه Google Services Gradle را در فایل
app/build.gradle
خود اعمال کنید، مانند:
apply plugin: 'com.google.gms.google-services'
با اجرای
./gradlew :app:dependencies
می توانید نتیجه این مرحله را مشاهده کنید.
افزودن فایل JSON
فایل google-services.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 ...
توجه: ارائه یک فایل google-services.json در فهرست انتشار به شما امکان می دهد یک پروژه Firebase جداگانه برای APKهای تولیدی خود نگهداری کنید.
هنگامی که طعم محصول استفاده می شود، این ساختارهای دایرکتوری پیچیده تر نیز معتبر هستند.
// free and paid are product flavors. app/ google-services.json src/dogfood/paid/google-services.json src/release/free/google-services.json ...
در حال پردازش فایل JSON
فایل google-services.json
ساختار اصلی زیر را دارد:
{ "project_info": {...}, "client": [...], }
شی project_info
حاوی اطلاعات کلی در مورد پروژه شما است، در حالی که هر عضو آرایه client
حاوی اطلاعاتی در مورد کلاینت ها (برنامه های اندروید) است که به پروژه اضافه کرده اید.
هنگام پردازش فایل JSON برای برنامه Android شما، این افزونه فقط از شی client
مطابق با نام بسته شما (برای نوع ساخت فعلی) بر اساس منطق زیر استفاده می کند:
- برای هر عضو آرایه
client
:- مقدار
client_info/android_client_info/package_name
را بررسی کنید - اگر نام بسته با این مقدار مطابقت داشت، شی عضو را برگردانید.
- مقدار
- اگر هیچ یک از اعضای
client
با نام بسته مطابقت نداشته باشد، یک استثنا ایجاد می شود.
برای بقیه این سند، از {YOUR_CLIENT}
برای ارجاع به عضوی از آرایه client
که طبق روال بالا تعیین شده است، استفاده خواهیم کرد.
نتیجه اصلی پردازش 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 در فایل google-services.json
در مکانهای زیر وجود دارد. اگر پروژه Android شما دارای تنظیماتی است که شما را از استفاده از افزونه google-services
باز می دارد، می توانید با خیال راحت فایل های XML را با استفاده از این مقادیر به صورت دستی دوباره ایجاد کنید:
google_app_id :
{YOUR_CLIENT}/client_info/mobilesdk_app_id
gcm_defaultSenderId :
project_info/project_number
default_web_client_id :
{YOUR_CLIENT}/oauth_client/client_id (client_type == 3)
ga_trackingId :
{YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id
firebase_database_url :
project_info/firebase_url
google_api_key :
{YOUR_CLIENT}/api_key/current_key
google_crash_reporting_api_key :
{YOUR_CLIENT}/api_key/current_key
project_id :
project_info/project_id
عیب یابی
س: هنگام ساخت پیغام خطای زیر را دریافت می کنم: "فایل google-services.json از پوشه ریشه ماژول وجود ندارد. افزونه خدمات گوگل بدون آن کار نمی کند".
پاسخ: کنسول Firebase به شما کمک می کند google-services.json
را دانلود کنید. علاوه بر این، راهنماهای Quickstart برای اکثر APIها دستورالعمل هایی برای تولید این فایل دارند. هنگامی که فایل google-services.json
را دانلود کردید، آن را در پوشه app/
پروژه Android Studio خود یا در پوشه app/src/{build_type}
کپی کنید اگر از چندین نوع ساخت استفاده می کنید.
س: من نمی توانم نماد "R.string.gcm_defaultSenderId"، "R.xml.global_tracker"، و غیره را پیدا کنم.
پاسخ: مطمئن شوید که نام بسته در فایل build.gradle
شما با نام بسته ای که هنگام ایجاد فایل google-services.json
وارد کرده اید مطابقت داشته باشد. اگر مطمئن نیستید، دوباره جریان شروع کار را اجرا کنید و یک فایل json جدید دریافت کنید.