এই পৃষ্ঠাটি বর্ণনা করে যে কীভাবে Play Games SDK-এর মাধ্যমে অ্যান্ড্রয়েড গেমগুলি বিকাশ করার সময় আপনি যে সমস্যার সম্মুখীন হতে পারেন তার সমস্যা সমাধান করবেন৷
সাইন ইন করতে অক্ষম৷
আপনি যদি আপনার গেমে খেলোয়াড়দের সাইন করতে না পারেন, প্রথমে নিশ্চিত করুন যে আপনি আপনার ক্লায়েন্ট আইডি তৈরি করতে এবং গেম পরিষেবাগুলি কনফিগার করার নির্দেশাবলী অনুসরণ করেছেন৷ আপনি যদি এখনও সাইন-ইন ত্রুটির সম্মুখীন হন, আপনার গেমটি সঠিকভাবে সেট আপ করা হয়েছে তা নিশ্চিত করতে নিম্নলিখিত আইটেমগুলি পরীক্ষা করুন৷
আপনার মেটাডেটা ট্যাগ পরীক্ষা করুন
আপনার 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-এ প্যাকেজের নাম যাচাই করতে, Google Play Console-এ যান এবং আপনার গেমের সাথে সম্পর্কিত এন্ট্রিতে ক্লিক করুন। লিঙ্কড অ্যাপস ট্যাবে যান এবং ক্লায়েন্ট আইডিগুলির তালিকা পরীক্ষা করুন। এই তালিকায় একটি Android লিঙ্কযুক্ত অ্যাপ থাকা উচিত যার প্যাকেজের নাম আপনার
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.DSA
SHA1:
সংখ্যার এই ক্রমটি পূর্ববর্তী ধাপ থেকে আপনার শংসাপত্রের আঙ্গুলের ছাপের সাথে মেলে। যদি কোনো মিল না থাকে, আপনার বিল্ড টুল বা সিস্টেম আপনার শংসাপত্রের সাথে আপনার আবেদনে স্বাক্ষর করার জন্য কনফিগার করা হয়নি। এই ক্ষেত্রে, কীভাবে এটি সঠিকভাবে কনফিগার করবেন তা নির্ধারণ করতে আপনার বিল্ড এনভায়রনমেন্টের ডকুমেন্টেশন দেখুন এবং আবার সাইন ইন করার চেষ্টা করুন।
এরপরে, শংসাপত্রের আঙুলের ছাপ আপনার ক্লায়েন্ট আইডিতে কনফিগার করা আঙ্গুলের ছাপের সাথে মেলে কিনা তা পরীক্ষা করুন। এটি করতে:
- Google Play Console খুলুন এবং আপনার গেমে নেভিগেট করুন।
- গেমের বিবরণ পৃষ্ঠায়, নীচে স্ক্রোল করুন এবং লিঙ্ক করা Google ক্লাউড প্ল্যাটফর্ম প্রকল্পের লিঙ্কে ক্লিক করুন।
- Google ক্লাউড প্ল্যাটফর্মে, আপনার প্রকল্প নির্বাচন করুন।
- বাম পাশের সাইডবারে, APIs & auth নির্বাচন করুন। এপিআই-এর প্রদর্শিত তালিকায় Google Play গেম পরিষেবার API স্ট্যাটাস চালু আছে কিনা তা নিশ্চিত করুন।
- বাম দিকে সাইডবারে, নিবন্ধিত অ্যাপ নির্বাচন করুন।
- OAuth 2.0 ক্লায়েন্ট আইডি বিভাগটি প্রসারিত করুন এবং শংসাপত্রের আঙ্গুলের ছাপ (SHA1) নোট করুন।
যদি এই আঙুলের ছাপটি পূর্ববর্তী ধাপগুলি থেকে আপনার শংসাপত্রের আঙ্গুলের ছাপের সাথে মেলে না, তাহলে আপনাকে অবশ্যই সঠিক শংসাপত্রের আঙ্গুলের ছাপের সাথে একটি নতুন ক্লায়েন্ট আইডি তৈরি করতে হবে৷ আপনাকে অবশ্যই Google Play Console-এ নতুন ক্লায়েন্ট আইডি তৈরি করতে হবে, Google ক্লাউড প্ল্যাটফর্মে নয়।
পরীক্ষা অ্যাকাউন্ট সক্রিয় আছে কিনা পরীক্ষা করুন
একটি গেম প্রকাশ করার আগে, Google Play Console-এ গেমটি তৈরি করা অ্যাকাউন্টটিকেও পরীক্ষক হিসাবে সক্ষম করতে হবে৷ এটি সঠিকভাবে কনফিগার করা হয়েছে কিনা তা পরীক্ষা করতে:
- Google Play Console খুলুন এবং আপনার গেমে নেভিগেট করুন।
- টেস্টিং ট্যাব খুলুন।
- আপনি যে অ্যাকাউন্ট দিয়ে সাইন ইন করার চেষ্টা করছেন সেটি পরীক্ষাকারীদের তালিকায় আছে কিনা পরীক্ষা করুন।
আপনি যে অ্যাকাউন্ট দিয়ে সাইন ইন করার চেষ্টা করছেন সেটি তালিকাভুক্ত না থাকলে, তালিকায় যোগ করুন, কয়েক মিনিট অপেক্ষা করুন এবং আবার সাইন ইন করার চেষ্টা করুন।
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...
}
}