Google পরিষেবা Gradle প্লাগ-ইন এবং JSON কনফিগারেশন ফাইল

আপনার Android প্রোজেক্টে Firebase যোগ করার অংশ হিসেবে, আপনাকে প্রোজেক্টে google-services Gradle প্লাগ-ইন এবং একটি google-services.json কনফিগারেশন ফাইল যোগ করতে হবে।

আপনি যদি Firebase কনসোল, ম্যানেজমেন্ট REST API অথবা Firebase CLI ব্যবহার করে আপনার Android প্রোজেক্টে Firebase যোগ করেন, তাহলে আপনাকে প্রোজেক্টে ম্যানুয়ালি Gradle প্লাগ-ইন ও JSON কনফিগারেশন ফাইল যোগ করতে হবে। তবে, আপনি Firebase Assistant for Android Studio ব্যবহার করলে, সেট-আপ করার সময় এইসব টাস্ক অটোমেটিক সম্পূর্ণ হয়ে যায়।

Gradle প্লাগ-ইন যোগ করুন

আপনি Google পরিষেবা Gradle প্লাগ-ইন (google-services) আপনার build.gradle ফাইলে যোগ করেন:

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

Google পরিষেবা Gradle প্লাগ-ইনের দুটি প্রধান ফাংশন আছে:

  • google-services.json কনফিগারেশন ফাইল প্রসেস করে এবং Android রিসোর্স তৈরি করে যা আপনার অ্যাপের কোডে ব্যবহার করা যেতে পারে।

  • আপনার চালু করা পরিষেবার জন্য প্রয়োজনীয় বেসিক লাইব্রেরির ডিপেন্ডেন্সি যোগ করে। এই ধাপে আপনাকে app/build.gradle ফাইলে Google পরিষেবা 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
    ...

প্রোডাক্ট ফ্লেভার ব্যবহার করা হলে, আরও জটিল ডিরেক্টরি স্ট্রাকচারও সঠিক হিসেবে বিবেচিত হয়।

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

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

  • client অ্যারের প্রতিটি মেম্বারের জন্য, প্লাগ-ইন client_info/android_client_info/package_name-এর ভ্যালু চেক করে। প্যাকেজের নাম এই মানের সাথে মিলে গেলে, এটি মেম্বার অবজেক্ট রিটার্ন করে।

  • client-এর কোনও মেম্বার প্যাকেজের নামের সাথে ম্যাচ না করলে, প্লাগ-ইন ব্যতিক্রম দেখায়।

এই ডকুমেন্টের বাকি অংশে YOUR_CLIENT ব্যবহার করে উপরে বর্ণিত লজিক দ্বারা নির্ধারিত client অ্যারের মেম্বারকে রেফার করা হয়।

XML ফাইল তৈরি করা

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 ফাইলে থাকা ভ্যালু

XML ফাইলের প্রতিটি ভ্যালু নিচে তালিকাভুক্ত লোকেশনে google-services.json কনফিগারেশন ফাইলে রয়েছে। আপনার Android প্রোজেক্টে এমন কিছু কনফিগারেশন থাকলে যা আপনাকে google-services Gradle প্লাগ-ইন ব্যবহার করতে বাধা দেয়, তাহলে আপনি এইসব ভ্যালু ব্যবহার করে নিরাপদে 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
    

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

তৈরি করার সময়, আমি এই সমস্যার মেসেজটি পাই: File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it।

Firebase কনসোল আপনাকে google-services.json কনফিগ ফাইল ডাউনলোড করতে সাহায্য করবে।

google-services.json কনফিগারেশন ফাইল ডাউনলোড করার পরে, এটি আপনার Android Studio প্রোজেক্টের app/ ফোল্ডারে কপি করুন অথবা আপনি একাধিক বিল্ড টাইপ ব্যবহার করলে app/src/{build_type} ফোল্ডারে কপি করুন।

আমি R.string.gcm_defaultSenderId বা R.xml.global_tracker-এর মতো চিহ্ন খুঁজে পাচ্ছি না।

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