Halaman ini menjelaskan cara memecahkan masalah yang mungkin Anda alami saat mengembangkan game Android dengan Layanan game Google Play.
Logging
Untuk memecahkan masalah game, Anda dapat mengaktifkan logging panjang
di perangkat menggunakan perintah adb shell
. Kemudian, Anda dapat melihat
pesan log Layanan game Google Play menggunakan logcat.
Mengaktifkan logging
Untuk mengaktifkan logging di perangkat pengujian:
Hubungkan perangkat ke komputer yang telah menginstal Android SDK.
Buka terminal dan jalankan perintah ini:
adb shell setprop log.tag.Games VERBOSE
Jalankan game Anda di perangkat dan rekonstruksi masalah yang ingin Anda debug.
Melihat log:
adb logcat
Menonaktifkan logging
Untuk menonaktifkan logging panjang Layanan game Play di perangkat dan kembali ke perilaku logging asli, jalankan perintah berikut:
adb shell setprop log.tag.Games INFO
Tidak dapat login
Jika Anda tidak dapat membuat pemain login ke game, pertama-tama pastikan Anda telah mengikuti petunjuk untuk membuat client ID dan mengonfigurasi game Google. Jika Anda masih mengalami error login, periksa item berikut untuk memastikan game Anda telah 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 Play, lalu klik entri yang sesuai dengan game Anda.
Buka tab Linked Apps, lalu periksa daftar client ID. Harus ada aplikasi tertaut Android dalam daftar ini yang nama paketnya cocok dengan nama paket dalam
AndroidManifest.xml
Anda. Jika ada ketidakcocokan, buat client ID baru dengan nama paket yang benar, lalu coba login lagi.
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 sebagai berikut:
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 melakukan ini:
- Buka Konsol Play, lalu buka game Anda.
- Di halaman Detail Game, scroll ke bagian bawah dan klik link ke project Google Cloud Platform yang tertaut.
- 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 Play, bukan di project Google Cloud Platform.
Memastikan akun pengujian telah diaktifkan
Sebelum game dipublikasikan, akun yang membuat game di Konsol Play juga harus diaktifkan sebagai penguji. Untuk memastikan bahwa konfigurasi ini benar:
- Buka Konsol Play, lalu buka game Anda.
- Buka tab Testing.
- Periksa apakah akun yang Anda gunakan untuk login ada dalam daftar penguji atau tidak.
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 pilih aplikasi Anda, lalu centang kotak di samping nama game yang menunjukkan bahwa game tersebut telah dipublikasikan. 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 menerapkan 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...
}
}