การแก้ปัญหาในเกม 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 ที่ปรับให้ยากต่อการอ่าน (Obfuscate) ให้ตรวจสอบระดับ API เป้าหมาย ใน AndroidManifest.xml โปรดตั้งไว้ที่ 17 ขึ้นไป

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

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

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

ผู้ฟังที่ไม่ระบุชื่อ

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

    ImageManager im = ...;

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

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