इस पेज पर, Google Play Games Services की मदद से Android गेम डेवलप करते समय आने वाली समस्याओं को हल करने का तरीका बताया गया है.
लॉग इन हो रहा है
अपने गेम से जुड़ी समस्याओं को हल करने के लिए, adb shell
कमांड का इस्तेमाल करके अपने डिवाइस पर ज़्यादा जानकारी वाला लॉगिंग चालू किया जा सकता है. इसके बाद, logcat का इस्तेमाल करके, Google Play Games Services के लॉग मैसेज देखे जा सकते हैं.
प्रवेश करना सक्षम करें
अपने टेस्ट डिवाइस पर लॉगिंग की सुविधा चालू करने के लिए:
डिवाइस को उस मशीन से कनेक्ट करें जिस पर Android SDK इंस्टॉल है.
कोई टर्मिनल खोलें और यह कमांड चलाएं:
adb shell setprop log.tag.Games VERBOSE
डिवाइस पर अपना गेम चलाएं और उस समस्या को फिर से देखें जिसे आपको डीबग करना है.
लॉग देखें:
adb logcat
लॉगिंग की सुविधा बंद करना
अपने डिवाइस पर Play Games services के लिए ज़्यादा जानकारी वाली लॉगिंग बंद करने और लॉगिंग के मूल व्यवहार पर वापस जाने के लिए, यह कमांड चलाएं:
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
डायरेक्ट्री में मौजूद एक्सएमएल फ़ाइल में तय किया जाता है. उदाहरण के लिए,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 पर जाएं और अपने गेम से जुड़ी एंट्री पर क्लिक करें.
लिंक किए गए ऐप्लिकेशन टैब पर जाएं और क्लाइंट आईडी की सूची देखें. इस सूची में, लिंक किया गया कोई ऐसा 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
आरएसए सर्टिफ़िकेट फ़ाइल का इस्तेमाल करके निजी पासकोड जनरेट करने के लिए:
keytool -printcert -file META-INF/CERT.RSA
इसके अलावा, डीएसए सर्टिफ़िकेट फ़ाइल का इस्तेमाल करके निजी पासकोड जनरेट किया जा सकता है:
keytool -printcert -file META-INF/CERT.DSA
SHA1:
लेबल वाली लाइन पर, हेक्साडेसिमल अंकों के क्रम पर ध्यान दें.अंकों का यह क्रम, पिछले चरण में दिए गए आपके सर्टिफ़िकेट के फ़िंगरप्रिंट से मेल खाना चाहिए. अगर कोई मैच नहीं होता है, तो इसका मतलब है कि आपके पास मौजूद सर्टिफ़िकेट का इस्तेमाल करके, ऐप्लिकेशन पर हस्ताक्षर करने के लिए, आपके बिल्ड टूल या सिस्टम को कॉन्फ़िगर नहीं किया गया है. इस मामले में, अपने बिल्ड एनवायरमेंट के दस्तावेज़ देखें और यह पता लगाएं कि इसे सही तरीके से कैसे कॉन्फ़िगर किया जाए. इसके बाद, फिर से साइन इन करने की कोशिश करें.
इसके बाद, देखें कि सर्टिफ़िकेट का फ़िंगरप्रिंट, आपके क्लाइंट आईडी में कॉन्फ़िगर किए गए फ़िंगरप्रिंट से मेल खाता है या नहीं. ऐसा करने के लिए:
- Play Console खोलें और अपने गेम पर जाएं.
- गेम की जानकारी पेज पर, सबसे नीचे तक स्क्रोल करें और लिंक किए गए Google Cloud Platform प्रोजेक्ट के लिंक पर क्लिक करें.
- अपना प्रोजेक्ट चुनें.
- बाईं ओर मौजूद साइडबार में, एपीआई और पुष्टि को चुनें. पक्का करें कि एपीआई की दिखाई गई सूची में, Google Play games services API का स्टेटस चालू हो.
- बाईं ओर मौजूद साइडबार में, रजिस्टर किए गए ऐप्लिकेशन चुनें.
- OAuth 2.0 क्लाइंट आईडी सेक्शन को बड़ा करें और सर्टिफ़िकेट का फ़िंगरप्रिंट (SHA1) नोट करें.
अगर यह फ़िंगरप्रिंट, पिछले चरणों में दिए गए आपके सर्टिफ़िकेट के फ़िंगरप्रिंट से मेल नहीं खाता है, तो आपको सर्टिफ़िकेट के सही फ़िंगरप्रिंट के साथ नया क्लाइंट आईडी बनाना होगा. आपको नया क्लाइंट आईडी, Google Cloud Platform प्रोजेक्ट में नहीं, बल्कि Play Console में बनाना होगा.
देखें कि टेस्ट खाते चालू हैं या नहीं
किसी गेम को पब्लिश करने से पहले, Play Console में गेम बनाने वाले खाते को टेस्टर के तौर पर भी चालू करना ज़रूरी है. यह देखने के लिए कि इसे सही तरीके से कॉन्फ़िगर किया गया है या नहीं:
- Play Console खोलें और अपने गेम पर जाएं.
- टेस्टिंग टैब खोलें.
- देखें कि जिस खाते से साइन इन करने की कोशिश की जा रही है वह टेस्टर की सूची में है या नहीं.
अगर वह खाता सूची में नहीं है जिससे आपको साइन इन करना है, तो उसे सूची में जोड़ें. इसके बाद, कुछ मिनट इंतज़ार करें और फिर से साइन इन करने की कोशिश करें.
Proguard से जुड़ी समस्याएं
अगर Proguard का इस्तेमाल किया जा रहा है और आपको बदलाव किए गए APK में गड़बड़ियां दिख रही हैं, तो अपने AndroidManifest.xml
पर टारगेट एपीआई लेवल देखें. इसे 17 या इससे ज़्यादा पर सेट करना न भूलें.
सेटअप से जुड़ी समस्याओं की अन्य वजहें
गड़बड़ियों की अन्य सामान्य वजहें देखें:
- अगर आपका गेम पब्लिश हो गया है, तो देखें कि गेम की सेटिंग भी पब्लिश की गई हैं या नहीं. गेम की सेटिंग पब्लिश किए बिना भी ऐप्लिकेशन को पब्लिश किया जा सकता है. इसके लिए, Google Play Console पर जाएं और अपने ऐप्लिकेशन पर जाएं. इसके बाद, देखें कि गेम के नाम के बगल में मौजूद बॉक्स से यह पता चलता हो कि गेम पब्लिश हो गया है. अगर स्टेटस "पब्लिश करने के लिए तैयार" या "टेस्ट करने के लिए तैयार" जैसा कोई दूसरा स्टेटस दिखाता है, तो बॉक्स पर क्लिक करें और गेम पब्लिश करें को चुनें.
- अगर आपको अपना गेम पब्लिश करने में समस्या आ रही है, तो देखें कि किसी एक क्लाइंट आईडी में नए इंस्टॉल के लिए, इस ऐप्लिकेशन को प्राथमिकता दी जाती है विकल्प चालू हो.
बिना पहचान वाले दर्शक
पहचान छिपाकर सुनने वालों का इस्तेमाल न करें. अनाम लिसनर, ऐसे लिसनर इंटरफ़ेस के लागू होने हैं जिन्हें इनलाइन में तय किया गया है. इसकी जानकारी नीचे दी गई है.
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...
}
}