এই পৃষ্ঠায় গুগল প্লে গেমস সার্ভিসেস ব্যবহার করে অ্যান্ড্রয়েড গেম ডেভেলপ করার সময় আপনার যে সমস্যাগুলির সম্মুখীন হতে পারেন সেগুলি কীভাবে সমাধান করবেন তা বর্ণনা করা হয়েছে।
লগিং
আপনার গেমের সমস্যা সমাধানের জন্য, আপনি adb shell কমান্ড ব্যবহার করে আপনার ডিভাইসে ভার্বোজ লগিং চালু করতে পারেন। এরপর আপনি logcat ব্যবহার করে Google Play Games Services লগ বার্তা দেখতে পারেন।
লগিং সক্ষম করুন
আপনার পরীক্ষামূলক ডিভাইসে লগিং সক্ষম করতে:
ডিভাইসটিকে এমন একটি মেশিনের সাথে সংযুক্ত করুন যেখানে Android SDK ইনস্টল করা আছে।
একটি টার্মিনাল খুলুন এবং এই কমান্ডটি চালান:
adb shell setprop log.tag.Games VERBOSE
ডিভাইসে আপনার গেমটি চালান এবং আপনি যে সমস্যাটি ডিবাগ করার চেষ্টা করছেন তা পুনরুত্পাদন করুন।
লগ দেখুন:
adb logcat
লগিং অক্ষম করুন
আপনার ডিভাইসে প্লে গেমস পরিষেবাগুলির জন্য ভার্বোজ লগিং অক্ষম করতে এবং মূল লগিং আচরণে ফিরে যেতে, নিম্নলিখিত কমান্ডটি চালান:
adb shell setprop log.tag.Games INFO
প্রমাণীকরণ করা যায়নি
যদি আপনি আপনার গেমে খেলোয়াড়দের প্রমাণীকরণ করতে না পারেন, তাহলে প্রথমে নিশ্চিত করুন যে আপনি আপনার ক্লায়েন্ট আইডি তৈরি এবং গেম পরিষেবাগুলি কনফিগার করার জন্য নির্দেশাবলী অনুসরণ করেছেন। যদি আপনি এখনও প্রমাণীকরণ ত্রুটির সম্মুখীন হন, তাহলে আপনার গেমটি সঠিকভাবে সেট আপ করা হয়েছে কিনা তা নিশ্চিত করতে নিম্নলিখিত আইটেমগুলি পরীক্ষা করুন।
আপনার মেটাডেটা ট্যাগগুলি পরীক্ষা করুন
আপনার AndroidManifest.xml অবশ্যই একটি গেমস মেটাডেটা ট্যাগ থাকতে হবে। আপনার মেটাডেটা ট্যাগগুলি সঠিকভাবে সেট আপ করা হয়েছে কিনা তা যাচাই করতে:
আপনার
AndroidManifest.xmlখুলুন এবং যাচাই করুন যে এতে নীচে দেখানোmeta-dataট্যাগ রয়েছে:<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />আপনার
@string/app_idরিসোর্সের সংজ্ঞাটি সনাক্ত করুন। এটি সাধারণতres/xmlডিরেক্টরিতে অবস্থিত একটি XML ফাইলে সংজ্ঞায়িত করা হয়, উদাহরণস্বরূপres/xml/strings.xmlঅথবাres/xml/ids.xml।@string/app_idরিসোর্সের মান আপনার অ্যাপ্লিকেশনের সাংখ্যিক আইডির সাথে মিলেছে কিনা তা যাচাই করুন। এই রিসোর্সের মানে শুধুমাত্র সংখ্যা থাকা উচিত। উদাহরণস্বরূপ:<string name="app_id">123456789012</string>
আপনার প্যাকেজের নাম পরীক্ষা করুন
আপনার গেমের প্যাকেজের নাম অবশ্যই আপনার ক্লায়েন্ট আইডিতে থাকা প্যাকেজের নামের সাথে মিলতে হবে। প্যাকেজের নাম যাচাই করতে:
আপনার
AndroidManifest.xmlখুলুন এবং যাচাই করুন যে আপনার গেমের প্যাকেজের নামটি সঠিক। প্যাকেজের নাম হলmanifestট্যাগে থাকাpackageঅ্যাট্রিবিউটের মান।আপনার ক্লায়েন্ট আইডি তৈরি করার সময় আপনি যে প্যাকেজের নামটি দিয়েছিলেন তা যাচাই করুন। Google Play Console-এ প্যাকেজের নাম যাচাই করতে, Play Console-এ যান এবং আপনার গেমের সাথে সম্পর্কিত এন্ট্রিতে ক্লিক করুন।
লিঙ্কড অ্যাপস ট্যাবে যান এবং ক্লায়েন্ট আইডির তালিকা পরীক্ষা করুন। এই তালিকায় এমন একটি অ্যান্ড্রয়েড লিঙ্কড অ্যাপ থাকা উচিত যার প্যাকেজের নাম আপনার
AndroidManifest.xmlএর প্যাকেজ নামের সাথে মিলে যায়। যদি কোনও অমিল থাকে, তাহলে সঠিক প্যাকেজের নাম দিয়ে একটি নতুন ক্লায়েন্ট আইডি তৈরি করুন এবং আবার প্রমাণীকরণের চেষ্টা করুন।
সার্টিফিকেটের আঙুলের ছাপ পরীক্ষা করুন
যে সার্টিফিকেট দিয়ে আপনি আপনার গেমটি প্রমাণীকরণ করছেন সেটি আপনার ক্লায়েন্ট আইডির সাথে সম্পর্কিত সার্টিফিকেট ফিঙ্গারপ্রিন্টের সাথে মিলিত হওয়া উচিত। এটি যাচাই করার জন্য, প্রথমে আপনার সার্টিফিকেটের SHA1 ফিঙ্গারপ্রিন্টটি নিম্নরূপ পরীক্ষা করুন:
আপনার সার্টিফিকেট ফাইলটি খুঁজুন এবং এর SHA1 ফিঙ্গারপ্রিন্টটি পান। SHA1 ফিঙ্গারপ্রিন্ট পেতে, এই কমান্ডটি চালান:
keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -vআউটপুটে
SHA1:লেবেলযুক্ত হেক্সাডেসিমেল সংখ্যার ক্রমটি লক্ষ্য করুন। এটি আপনার সার্টিফিকেটের আঙুলের ছাপ।
এরপর, আপনার বিল্ড টুলটি এই সার্টিফিকেটটি ব্যবহার করছে কিনা তা পরীক্ষা করুন:
- আপনার বিল্ড টুল থেকে আপনার গেমের APK তৈরি করুন এবং পছন্দসই সার্টিফিকেট দিয়ে সাইন করুন। তৈরি হওয়া APKটি একটি অস্থায়ী ডিরেক্টরিতে কপি করুন।
অস্থায়ী ডিরেক্টরিতে, আপনার APK আনজিপ করতে নিম্নলিখিত কমান্ডটি চালান।
unzip YourGame.apkএকটি RSA সার্টিফিকেট ফাইল ব্যবহার করে একটি ব্যক্তিগত কী তৈরি করুন:
keytool -printcert -file META-INF/CERT.RSAবিকল্পভাবে, আপনি একটি DSA সার্টিফিকেট ফাইল ব্যবহার করে ব্যক্তিগত কী তৈরি করতে পারেন:
keytool -printcert -file META-INF/CERT.DSASHA1:লেবেলযুক্ত লাইনে হেক্সাডেসিমেল সংখ্যার ক্রম লক্ষ্য করুন।এই সংখ্যার ক্রমটি আপনার পূর্ববর্তী ধাপের সার্টিফিকেট ফিঙ্গারপ্রিন্টের সাথে মিলিত হওয়া উচিত। যদি কোনও অমিল থাকে, তাহলে আপনার বিল্ড টুল বা সিস্টেমটি আপনার সার্টিফিকেটের সাথে আপনার অ্যাপ্লিকেশন স্বাক্ষর করার জন্য কনফিগার করা নেই। এই ক্ষেত্রে, কীভাবে এটি সঠিকভাবে কনফিগার করবেন তা নির্ধারণ করতে আপনার বিল্ড পরিবেশের ডকুমেন্টেশন দেখুন এবং আবার প্রমাণীকরণের চেষ্টা করুন।
এরপর, সার্টিফিকেটের আঙুলের ছাপটি আপনার ক্লায়েন্ট আইডিতে কনফিগার করা আঙুলের ছাপের সাথে মিলে কিনা তা পরীক্ষা করুন। এটি করার জন্য:
- প্লে কনসোল খুলুন এবং আপনার গেমটিতে নেভিগেট করুন।
- গেমের বিবরণ পৃষ্ঠায়, নীচে স্ক্রোল করুন এবং লিঙ্ক করা গুগল ক্লাউড প্ল্যাটফর্ম প্রকল্পের লিঙ্কে ক্লিক করুন।
- আপনার প্রকল্পটি নির্বাচন করুন।
- বাম দিকের সাইডবারে, APIs & auth নির্বাচন করুন। নিশ্চিত করুন যে প্রদর্শিত API গুলির তালিকায় Google Play games services API স্ট্যাটাসটি চালু আছে।
- বাম দিকের সাইডবারে, নিবন্ধিত অ্যাপ নির্বাচন করুন।
- OAuth 2.0 ক্লায়েন্ট আইডি বিভাগটি প্রসারিত করুন এবং সার্টিফিকেট ফিঙ্গারপ্রিন্ট (SHA1) নোট করুন।
যদি এই আঙুলের ছাপটি আপনার সার্টিফিকেটের আগের ধাপগুলির ফিঙ্গারপ্রিন্টের সাথে না মেলে, তাহলে আপনাকে সঠিক সার্টিফিকেট ফিঙ্গারপ্রিন্ট দিয়ে একটি নতুন ক্লায়েন্ট আইডি তৈরি করতে হবে। আপনাকে নতুন ক্লায়েন্ট আইডিটি Play Console-এ তৈরি করতে হবে, Google Cloud Platform প্রজেক্টে নয়।
পরীক্ষামূলক অ্যাকাউন্টগুলি সক্রিয় আছে কিনা তা পরীক্ষা করুন
কোনও গেম প্রকাশের আগে, Play Console-এ গেমটি তৈরি করা অ্যাকাউন্টটিকেও পরীক্ষক হিসেবে সক্ষম করতে হবে। এটি সঠিকভাবে কনফিগার করা হয়েছে কিনা তা পরীক্ষা করতে:
- প্লে কনসোল খুলুন এবং আপনার গেমটিতে নেভিগেট করুন।
- টেস্টিং ট্যাবটি খুলুন।
- আপনি যে অ্যাকাউন্টটি দিয়ে প্রমাণীকরণের চেষ্টা করছেন তা পরীক্ষকদের তালিকায় আছে কিনা তা পরীক্ষা করুন।
আপনি যে অ্যাকাউন্টটি দিয়ে প্রমাণীকরণ করার চেষ্টা করছেন তা যদি তালিকাভুক্ত না থাকে, তাহলে এটি তালিকায় যুক্ত করুন, কয়েক মিনিট অপেক্ষা করুন এবং আবার প্রমাণীকরণের চেষ্টা করুন।
প্রোগার্ড সমস্যা
যদি আপনি Proguard ব্যবহার করেন এবং অস্পষ্ট APK-তে ত্রুটি দেখতে পান, তাহলে আপনার AndroidManifest.xml এ লক্ষ্য API স্তরটি পরীক্ষা করুন। এটি 17 বা তার উপরে সেট করতে ভুলবেন না।
সেটআপ সমস্যার অন্যান্য কারণ
ত্রুটির অন্যান্য সাধারণ কারণগুলি পরীক্ষা করুন:
- যদি আপনার গেমটি প্রকাশিত হয়, তাহলে গেমের সেটিংসও প্রকাশিত হয়েছে কিনা তা পরীক্ষা করে দেখুন (গেমের সেটিংস প্রকাশ না করেই অ্যাপ্লিকেশনটি প্রকাশ করা সম্ভব)। এটি করার জন্য, Google Play Console এ যান এবং আপনার অ্যাপে যান এবং গেমের নামের পাশের বাক্সটি পরীক্ষা করে দেখুন যে এটি প্রকাশিত হয়েছে। যদি ইঙ্গিত দেয় যে এটি অন্য অবস্থায় আছে, যেমন "প্রকাশের জন্য প্রস্তুত" বা "পরীক্ষার জন্য প্রস্তুত", তাহলে বাক্সটিতে ক্লিক করুন এবং Publish Game নির্বাচন করুন।
- যদি আপনি আপনার গেমটি প্রকাশ করতে না পারেন, তাহলে নিশ্চিত করুন যে ক্লায়েন্ট আইডিগুলির মধ্যে একটিতে "This app is preferred for new installations" বিকল্পটি সক্রিয় আছে কিনা।
বেনামী শ্রোতা
বেনামী শ্রোতা ব্যবহার করবেন না। বেনামী শ্রোতা হল একটি শ্রোতা ইন্টারফেসের বাস্তবায়ন যা ইনলাইনে সংজ্ঞায়িত করা হয়েছে, যেমনটি নীচে দেখানো হয়েছে।
ImageManager im = ...;
// Anonymous listener -- dangerous:
im.loadImage(new ImageManager.OnImageLoadedListener() {
@Override
public void onImageLoaded(Uri uri, Drawable drawable) {
// ...code...
}
}
বেনামী শ্রোতারা অবিশ্বস্ত কারণ Play Games 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...
}
}