Halaman ini menjelaskan cara memecahkan masalah yang mungkin Anda alami saat mengembangkan Android dengan Play Game SDK.
Tidak dapat login
Jika Anda tidak dapat memproses login pemain ke game, pastikan terlebih dahulu bahwa Anda telah mengikuti petunjuk untuk membuat client ID dan mengonfigurasi layanan game. Jika Anda masih menemui proses login error, periksa item berikut untuk memastikan game Anda disiapkan dengan benar.
Memeriksa tag metadata Anda
AndroidManifest.xml
Anda harus berisi tag metadata game. Untuk memastikan bahwa
tag metadata Anda sudah disiapkan dengan benar:
Buka
AndroidManifest.xml
dan verifikasi bahwa file tersebut berisi tagmeta-data
seperti yang ditunjukkan di bawah:<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
Cari definisi resource
@string/app_id
Anda. Definisi biasanya ditentukan dalam file XML yang terletak di direktorires/xml
, misalnyares/xml/strings.xml
ataures/xml/ids.xml
.Pastikan nilai resource
@string/app_id
cocok dengan ID numerik aplikasi Anda. Nilai resource ini hanya boleh berisi angka. Contoh:<string name="app_id">123456789012</string>
Memeriksa nama paket Anda
Nama paket game Anda harus cocok dengan nama paket di client ID. Untuk memverifikasi nama paket:
- Buka
AndroidManifest.xml
dan verifikasi bahwa nama paket game Anda sudah benar. Nama paket adalah nilai atributpackage
dalam tagmanifest
. - Verifikasi nama paket yang Anda berikan saat membuat client ID. Untuk memverifikasi
nama paket di
Konsol Google Play, buka Konsol Google Play dan klik entri yang sesuai dengan game Anda.
Buka tab Linked Apps, lalu periksa daftar client ID. Harus ada Android yang ditautkan
aplikasi dalam daftar ini yang nama paketnya cocok dengan nama paket di
AndroidManifest.xml
Anda. - Jika terdapat ketidakcocokan, buat client ID baru dengan nama paket yang benar, lalu coba login untuk mencoba lagi perintah.
Memeriksa sidik jari sertifikat
Sertifikat yang digunakan untuk menandatangani game harus cocok dengan sidik jari sertifikat yang terkait dengan client ID Anda. Untuk memverifikasinya, periksa sidik jari SHA1 sertifikat Anda terlebih dahulu:
Cari file sertifikat dan dapatkan sidik jari SHA1. Untuk mendapatkan sidik jari SHA1, jalankan perintah ini:
keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
Perhatikan urutan digit heksadesimal yang berlabel
SHA1:
dalam output. Itulah sidik jari sertifikat Anda.
Selanjutnya, periksa apakah alat build Anda menggunakan sertifikat ini:
- Buat APK game dari alat build dan tanda tangani dengan sertifikat yang diinginkan. Salin APK yang dihasilkan ke direktori sementara.
Di direktori sementara, jalankan perintah berikut untuk mengekstrak APK Anda.
unzip YourGame.apk
Buat kunci pribadi menggunakan file sertifikat RSA:
keytool -printcert -file META-INF/CERT.RSA
Atau, Anda dapat membuat kunci pribadi menggunakan file sertifikat DSA:
keytool -printcert -file META-INF/CERT.DSA
Perhatikan urutan digit heksadesimal pada baris yang berlabel
SHA1:
.Urutan digit ini harus cocok dengan sidik jari sertifikat Anda dari langkah sebelumnya. Jika terdapat ketidakcocokan, alat atau sistem build tidak dikonfigurasi untuk menandatangani aplikasi dengan sertifikat Anda. Dalam hal ini, lihat dokumentasi lingkungan build Anda untuk menentukan cara mengonfigurasinya dengan benar lalu coba login kembali.
Selanjutnya, periksa apakah sidik jari sertifikat cocok dengan sidik jari yang dikonfigurasi dalam client ID Anda. Untuk melakukannya:
- Buka Konsol Google Play, lalu buka game Anda.
- Di halaman Detail Game, scroll ke bagian bawah dan klik link ke project Google Cloud Platform yang tertaut.
- Di Google Cloud Platform, pilih project Anda.
- Di sidebar di sisi kiri, pilih API & auth Pastikan status API Layanan game Google Play AKTIF dalam daftar API yang ditampilkan.
- Di sidebar sebelah kiri, pilih Aplikasi terdaftar.
- Luaskan bagian Client ID OAuth 2.0 dan catat sidik jari sertifikat (SHA1).
Jika sidik jari ini tidak cocok dengan sidik jari sertifikat dari langkah sebelumnya, Anda harus membuat client ID baru dengan sidik jari sertifikat yang benar. Anda harus membuat client ID baru di Konsol Google Play, bukan di Google Cloud Platform.
Memastikan akun pengujian telah diaktifkan
Sebelum game dipublikasikan, akun yang membuat game di Konsol Google Play juga harus diaktifkan sebagai penguji. Untuk memeriksa apakah konfigurasi ini benar:
- Buka Konsol Google Play, lalu buka game Anda.
- Buka tab Testing.
- Periksa apakah akun yang Anda coba gunakan untuk login ada dalam daftar penguji.
Jika akun yang ingin Anda gunakan untuk login tidak tercantum, tambahkan ke daftar, tunggu beberapa menit, lalu coba login lagi.
Masalah Proguard
Jika Anda menggunakan Proguard dan melihat adanya error pada APK yang di-obfuscate, periksa level
API target pada AndroidManifest.xml
Anda. Pastikan untuk menetapkannya ke 17 atau lebih tinggi.
Penyebab lain masalah penyiapan
Periksa penyebab umum kesalahan lainnya:
- Jika game Anda dipublikasikan, pastikan setelan game juga dipublikasikan (Anda dapat memublikasikan aplikasi tanpa memublikasikan setelan game). Untuk melakukannya, buka Konsol Google Play dan buka aplikasi Anda, lalu centang kotak di samping nama game yang menunjukkan publikasinya. Jika ada dalam status lain, seperti "Ready to Publish" atau "Ready to Test", klik kotak dan pilih Publish Game.
- Jika Anda tidak dapat memublikasikan game, pastikan salah satu client ID mengaktifkan opsi Aplikasi ini diutamakan untuk penginstalan baru.
Pemroses anonim
Jangan gunakan pemroses anonim. Pemroses anonim adalah implementasi antarmuka pemroses yang ditentukan secara inline seperti yang diilustrasikan di bawah ini.
ImageManager im = ...;
// Anonymous listener -- dangerous:
im.loadImage(new ImageManager.OnImageLoadedListener() {
@Override
public void onImageLoaded(Uri uri, Drawable drawable) {
// ...code...
}
}
Pemroses anonim tidak dapat diandalkan karena SDK Play Game mempertahankannya sebagai referensi yang lemah,
yang berarti pemroses tersebut dapat diklaim kembali oleh pembersih sampah memori sebelum
dipanggil. Sebagai gantinya, Anda harus mengimplementasikan pemroses menggunakan objek persisten
seperti 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...
}
}