Android गेम में Play की गेम सेवाओं से जुड़ी समस्या हल करना

इस पेज में उन समस्याओं को हल करने का तरीका बताया गया है जो आपको Google Play की गेम सेवाओं की मदद से Android गेम डेवलप करना.

लॉग इन हो रहा है

अपने गेम से जुड़ी समस्याओं को हल करने के लिए, वर्बोस लॉगिंग चालू की जा सकती है अपने डिवाइस पर adb shell निर्देश का इस्तेमाल करके. इसके बाद, आपको Logcat का इस्तेमाल करके, Google Play की गेम सेवाओं के लॉग मैसेज.

प्रवेश करना सक्षम करें

अपने टेस्ट डिवाइस पर, लॉग इन करने की सुविधा चालू करने के लिए:

  1. डिवाइस को उस मशीन से कनेक्ट करें जिसमें Android SDK इंस्टॉल हो.

  2. टर्मिनल खोलें और इस निर्देश को चलाएं:

    adb shell setprop log.tag.Games VERBOSE
  3. डिवाइस पर अपना गेम चलाएं और अपनी समस्या को हल करें डीबग.

  4. लॉग देखें:

    adb logcat

लॉग इन करने की सुविधा बंद करें

अपने डिवाइस पर, Play की गेम सेवाओं के लिए वर्बोस लॉगिंग बंद करने के लिए और मूल लॉगिंग व्यवहार पर वापस जाएं, निम्न आदेश चलाएं:

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 डायरेक्ट्री में मौजूद है, जैसे कि 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. आरएसए सर्टिफ़िकेट फ़ाइल का इस्तेमाल करके निजी पासकोड जनरेट करें:

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

    इसके अलावा, आपके पास डीएसए सर्टिफ़िकेट फ़ाइल का इस्तेमाल करके भी निजी पासकोड जनरेट करने का विकल्प है:

    keytool -printcert -file META-INF/CERT.DSA
    
  4. SHA1: लेबल वाली पंक्ति पर हेक्साडेसिमल अंकों के क्रम को नोट करें.

    अंकों का यह क्रम आपके प्रमाणपत्र फ़िंगरप्रिंट से मेल खाना चाहिए पिछला चरण. अगर कोई मैच नहीं होता है, तो आपका बिल्ड टूल या सिस्टम को आपके प्रमाणपत्र के साथ आपकी ऐप्स पर हस्ताक्षर करने के लिए कॉन्फ़िगर किया गया है. इस मामले में, कॉन्फ़िगर करने का तरीका जानने के लिए, अपने बिल्ड एनवायरमेंट के दस्तावेज़ देखें उसे ठीक करके फिर से प्रवेश करने का प्रयास करें.

इसके बाद, देखें कि सर्टिफ़िकेट फ़िंगरप्रिंट, कॉन्फ़िगर किए गए फ़िंगरप्रिंट से मेल खाता है या नहीं डालें. ऐसा करने के लिए:

  1. Play Console खोलें और अपने गेम पर जाएं.
  2. गेम की जानकारी वाले पेज पर, स्क्रोल करके नीचे जाएं. इसके बाद, गेम की जानकारी वाले पेज के लिंक पर क्लिक करें Google Cloud Platform प्रोजेक्ट से लिंक किया गया है.
  3. अपना प्रोजेक्ट चुनें.
  4. बाईं ओर साइडबार में, एपीआई और प्रमाणीकरण. पक्का करें कि एपीआई की दिखाई गई सूची में, Google Play की गेम सेवाओं के एपीआई की स्थिति चालू है.
  5. साइडबार में बाईं ओर, रजिस्टर किए गए ऐप्लिकेशन चुनें.
  6. OAuth 2.0 क्लाइंट आईडी सेक्शन को बड़ा करें और सर्टिफ़िकेट नोट करें फ़िंगरप्रिंट (SHA1).

यदि यह फ़िंगरप्रिंट आपके प्रमाणपत्र के फ़िंगरप्रिंट से मेल नहीं खाता है, तो ऊपर दिए गए चरणों के मुताबिक, आपको सही सर्टिफ़िकेट के साथ एक नया क्लाइंट आईडी बनाना होगा फ़िंगरप्रिंट. आपको इसमें नया क्लाइंट आईडी बनाना होगा: Play Console शामिल है, लेकिन Google Cloud Platform प्रोजेक्ट में नहीं है.

यह देखना कि टेस्ट खाते चालू हैं या नहीं

गेम के पब्लिश होने से पहले, उसी खाते से जिसकी मदद से गेम बनाया गया है Play Console को टेस्टर के तौर पर भी चालू किया जाना चाहिए. इसकी जांच करने के लिए इसे सही तरीके से कॉन्फ़िगर किया गया है:

  1. Play Console खोलें और अपने गेम पर जाएं.
  2. टेस्टिंग टैब खोलें.
  3. यह पक्का करें कि जिस खाते से साइन इन करने की कोशिश की जा रही है वह टेस्टर.

अगर वह खाता सूचीबद्ध नहीं है जिससे आप साइन इन करने का प्रयास कर रहे हैं, तो उसे सूची में जोड़ें, कुछ मिनट इंतज़ार करें और फिर से साइन इन करने की कोशिश करें.

प्रोगार्ड से जुड़ी समस्याएं

अगर आप 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...
        }
    }