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

ভূমিকা

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

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

google-services প্লাগইনের দুটি প্রধান কাজ রয়েছে:

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

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

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

এই ডকুমেন্টের বাকি অংশের জন্য আমরা উপরের পদ্ধতি দ্বারা নির্ধারিত client অ্যারের সদস্যকে উল্লেখ করতে {YOUR_CLIENT} ব্যবহার করব।

JSON প্রক্রিয়াকরণের প্রধান ফলাফল হল দুটি 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>

অ্যাপ/বিল্ড/জেনারেটেড/রেস/গুগল-সার্ভিসেস/{ফ্লেভার}/{বিল্ড_টাইপ}/এক্সএমএল/গ্লোবাল_ট্র্যাকার.এক্সএমএল

<?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 ফাইলগুলি ম্যানুয়ালি পুনরায় তৈরি করতে পারেন:

গুগল_অ্যাপ_আইডি :

{YOUR_CLIENT}/client_info/mobilesdk_app_id

gcm_defaultSenderআইডি :

project_info/project_number

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

{YOUR_CLIENT}/oauth_client/client_id (client_type == 3)

ga_trackingId :

{YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id

ফায়ারবেস_ডাটাবেস_ইউআরএল :

project_info/firebase_url

গুগল_এপি_কী :

{YOUR_CLIENT}/api_key/current_key

গুগল_ক্র্যাশ_রিপোর্টিং_এপিআই_কী :

{YOUR_CLIENT}/api_key/current_key

প্রজেক্ট_আইডি :

project_info/project_id

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

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

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

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

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