หน้านี้อธิบายวิธีแก้ปัญหาที่คุณอาจพบ การพัฒนาเกม Android ด้วยบริการเกมของ Google Play
การบันทึก
คุณสามารถเปิดการบันทึกแบบละเอียดเพื่อแก้ปัญหาเกี่ยวกับเกม
บนอุปกรณ์ของคุณโดยใช้คำสั่ง adb shell
จากนั้นคุณสามารถดู
ข้อความบันทึกของบริการเกมของ Google Play โดยใช้ Logcat
เปิดใช้งานการทำบันทึก
วิธีเปิดใช้การบันทึกในอุปกรณ์ทดสอบ
เชื่อมต่ออุปกรณ์กับเครื่องที่ติดตั้ง Android SDK
เปิดเทอร์มินัลและเรียกใช้คำสั่งนี้
adb shell setprop log.tag.Games VERBOSE
เรียกใช้เกมในอุปกรณ์และจำลองปัญหาที่คุณพยายามทํา ของคุณ
ดูบันทึก:
adb logcat
ปิดใช้งานการบันทึก
วิธีปิดใช้การบันทึกแบบละเอียดสำหรับบริการเกมของ Play ในอุปกรณ์ และ เปลี่ยนกลับเป็นลักษณะการบันทึกแบบเดิม แล้วเรียกใช้คำสั่งต่อไปนี้
adb shell setprop log.tag.Games INFO
ไม่สามารถลงชื่อเข้าใช้
หากคุณไม่สามารถลงชื่อเข้าใช้ให้ผู้เล่นเล่นเกมได้ ก่อนอื่นให้ตรวจสอบว่าคุณมี ทำตามวิธีการเพื่อ สร้างรหัสไคลเอ็นต์ และ กำหนดค่าบริการเกม หากยังพบข้อผิดพลาดในการลงชื่อเข้าใช้ โปรดตรวจสอบรายการต่อไปนี้ ว่าเกมได้รับการตั้งค่าอย่างถูกต้อง
ตรวจสอบแท็กข้อมูลเมตา
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 ให้ไปที่ 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:
ตัวเลขลำดับนี้ควรตรงกับลายนิ้วมือของใบรับรองจาก ขั้นตอนก่อนหน้า หากข้อมูลไม่ตรงกัน แสดงว่าเครื่องมือหรือระบบของบิลด์ไม่เป็นไปตาม กำหนดค่าให้ลงนามแอปพลิเคชันด้วยใบรับรองของคุณ ในกรณีนี้ ดูเอกสารประกอบของสภาพแวดล้อมบิลด์เพื่อกำหนดวิธีกำหนดค่า อย่างถูกต้อง และลองลงชื่อเข้าใช้อีกครั้ง
ถัดไป ตรวจสอบว่าลายนิ้วมือของใบรับรองตรงกับลายนิ้วมือที่กำหนดค่าไว้หรือไม่ ในรหัสไคลเอ็นต์ หากต้องการทำสิ่งต่อไปนี้
- เปิด Play Console และไปที่เกม
- ในหน้ารายละเอียดเกม ให้เลื่อนลงไปด้านล่างแล้วคลิกลิงก์ โปรเจ็กต์ Google Cloud Platform ที่ลิงก์ไว้
- เลือกโปรเจ็กต์
- ในแถบด้านข้างทางซ้าย ให้เลือก API และ การตรวจสอบสิทธิ์ โปรดตรวจสอบว่า สถานะ API บริการเกมของ Google Play เป็นเปิดในรายการ API ที่แสดง
- ในแถบด้านข้างทางซ้าย ให้เลือกแอปที่ลงทะเบียนไว้
- ขยายส่วนรหัสไคลเอ็นต์ OAuth 2.0 และดูใบรับรอง ลายนิ้วมือ (SHA1)
หากลายนิ้วมือนี้ไม่ตรงกับลายนิ้วมือของใบรับรองจาก ในขั้นตอนก่อนหน้า คุณต้องสร้างรหัสไคลเอ็นต์ใหม่ด้วยใบรับรองที่ถูกต้อง ลายนิ้วมือ คุณต้องสร้างรหัสไคลเอ็นต์ใหม่ใน Play Console ไม่ได้อยู่ในโปรเจ็กต์ Google Cloud Platform
ตรวจสอบว่าเปิดใช้บัญชีทดสอบอยู่
ก่อนที่จะเผยแพร่เกม บัญชีที่สร้างเกมใน ต้องเปิดใช้ Play Console ในฐานะผู้ทดสอบด้วย หากต้องการตรวจสอบว่า มีการกำหนดค่าอย่างถูกต้อง
- เปิด 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...
}
}