مقدمه
به عنوان بخشی از فعالسازی APIهای گوگل یا سرویسهای Firebase در برنامه اندروید خود، ممکن است لازم باشد افزونه google-services را به فایل build.gradle خود اضافه کنید:
dependencies {
classpath 'com.google.gms:google-services:4.5.0'
// ...
}
افزونهی google-services دو عملکرد اصلی دارد:
- فایل
google-services.jsonرا پردازش کرده و منابع اندرویدی تولید میکند که میتوانند در کد برنامه شما استفاده شوند. برای اطلاعات بیشتر به بخش افزودن فایل JSON مراجعه کنید. Add dependencies for basic libraries required for the services you have enabled. This step requires that you apply the Google Services Gradle plugin in your
app/build.gradlefile, like so:
apply plugin: 'com.google.gms.google-services'میتوانید نتیجهی این مرحله را با اجرای
./gradlew :app:dependenciesمشاهده کنید.
اضافه کردن فایل JSON
فایل google-services.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 ...
توجه: ارائه یک فایل google-services.json در دایرکتوری release به شما امکان میدهد تا یک پروژه 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
The google-services.json file has the following basic structure:
{
"project_info": {...},
"client": [...],
} شیء project_info شامل اطلاعات کلی در مورد پروژه شما است، در حالی که هر عضو از آرایه client شامل اطلاعاتی در مورد کلاینتها (برنامههای اندروید) است که به پروژه اضافه کردهاید.
هنگام پردازش فایل JSON برای برنامه اندروید شما، افزونه فقط از شیء client استفاده میکند که با نام بسته شما (برای نوع ساخت فعلی) بر اساس منطق زیر مطابقت دارد:
- برای هر عضو آرایه
client:- مقدار
client_info/android_client_info/package_nameرا بررسی کنید. - اگر نام بسته با این مقدار مطابقت داشت، شیء عضو را برمیگرداند.
- مقدار
- اگر هیچ یک از اعضای
clientبا نام بسته مطابقت نداشته باشند، یک استثنا ایجاد میشود.
For the rest of this document we will use {YOUR_CLIENT} to refer to the member of the client array determined by the procedure above.
نتیجه اصلی پردازش 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> Every value in the XML files is present in the google-services.json file at the locations below. If your Android project has some configuration that prevents you from using the google-services plugin, you can safely recreate the XML files manually using these values:
شناسه برنامه گوگل :
{YOUR_CLIENT}/client_info/mobilesdk_app_idgcm_defaultSenderId :
project_info/project_number
شناسه پیشفرض_وب_کلاینت :
{YOUR_CLIENT}/oauth_client/client_id (client_type == 3)
شناسه ردیابی ga :
{YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_idآدرس اینترنتی پایگاه داده فایربیس :
project_info/firebase_url
کلید google_api :
{YOUR_CLIENT}/api_key/current_keygoogle_crash_reporting_api_key :
{YOUR_CLIENT}/api_key/current_keyشناسه_پروژه :
project_info/project_id
عیبیابی
س: هنگام ساخت، پیام خطای زیر را دریافت میکنم: «فایل google-services.json از پوشه ریشه ماژول وجود ندارد. افزونه سرویسهای گوگل بدون آن نمیتواند کار کند».
A: The Firebase console will help you download the google-services.json . In addition, the Quickstart guides for most APIs have instructions for generating this file. Once you have downloaded the google-services.json file, copy it into the app/ folder of your Android Studio project, or into the app/src/{build_type} folder if you are using multiple build types.
س: نمیتوانم نماد "R.string.gcm_defaultSenderId"، "R.xml.global_tracker" و غیره را پیدا کنم.
الف) مطمئن شوید که نام بسته در فایل build.gradle شما با نام بستهای که هنگام ایجاد فایل google-services.json وارد کردهاید، مطابقت دارد. اگر مطمئن نیستید، دوباره مراحل شروع را طی کنید و یک فایل json جدید دریافت کنید.