การแก้ปัญหาในเกม Android ของคุณ

หน้านี้อธิบายวิธีการแก้ปัญหาที่คุณอาจพบขณะพัฒนาเกม Android ด้วย Play Games SDK

ไม่สามารถลงชื่อเข้าใช้

หากคุณลงชื่อเข้าใช้ผู้เล่นในเกมไม่ได้ ให้ตรวจสอบว่าคุณได้ทําตามวิธีการสร้างรหัสไคลเอ็นต์และกําหนดค่าบริการเกมของแล้ว หากยังพบข้อผิดพลาดในการลงชื่อเข้าใช้ ให้ตรวจสอบรายการต่อไปนี้เพื่อให้แน่ใจว่าเกมได้รับการตั้งค่าอย่างถูกต้อง

ตรวจสอบแท็กข้อมูลเมตา

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 โดยปกติมักจะกําหนดในไฟล์ XML ที่อยู่ในไดเรกทอรี res/xml เช่น res/xml/strings.xml หรือ res/xml/ids.xml

  3. ตรวจสอบว่าค่าของทรัพยากร @string/app_id ตรงกับรหัสตัวเลขของแอปพลิเคชัน ค่าของทรัพยากรนี้ควรประกอบด้วยตัวเลขเท่านั้น เช่น

    <string name="app_id">123456789012</string>
    

ตรวจสอบชื่อแพ็กเกจของคุณ

ชื่อแพ็กเกจของเกมต้องตรงกับชื่อแพ็กเกจในรหัสไคลเอ็นต์ของคุณ วิธียืนยันชื่อแพ็กเกจ

  1. เปิด AndroidManifest.xml และยืนยันว่าชื่อแพ็กเกจของเกมถูกต้อง ชื่อแพ็กเกจคือค่าของแอตทริบิวต์ package ในแท็ก manifest
  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. สร้างคีย์ส่วนตัวโดยใช้ไฟล์ใบรับรอง RSA:

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

    หรือจะสร้างคีย์ส่วนตัวโดยใช้ไฟล์ใบรับรอง DSA ก็ได้ โดยทําดังนี้

    keytool -printcert -file META-INF/CERT.DSA
    
  4. สังเกตลําดับเลขฐานสิบหกในบรรทัดที่มีป้ายกํากับว่า SHA1:

    ตัวเลขนี้ควรตรงกับลายนิ้วมือของใบรับรองจากขั้นตอนก่อนหน้า หากข้อมูลไม่ตรงกัน เครื่องมือหรือระบบของบิลด์จะไม่กําหนดค่าเพื่อรับรองแอปพลิเคชันด้วยใบรับรอง ในกรณีนี้ ให้ดูเอกสารประกอบของสภาพแวดล้อมบิลด์เพื่อกําหนดวิธีกําหนดค่าอย่างถูกต้องและลองลงชื่อเข้าใช้อีกครั้ง

จากนั้นตรวจสอบว่าลายนิ้วมือของใบรับรองตรงกับลายนิ้วมือที่กําหนดค่าไว้ในรหัสไคลเอ็นต์หรือไม่ โดยทำดังนี้

  1. เปิด Google Play Console แล้วไปยังเกมของคุณ
  2. ในหน้ารายละเอียดเกม ให้เลื่อนไปที่ด้านล่างแล้วคลิกลิงก์ไปยังโปรเจ็กต์ Google Cloud Platform ที่ลิงก์ไว้
  3. เลือกโปรเจ็กต์ใน Google Cloud Platform
  4. เลือก API และการตรวจสอบสิทธิ์ในแถบด้านข้างทางซ้าย ตรวจสอบว่าสถานะ API บริการเกมของ Google Play เปิดในรายการ API ที่แสดง
  5. เลือกแอปที่ลงทะเบียนไว้ในแถบด้านข้างทางซ้าย
  6. ขยายส่วนรหัสไคลเอ็นต์ OAuth 2.0 และจดบันทึกลายนิ้วมือของใบรับรอง (SHA1)

หากลายนิ้วมือนี้ไม่ตรงกับลายนิ้วมือของใบรับรองจากขั้นตอนก่อนหน้า คุณต้องสร้างรหัสไคลเอ็นต์ใหม่ด้วยลายนิ้วมือที่ถูกต้องของใบรับรอง คุณต้องสร้างรหัสไคลเอ็นต์ใหม่ใน Google Play Console ไม่ใช่ใน Google Cloud Platform

ตรวจสอบว่าได้เปิดใช้บัญชีทดสอบแล้ว

ก่อนจะเผยแพร่เกม บัญชีที่สร้างเกมใน Google Play Console จะต้องเปิดใช้ในฐานะผู้ทดสอบด้วย วิธีตรวจสอบว่ามีการกําหนดค่าอย่างถูกต้องหรือไม่

  1. เปิด Google Play Console แล้วไปยังเกมของคุณ
  2. เปิดแท็บการทดสอบ
  3. ตรวจสอบว่าบัญชีที่คุณพยายามลงชื่อเข้าใช้อยู่ในรายการผู้ทดสอบ

หากบัญชีที่คุณพยายามลงชื่อเข้าใช้ไม่อยู่ในรายการ ให้เพิ่มบัญชีนั้นในรายการ จากนั้นรอสักครู่ แล้วลองลงชื่อเข้าใช้อีกครั้ง

ปัญหาเกี่ยวกับ Proguard

หากคุณใช้ Proguard และพบข้อผิดพลาดใน APK ที่สร้างความสับสน ให้ตรวจสอบระดับ API เป้าหมายใน AndroidManifest.xml อย่าลืมตั้งค่าเป็น 17 ขึ้นไป

สาเหตุอื่นๆ เกี่ยวกับปัญหาการตั้งค่า

ตรวจสอบสาเหตุที่พบบ่อยอื่นๆ ของข้อผิดพลาด ดังนี้

  • หากเกมของคุณได้รับการเผยแพร่แล้ว ให้ตรวจสอบด้วยว่าการตั้งค่าเกมได้รับการเผยแพร่แล้ว (คุณจะเผยแพร่แอปพลิเคชันได้โดยไม่ต้องเผยแพร่การตั้งค่าเกม) วิธีการคือ ไปที่ Google Play Console แล้วไปที่แอปของคุณ แล้วเลือกช่องข้างชื่อเกมที่ระบุว่าแอปเผยแพร่แล้ว หากระบุว่าอยู่ในสถานะอื่น เช่น "พร้อมเผยแพร่" หรือ "พร้อมทดสอบ" ให้คลิกช่องแล้วเลือกเผยแพร่เกม
  • หากเผยแพร่เกมไม่ได้ ให้ตรวจสอบว่ารหัสไคลเอ็นต์รายการใดรายการหนึ่งเปิดใช้ตัวเลือกแอปนี้เหมาะสําหรับการติดตั้งใหม่

ผู้ฟังนิรนาม

อย่าใช้ผู้ฟังนิรนาม ผู้ฟังนิรนามคือการใช้งานอินเทอร์เฟซ Listener ที่กําหนดอินไลน์ ดังที่แสดงดังที่แสดงด้านล่าง

    ImageManager im = ...;

    // Anonymous listener -- dangerous:
    im.loadImage(new ImageManager.OnImageLoadedListener() {
        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }

ผู้ฟังนิรนามไม่น่าเชื่อถือเพราะ Play Games SDK เก็บเป็นข้อมูลอ้างอิงที่ไม่รัดกุม ซึ่งหมายความว่าอาจมีการเรียกคืนโดยคนเก็บขยะก่อนที่จะเรียกใช้ คุณควรใช้ Listener โดยใช้ออบเจ็กต์ถาวร เช่น 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...
        }
    }