หน้านี้อธิบายวิธีแก้ปัญหาที่คุณอาจพบขณะพัฒนา Android เกมด้วย Play Games SDK
ไม่สามารถลงชื่อเข้าใช้
หากคุณไม่สามารถลงชื่อเข้าใช้ให้ผู้เล่นเล่นเกมได้ ก่อนอื่นให้ตรวจสอบว่าคุณได้ปฏิบัติตาม วิธีการสร้างรหัสไคลเอ็นต์ และ กำหนดค่าบริการเกม หากคุณยังประสบกับการลงชื่อเข้าใช้ ตรวจสอบรายการต่อไปนี้เพื่อให้แน่ใจว่าเกมของคุณได้รับการตั้งค่าอย่างถูกต้อง
ตรวจสอบแท็กข้อมูลเมตา
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
ซึ่งโดยปกติจะกำหนดไว้ในไฟล์ XML อยู่ในไดเรกทอรีres/xml
เช่นres/xml/strings.xml
หรือres/xml/ids.xml
ยืนยันว่าค่าของทรัพยากร
@string/app_id
ตรงกับรหัสตัวเลขของแอปพลิเคชัน ค่าของแหล่งข้อมูลนี้ควรมีเฉพาะตัวเลขเท่านั้น เช่น<string name="app_id">123456789012</string>
ตรวจสอบชื่อแพ็กเกจ
ชื่อแพ็กเกจของเกมต้องตรงกับชื่อแพ็กเกจในรหัสไคลเอ็นต์ วิธียืนยันชื่อแพ็กเกจ
- เปิด
AndroidManifest.xml
แล้วยืนยันว่าชื่อแพ็กเกจของเกมถูกต้อง แพ็กเกจ ชื่อคือค่าของแอตทริบิวต์package
ในแท็กmanifest
- ยืนยันชื่อแพ็กเกจที่คุณระบุเมื่อสร้างรหัสไคลเอ็นต์ วิธียืนยันชื่อแพ็กเกจใน
Google Play Console ให้ไปที่ Google 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
สร้างคีย์ส่วนตัวโดยใช้ไฟล์ใบรับรอง RSA ดังนี้
keytool -printcert -file META-INF/CERT.RSA
หรือจะสร้างคีย์ส่วนตัวโดยใช้ไฟล์ใบรับรอง DSA ก็ได้โดยทำดังนี้
keytool -printcert -file META-INF/CERT.DSA
สังเกตลำดับของเลขฐานสิบหกในบรรทัด
SHA1:
ตัวเลขลำดับนี้ควรตรงกับลายนิ้วมือของใบรับรองจาก ขั้นตอนก่อนหน้า หากข้อมูลไม่ตรงกัน แสดงว่าเครื่องมือหรือระบบของบิลด์ไม่เป็นไปตาม กำหนดค่าให้ลงนามแอปพลิเคชันด้วยใบรับรองของคุณ ในกรณีนี้ ดูเอกสารประกอบของสภาพแวดล้อมบิลด์เพื่อกำหนดวิธีกำหนดค่า อย่างถูกต้อง และลองลงชื่อเข้าใช้อีกครั้ง
ถัดไป ตรวจสอบว่าลายนิ้วมือของใบรับรองตรงกับลายนิ้วมือที่กำหนดค่าไว้หรือไม่ ในรหัสไคลเอ็นต์ หากต้องการทำสิ่งต่อไปนี้
- เปิด Google Play Console และไปที่เกม
- ในหน้ารายละเอียดเกม ให้เลื่อนลงไปด้านล่างแล้วคลิกลิงก์ โปรเจ็กต์ Google Cloud Platform ที่ลิงก์ไว้
- เลือกโปรเจ็กต์ใน Google Cloud Platform
- ในแถบด้านข้างทางซ้าย ให้เลือก API และ การตรวจสอบสิทธิ์ โปรดตรวจสอบว่า สถานะ API บริการเกมของ Google Play เป็นเปิดในรายการ API ที่แสดง
- ในแถบด้านข้างทางซ้าย ให้เลือกแอปที่ลงทะเบียนไว้
- ขยายส่วนรหัสไคลเอ็นต์ OAuth 2.0 และดูใบรับรอง ลายนิ้วมือ (SHA1)
หากลายนิ้วมือนี้ไม่ตรงกับลายนิ้วมือของใบรับรองจาก ในขั้นตอนก่อนหน้า คุณต้องสร้างรหัสไคลเอ็นต์ใหม่ด้วยใบรับรองที่ถูกต้อง ลายนิ้วมือ คุณต้องสร้างรหัสไคลเอ็นต์ใหม่ใน Google Play Console ไม่ใช่ใน Google Cloud Platform
ตรวจสอบว่าเปิดใช้บัญชีทดสอบอยู่
ก่อนที่จะเผยแพร่เกม บัญชีที่สร้างเกมใน Google Play Console จะต้อง เปิดใช้ในฐานะผู้ทดสอบแล้ว วิธีตรวจสอบว่ามีการกำหนดค่าอย่างถูกต้อง
- เปิด Google Play Console และไปที่เกม
- เปิดแท็บการทดสอบ
- ตรวจสอบว่าบัญชีที่คุณพยายามลงชื่อเข้าใช้อยู่ในรายชื่อผู้ทดสอบแล้ว
หากบัญชีที่คุณพยายามลงชื่อเข้าใช้ไม่อยู่ในรายการ ให้เพิ่มบัญชีดังกล่าวลงในรายการ แล้วรอสักครู่ แล้วลองลงชื่อเข้าใช้อีกครั้ง
ปัญหาเกี่ยวกับ 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...
}
}