অ্যান্ড্রয়েড গেমগুলিতে প্লে গেম পরিষেবাগুলির সমস্যা সমাধান করা৷

এই পৃষ্ঠাটি বর্ণনা করে যে কীভাবে Google Play গেম পরিষেবাগুলির সাথে Android গেমগুলি বিকাশ করার সময় আপনি যে সমস্যার সম্মুখীন হতে পারেন তার সমস্যার সমাধান করবেন৷

লগিং

আপনার গেমের সমস্যা সমাধানের জন্য, আপনি adb shell কমান্ড ব্যবহার করে আপনার ডিভাইসে ভার্বোস লগিং চালু করতে পারেন। তারপরে আপনি logcat ব্যবহার করে Google Play Games পরিষেবার লগ বার্তাগুলি দেখতে পারেন৷

লগিং সক্রিয়

আপনার পরীক্ষা ডিভাইসে লগিং সক্ষম করতে:

  1. Android SDK ইনস্টল করা আছে এমন একটি মেশিনে ডিভাইসটিকে সংযুক্ত করুন৷

  2. একটি টার্মিনাল খুলুন এবং এই কমান্ডটি চালান:

    adb shell setprop log.tag.Games VERBOSE
  3. ডিভাইসে আপনার গেমটি চালান এবং আপনি যে সমস্যাটি ডিবাগ করার চেষ্টা করছেন সেটি পুনরুত্পাদন করুন।

  4. লগ দেখুন:

    adb logcat

লগিং অক্ষম করুন

আপনার ডিভাইসে প্লে গেম পরিষেবাগুলির জন্য ভার্বোস লগিং অক্ষম করতে এবং মূল লগিং আচরণে ফিরে যেতে, নিম্নলিখিত কমান্ডটি চালান:

adb shell setprop log.tag.Games INFO

সাইন ইন করতে ব্যার্থ

আপনি যদি আপনার গেমে খেলোয়াড়দের সাইন করতে না পারেন, প্রথমে নিশ্চিত করুন যে আপনি আপনার ক্লায়েন্ট আইডি তৈরি করতে এবং গেম পরিষেবাগুলি কনফিগার করার নির্দেশাবলী অনুসরণ করেছেন৷ আপনি যদি এখনও সাইন-ইন ত্রুটির সম্মুখীন হন, আপনার গেমটি সঠিকভাবে সেট আপ করা হয়েছে তা নিশ্চিত করতে নিম্নলিখিত আইটেমগুলি পরীক্ষা করুন৷

আপনার মেটাডেটা ট্যাগ পরীক্ষা করুন

আপনার AndroidManifest.xml অবশ্যই একটি গেম মেটাডেটা ট্যাগ থাকতে হবে। আপনার মেটাডেটা ট্যাগ সঠিকভাবে সেট আপ করা হয়েছে তা যাচাই করতে:

  1. আপনার AndroidManifest.xml খুলুন এবং নীচে দেখানো হিসাবে এটিতে একটি meta-data ট্যাগ রয়েছে কিনা তা যাচাই করুন:

    <meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="@string/app_id" />
    
  2. আপনার @string/app_id সম্পদের সংজ্ঞা খুঁজুন। এটি সাধারণত res/xml ডিরেক্টরিতে অবস্থিত একটি XML ফাইলে সংজ্ঞায়িত করা হয়, উদাহরণস্বরূপ res/xml/strings.xml বা res/xml/ids.xml

  3. @string/app_id রিসোর্সের মান আপনার অ্যাপ্লিকেশনের সাংখ্যিক আইডির সাথে মেলে তা যাচাই করুন। এই সম্পদের মান শুধুমাত্র সংখ্যা থাকা উচিত. উদাহরণ স্বরূপ:

    <string name="app_id">123456789012</string>
    

আপনার প্যাকেজ নাম চেক করুন

আপনার গেমের প্যাকেজের নাম অবশ্যই আপনার ক্লায়েন্ট আইডিতে থাকা প্যাকেজের নামের সাথে মিলবে। প্যাকেজের নাম যাচাই করতে:

  1. আপনার AndroidManifest.xml খুলুন এবং যাচাই করুন যে আপনার গেমের প্যাকেজের নাম সঠিক। প্যাকেজের নাম হল manifest ট্যাগে package অ্যাট্রিবিউটের মান।

  2. আপনার ক্লায়েন্ট আইডি তৈরি করার সময় আপনি যে প্যাকেজ নামটি সরবরাহ করেছিলেন তা যাচাই করুন। Google Play Console-এ প্যাকেজের নাম যাচাই করতে, Play Console-এ যান এবং আপনার গেমের সাথে সম্পর্কিত এন্ট্রিতে ক্লিক করুন।

  3. লিঙ্কড অ্যাপস ট্যাবে যান এবং ক্লায়েন্ট আইডিগুলির তালিকা পরীক্ষা করুন। এই তালিকায় একটি Android লিঙ্কযুক্ত অ্যাপ থাকা উচিত যার প্যাকেজের নাম আপনার AndroidManifest.xml এর প্যাকেজের নামের সাথে মেলে। যদি কোনো মিল না থাকে, তাহলে সঠিক প্যাকেজ নামের একটি নতুন ক্লায়েন্ট আইডি তৈরি করুন এবং আবার সাইন ইন করার চেষ্টা করুন।

শংসাপত্রের আঙুলের ছাপ পরীক্ষা করুন

আপনি যে শংসাপত্রের সাথে আপনার গেমটিতে স্বাক্ষর করছেন সেটি আপনার ক্লায়েন্ট আইডির সাথে সংশ্লিষ্ট শংসাপত্রের আঙ্গুলের ছাপের সাথে মিলিত হওয়া উচিত। এটি যাচাই করতে, প্রথমে আপনার শংসাপত্রের SHA1 ফিঙ্গারপ্রিন্টটি নিম্নরূপ চেক করুন:

  1. আপনার সার্টিফিকেট ফাইল খুঁজুন এবং এর SHA1 ফিঙ্গারপ্রিন্ট পান। SHA1 ফিঙ্গারপ্রিন্ট পেতে, এই কমান্ডটি চালান:

    keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
    
  2. আউটপুটে SHA1: লেবেলযুক্ত হেক্সাডেসিমেল সংখ্যাগুলির ক্রমটি নোট করুন। এটি আপনার শংসাপত্রের আঙুলের ছাপ।

পরবর্তী, আপনার বিল্ড টুল এই শংসাপত্রটি ব্যবহার করছে কিনা তা পরীক্ষা করুন:

  1. আপনার বিল্ড টুল থেকে আপনার গেমের APK তৈরি করুন এবং পছন্দসই শংসাপত্রের সাথে স্বাক্ষর করুন। জেনারেট করা APK একটি অস্থায়ী ডিরেক্টরিতে অনুলিপি করুন।
  2. অস্থায়ী ডিরেক্টরিতে, আপনার APK আনজিপ করতে নিম্নলিখিত কমান্ডটি চালান।

    unzip YourGame.apk
    
  3. একটি RSA শংসাপত্র ফাইল ব্যবহার করে একটি ব্যক্তিগত কী তৈরি করুন:

    keytool -printcert -file META-INF/CERT.RSA
    

    বিকল্পভাবে, আপনি একটি DSA শংসাপত্র ফাইল ব্যবহার করে ব্যক্তিগত কী তৈরি করতে পারেন:

    keytool -printcert -file META-INF/CERT.DSA
    
  4. SHA1:

    সংখ্যার এই ক্রমটি পূর্ববর্তী ধাপ থেকে আপনার শংসাপত্রের আঙ্গুলের ছাপের সাথে মেলে। যদি কোনো মিল না থাকে, আপনার বিল্ড টুল বা সিস্টেম আপনার শংসাপত্রের সাথে আপনার আবেদনে স্বাক্ষর করার জন্য কনফিগার করা হয়নি। এই ক্ষেত্রে, কীভাবে এটি সঠিকভাবে কনফিগার করবেন তা নির্ধারণ করতে আপনার বিল্ড এনভায়রনমেন্টের ডকুমেন্টেশন দেখুন এবং আবার সাইন ইন করার চেষ্টা করুন।

এরপরে, শংসাপত্রের আঙুলের ছাপ আপনার ক্লায়েন্ট আইডিতে কনফিগার করা আঙ্গুলের ছাপের সাথে মেলে কিনা তা পরীক্ষা করুন। এটা করতে:

  1. Play Console খুলুন এবং আপনার গেমে নেভিগেট করুন।
  2. গেমের বিবরণ পৃষ্ঠায়, নীচে স্ক্রোল করুন এবং লিঙ্ক করা Google ক্লাউড প্ল্যাটফর্ম প্রকল্পের লিঙ্কে ক্লিক করুন।
  3. আপনার প্রকল্প নির্বাচন করুন.
  4. বাম পাশের সাইডবারে, APIs & auth নির্বাচন করুন। এপিআই-এর প্রদর্শিত তালিকায় Google Play গেম পরিষেবার API স্ট্যাটাস চালু আছে কিনা তা নিশ্চিত করুন।
  5. বাম দিকে সাইডবারে, নিবন্ধিত অ্যাপ নির্বাচন করুন।
  6. OAuth 2.0 ক্লায়েন্ট আইডি বিভাগটি প্রসারিত করুন এবং শংসাপত্রের আঙ্গুলের ছাপ (SHA1) নোট করুন।

যদি এই আঙুলের ছাপটি পূর্ববর্তী ধাপগুলি থেকে আপনার শংসাপত্রের আঙ্গুলের ছাপের সাথে মেলে না, তাহলে আপনাকে অবশ্যই সঠিক শংসাপত্রের আঙ্গুলের ছাপের সাথে একটি নতুন ক্লায়েন্ট আইডি তৈরি করতে হবে৷ আপনাকে অবশ্যই প্লে কনসোলে নতুন ক্লায়েন্ট আইডি তৈরি করতে হবে, Google ক্লাউড প্ল্যাটফর্ম প্রকল্পে নয়।

পরীক্ষা অ্যাকাউন্ট সক্রিয় আছে কিনা পরীক্ষা করুন

একটি গেম প্রকাশ করার আগে, প্লে কনসোলে যে অ্যাকাউন্টটি গেমটি তৈরি করেছে সেটিকেও পরীক্ষক হিসাবে সক্ষম করতে হবে। এটি সঠিকভাবে কনফিগার করা হয়েছে কিনা তা পরীক্ষা করতে:

  1. Play Console খুলুন এবং আপনার গেমে নেভিগেট করুন।
  2. টেস্টিং ট্যাব খুলুন।
  3. আপনি যে অ্যাকাউন্ট দিয়ে সাইন ইন করার চেষ্টা করছেন সেটি পরীক্ষাকারীদের তালিকায় আছে কিনা পরীক্ষা করুন।

আপনি যে অ্যাকাউন্ট দিয়ে সাইন ইন করার চেষ্টা করছেন সেটি তালিকাভুক্ত না থাকলে, তালিকায় যোগ করুন, কয়েক মিনিট অপেক্ষা করুন এবং আবার সাইন ইন করার চেষ্টা করুন।

Proguard সমস্যা

আপনি যদি Proguard ব্যবহার করেন এবং অস্পষ্ট APK-এ ত্রুটি দেখতে পান, তাহলে আপনার AndroidManifest.xml এ টার্গেট API লেভেল চেক করুন। এটি 17 বা তার উপরে সেট করা নিশ্চিত করুন।

সেটআপ সমস্যার অন্যান্য কারণ

ত্রুটির অন্যান্য সাধারণ কারণ পরীক্ষা করুন:

  • আপনার গেমটি প্রকাশিত হলে, গেম সেটিংসও প্রকাশিত হয়েছে কিনা তা পরীক্ষা করে দেখুন (গেম সেটিংস প্রকাশ না করেই অ্যাপ্লিকেশনটি প্রকাশ করা সম্ভব)। এটি করার জন্য, Google Play Console-এ যান এবং আপনার অ্যাপে নেভিগেট করুন এবং গেমের নামের পাশের বক্সটি এটি প্রকাশিত হয়েছে তা নির্দেশ করে তা চেক করুন। যদি নির্দেশ করে যে এটি অন্য অবস্থায় আছে, যেমন "প্রকাশের জন্য প্রস্তুত" বা "পরীক্ষার জন্য প্রস্তুত", বাক্সে ক্লিক করুন এবং গেম প্রকাশ করুন নির্বাচন করুন৷
  • আপনি যদি আপনার গেমটি প্রকাশ করতে না পারেন, তাহলে পরীক্ষা করে দেখুন যে ক্লায়েন্ট আইডিগুলির একটিতে এই অ্যাপটি নতুন ইনস্টলেশন বিকল্পের জন্য পছন্দ করা হয়েছে।

বেনামী শ্রোতা

বেনামী শ্রোতা ব্যবহার করবেন না. বেনামী শ্রোতা হল একটি শ্রোতা ইন্টারফেসের বাস্তবায়ন যা ইনলাইনে সংজ্ঞায়িত করা হয়েছে, যেমনটি নীচের চিত্রিত হয়েছে।

    ImageManager im = ...;

    // Anonymous listener -- dangerous:
    im.loadImage(new ImageManager.OnImageLoadedListener() {
        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }

বেনামী শ্রোতারা অবিশ্বস্ত কারণ প্লে গেম SDK তাদের দুর্বল রেফারেন্স হিসাবে রক্ষণাবেক্ষণ করে, যার অর্থ হল আবর্জনা সংগ্রহকারী তাদের আহ্বান করার আগে তাদের পুনরুদ্ধার করতে পারে। পরিবর্তে, আপনার শ্রোতাকে একটি অবিরাম বস্তু ব্যবহার করে প্রয়োগ করা উচিত যেমন Activity

    public class MyActivity extends Activity
            implements ImageManager.OnImageLoadedListener {

        private void loadOurImages() {
            ImageManager im = ...;
            im.loadImage(this);
        }

        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }