গুগল পরিষেবা গ্রেডল প্লাগইন এবং JSON কনফিগারেশন ফাইল

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

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

গ্রেডল প্লাগইন যোগ করুন

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

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

গুগল সার্ভিসেস গ্রেডল প্লাগইনটির দুটি প্রধান কাজ রয়েছে:

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

  • আপনার সক্রিয় করা পরিষেবাগুলির জন্য প্রয়োজনীয় মৌলিক লাইব্রেরিগুলির নির্ভরতা যোগ করে। এই ধাপটির জন্য আপনাকে আপনার 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
    ...

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

// 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 কোনো সদস্য প্যাকেজ নামের সাথে মেলে না, তাহলে প্লাগইনটি একটি ব্যতিক্রম (exception) প্রদর্শন করে।

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

এক্সএমএল ফাইল তৈরি

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>
    

XML ফাইলগুলিতে মানগুলি

XML ফাইলগুলোর প্রতিটি ভ্যালু নিচে তালিকাভুক্ত স্থানগুলোতে google-services.json কনফিগারেশন ফাইলে উপস্থিত থাকে। যদি আপনার অ্যান্ড্রয়েড প্রজেক্টের কোনো কনফিগারেশনের কারণে আপনি 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
    

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

বিল্ড করার সময় আমি নিম্নলিখিত ত্রুটি বার্তাটি পাই: 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 কনফিগারেশন ফাইলটি ডাউনলোড করার পর, সেটি আপনার অ্যান্ড্রয়েড স্টুডিও প্রজেক্টের app/ ফোল্ডারে কপি করুন, অথবা আপনি যদি একাধিক বিল্ড টাইপ ব্যবহার করেন তবে app/src/{build_type} ফোল্ডারে কপি করুন।

আমি R.string.gcm_defaultSenderId বা R.xml.global_tracker মতো প্রতীকগুলো খুঁজে পাচ্ছি না।

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