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

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

साइन इन नहीं किया जा सका

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

अपने मेटाडेटा टैग की जांच करना

आपके 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 में पैकेज के नाम की पुष्टि करने के लिए, Google Play Console पर जाएं और अपने गेम से जुड़ी एंट्री पर क्लिक करें. लिंक किए गए ऐप्लिकेशन टैब पर जाकर क्लाइंट आईडी की सूची देखें. इस सूची में Android से लिंक किया गया ऐप्लिकेशन होना चाहिए जिसका पैकेज नाम आपके AndroidManifest.xml में दिए गए पैकेज के नाम से मेल खाता हो.
  3. अगर यह मेल नहीं खाता है, तो सही पैकेज नाम के साथ एक नया क्लाइंट आईडी बनाएं और फिर से साइन इन करने की कोशिश करें.

सर्टिफ़िकेट फ़िंगरप्रिंट की जांच करें

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

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

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

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

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

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

सुरक्षा से जुड़ी समस्याएं

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

पहचान छिपाकर संगीत सुनने वाले लोग बहुत ज़्यादा भरोसेमंद नहीं होते हैं, क्योंकि 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...
        }
    }