หน้านี้อธิบายวิธีการแก้ปัญหาที่คุณอาจพบขณะพัฒนาเกม 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 ที่สร้างความสับสน ให้ตรวจสอบระดับ 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...
}
}