অ্যান্ড্রয়েডের জন্য কাস্ট অ্যাপ্লিকেশন ফ্রেমওয়ার্ক (CAF) দিয়ে বিকাশের জন্য সেটআপ৷

পূর্বশর্ত

অ্যান্ড্রয়েডের জন্য গুগল কাস্ট এসডিকে, গুগল প্লে সার্ভিসেস এসডিকে-রই একটি অংশ এবং এটি আলাদাভাবে ডাউনলোড করার প্রয়োজন নেই।

দ্রষ্টব্য : গুগল প্লে সার্ভিসেস আপনাকে বিজ্ঞাপন তৈরি, অ্যানালিটিক্স সংগ্রহ, ব্যবহারকারীদের প্রমাণীকরণ, ম্যাপ ইন্টিগ্রেট করা এবং আরও অনেক কিছুর জন্য বিভিন্ন এপিআই (API) ব্যবহারের সুযোগ দেয়। আরও তথ্যের জন্য, গুগল প্লে সার্ভিসেস-এর ওভারভিউ দেখুন। ব্যবহারকারীর ডিভাইসে সঠিক গুগল প্লে সার্ভিসেস এপিকে (APK) ইনস্টল করা আছে কিনা তা নিশ্চিত করা আপনার জন্য গুরুত্বপূর্ণ, কারণ আপডেটগুলো সব ব্যবহারকারীর কাছে তাৎক্ষণিকভাবে নাও পৌঁছাতে পারে।

আপনার প্রকল্পে গুগল প্লে পরিষেবা যোগ করুন

নিচে আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট নির্বাচন করুন এবং প্রদত্ত ধাপগুলো অনুসরণ করে আপনার প্রজেক্টে গুগল প্লে সার্ভিসেস যোগ করুন।

অ্যান্ড্রয়েড স্টুডিও

আপনার অ্যাপে গুগল প্লে সার্ভিসেস এপিআইগুলো উপলব্ধ করতে:

  1. আপনার অ্যাপ্লিকেশন মডিউল ডিরেক্টরির ভিতরে build.gradle ফাইলটি খুলুন।

    দ্রষ্টব্য: অ্যান্ড্রয়েড স্টুডিও প্রজেক্টে একটি শীর্ষ-স্তরের build.gradle ফাইল এবং প্রতিটি মডিউলের জন্য একটি build.gradle ফাইল থাকে। আপনার অ্যাপ্লিকেশন মডিউলের জন্য ফাইলটি অবশ্যই সম্পাদনা করুন। গ্রেডল সম্পর্কে আরও তথ্যের জন্য "গ্রেডল দিয়ে আপনার প্রজেক্ট তৈরি করা" দেখুন।

  2. যাচাই করুন যে google() তালিকাভুক্ত repositories অন্তর্ভুক্ত আছে।
    repositories {
        google()
    }
  3. play-services এর সর্বশেষ সংস্করণের জন্য dependencies এর অধীনে একটি নতুন বিল্ড রুল যোগ করুন। উদাহরণস্বরূপ:
    apply plugin: 'com.android.application'
        ...
    
        dependencies {
            implementation 'androidx.appcompat:appcompat:1.3.1'
            implementation 'androidx.mediarouter:mediarouter:1.2.5'
            implementation 'com.google.android.gms:play-services-cast-framework:22.3.0'
        }

    প্রতিবার গুগল প্লে পরিষেবা আপডেট হলে এই সংস্করণ নম্বরটিও আপডেট করতে ভুলবেন না।

    দ্রষ্টব্য: যদি আপনার অ্যাপে মেথড রেফারেন্সের সংখ্যা ৬৫কে (65K) সীমা অতিক্রম করে, তাহলে আপনার অ্যাপটি কম্পাইল হতে ব্যর্থ হতে পারে। আপনার অ্যাপ কম্পাইল করার সময়, সবগুলোর পরিবর্তে শুধুমাত্র আপনার অ্যাপে ব্যবহৃত নির্দিষ্ট Google Play পরিষেবা API-গুলো উল্লেখ করে আপনি এই সমস্যাটি সমাধান করতে পারেন। এটি কীভাবে করতে হয় সে সম্পর্কে তথ্যের জন্য, "আপনার এক্সিকিউটেবলে বেছে বেছে API কম্পাইল করা" দেখুন।

  4. পরিবর্তনগুলি সংরক্ষণ করুন এবং টুলবারে থাকা ‘Sync Project with Gradle Files’ বোতামে ক্লিক করুন।

অন্যান্য IDE

আপনার অ্যাপে গুগল প্লে সার্ভিসেস এপিআইগুলো উপলব্ধ করতে:

  1. <android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ -এ থাকা লাইব্রেরি প্রজেক্টটি আপনার অ্যান্ড্রয়েড অ্যাপ প্রজেক্টগুলো যেখানে রক্ষণাবেক্ষণ করেন, সেই স্থানে কপি করুন।
  2. আপনার অ্যাপ প্রজেক্টে, গুগল প্লে সার্ভিসেস লাইব্রেরি প্রজেক্টটি রেফারেন্স করুন। এটি কীভাবে করতে হয় সে সম্পর্কে আরও তথ্যের জন্য, ‘কমান্ড লাইনে একটি লাইব্রেরি প্রজেক্ট রেফারেন্স করা’ দেখুন।

    দ্রষ্টব্য: আপনার ডেভেলপমেন্ট ওয়ার্কস্পেসে কপি করা লাইব্রেরির একটি কপি রেফারেন্স করা উচিত—সরাসরি অ্যান্ড্রয়েড এসডিকে ডিরেক্টরি থেকে লাইব্রেরিটি রেফারেন্স করা উচিত নয়।

  3. আপনার অ্যাপ প্রজেক্টে ডিপেন্ডেন্সি হিসেবে গুগল প্লে সার্ভিসেস লাইব্রেরি যোগ করার পর, আপনার অ্যাপের ম্যানিফেস্ট ফাইলটি খুলুন এবং <application> এলিমেন্টের চাইল্ড হিসেবে নিম্নলিখিত ট্যাগটি যুক্ত করুন:
    <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

একবার আপনার প্রজেক্টকে লাইব্রেরি প্রজেক্ট রেফারেন্স করার জন্য সেট আপ করে নিলে, আপনি গুগল প্লে সার্ভিসেস এপিআই (Google Play services APIs) ব্যবহার করে ফিচার তৈরি করা শুরু করতে পারেন।

একটি Proguard ব্যতিক্রম তৈরি করুন

ProGuard যাতে প্রয়োজনীয় ক্লাসগুলো মুছে ফেলতে না পারে, সেজন্য নিম্নলিখিত লাইনগুলো যোগ করুন। /proguard-project.txt ফাইল:

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}

-keepnames class * implements android.os.Parcelable
-keepclassmembers class * implements android.os.Parcelable {
  public static final *** CREATOR;
}

-keep @interface android.support.annotation.Keep
-keep @android.support.annotation.Keep class *
-keepclasseswithmembers class * {
  @android.support.annotation.Keep <fields>;
}
-keepclasseswithmembers class * {
  @android.support.annotation.Keep <methods>;
}

-keep @interface com.google.android.gms.common.annotation.KeepName
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
  @com.google.android.gms.common.annotation.KeepName *;
}

-keep @interface com.google.android.gms.common.util.DynamiteApi
-keep public @com.google.android.gms.common.util.DynamiteApi class * {
  public <fields>;
  public <methods>;
}

-dontwarn android.security.NetworkSecurityPolicy