গুগল সার্ভিসেস গ্রেডল প্লাগইন

ভূমিকা

আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনে Google API বা Firebase পরিষেবাগুলি সক্ষম করার অংশ হিসাবে আপনাকে আপনার build.gradle ফাইলে google-services প্লাগইন যোগ করতে হতে পারে:

dependencies {
    classpath 'com.google.gms:google-services:4.4.1'
    // ...
}

google-services প্লাগইন দুটি প্রধান ফাংশন আছে:

  1. google-services.json ফাইলটি প্রক্রিয়া করুন এবং আপনার অ্যাপ্লিকেশনের কোডে ব্যবহার করা যেতে পারে এমন Android সংস্থান তৈরি করুন৷ আরও তথ্য JSON ফাইল যোগ করা দেখুন.
  2. আপনার সক্ষম করা পরিষেবাগুলির জন্য প্রয়োজনীয় মৌলিক গ্রন্থাগারগুলির জন্য নির্ভরতা যুক্ত করুন৷ এই ধাপের জন্য আপনাকে আপনার app/build.gradle ফাইলে Google Services Gradle প্লাগইন প্রয়োগ করতে হবে, যেমন:
    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 ফাইল প্রদান করলে আপনি আপনার প্রোডাকশন APKগুলির জন্য একটি পৃথক Firebase প্রকল্প বজায় রাখতে পারবেন।

যখন পণ্যের স্বাদগুলি ব্যবহার করা হয় তখন এই আরও জটিল ডিরেক্টরি কাঠামোগুলিও বৈধ।

// 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 অ্যারের প্রতিটি সদস্যের কাছে আপনার প্রোজেক্টে যোগ করা ক্লায়েন্টদের (Android অ্যাপস) সম্পর্কে তথ্য থাকে।

আপনার অ্যান্ড্রয়েড অ্যাপের জন্য JSON ফাইলটি প্রক্রিয়া করার সময়, প্লাগইনটি শুধুমাত্র সেই client অবজেক্ট ব্যবহার করে যা আপনার প্যাকেজের নামের সাথে মেলে (বর্তমান বিল্ড টাইপের জন্য) নিম্নলিখিত যুক্তির উপর ভিত্তি করে:

  • client অ্যারের প্রতিটি সদস্যের জন্য:
    • client_info/android_client_info/package_name এর মান পরীক্ষা করুন
    • যদি প্যাকেজের নাম এই মানের সাথে মেলে, সদস্য বস্তুটি ফেরত দিন।
  • যদি client সদস্যদের কেউ প্যাকেজের নামের সাথে মেলে না, একটি ব্যতিক্রম নিক্ষেপ করা হয়।

এই নথির বাকি অংশের জন্য আমরা উপরের পদ্ধতি দ্বারা নির্ধারিত client অ্যারের সদস্যকে উল্লেখ করতে {YOUR_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 ফাইলে উপস্থিত রয়েছে৷ যদি আপনার অ্যান্ড্রয়েড প্রোজেক্টে কিছু কনফিগারেশন থাকে যা আপনাকে google-services প্লাগইন ব্যবহার করতে বাধা দেয়, তাহলে আপনি নিরাপদে এই মানগুলি ব্যবহার করে ম্যানুয়ালি XML ফাইলগুলি পুনরায় তৈরি করতে পারেন:

google_app_id :

{YOUR_CLIENT}/client_info/mobilesdk_app_id

gcm_defaultSenderId :

project_info/project_number

ডিফল্ট_ওয়েব_ক্লায়েন্ট_আইডি :

{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_info/project_id

সমস্যা সমাধান

প্রশ্ন: বিল্ডিং করার সময় আমি নিম্নলিখিত ত্রুটি বার্তা পাই: "ফাইল google-services.json মডিউল রুট ফোল্ডার থেকে অনুপস্থিত। Google পরিষেবা প্লাগইন এটি ছাড়া কাজ করতে পারে না"।

উত্তর: Firebase কনসোল আপনাকে google-services.json ডাউনলোড করতে সাহায্য করবে। উপরন্তু, অধিকাংশ API-এর জন্য Quickstart নির্দেশিকাতে এই ফাইলটি তৈরি করার নির্দেশনা রয়েছে। আপনি একবার google-services.json ফাইলটি ডাউনলোড করার পরে, আপনার Android স্টুডিও প্রোজেক্টের app/ ফোল্ডারে অথবা আপনি যদি একাধিক বিল্ড প্রকার ব্যবহার করেন তাহলে app/src/{build_type} ফোল্ডারে কপি করুন।

প্রশ্ন: আমি "R.string.gcm_defaultSenderId", "R.xml.global_tracker" ইত্যাদি চিহ্ন খুঁজে পাচ্ছি না।

উত্তর: নিশ্চিত করুন যে আপনার build.gradle ফাইলের প্যাকেজের নামটি google-services.json ফাইলটি তৈরি করার সময় আপনি যে প্যাকেজ নামটি লিখেছেন তার সাথে মেলে। আপনি যদি নিশ্চিত না হন তবে শুরু করার প্রবাহটি আবার চালান এবং একটি নতুন json ফাইল পান।