Bu sayfada, Google Play Games Services ile Android oyunları geliştirirken karşılaşabileceğiniz sorunların nasıl giderileceği açıklanmaktadır.
Günlük kaydı
Oyununuzla ilgili sorunları gidermek için adb shell
komutunu kullanarak cihazınızda ayrıntılı günlük kaydını etkinleştirebilirsiniz. Ardından, logcat'i kullanarak Google Play Games Hizmetleri günlük mesajlarını görüntüleyebilirsiniz.
Günlük kaydını etkinleştir
Test cihazınızda günlük kaydını etkinleştirmek için:
Cihazı, Android SDK'sının yüklü olduğu bir makineye bağlayın.
Bir terminal açıp şu komutu çalıştırın:
adb shell setprop log.tag.Games VERBOSE
Oyununuzu cihazda çalıştırın ve hata ayıklamaya çalıştığınız sorunu yeniden oluşturun.
Günlükleri görüntüleme:
adb logcat
Günlük kaydını devre dışı bırakma
Cihazınızda Play Games Hizmetleri için ayrıntılı günlük kaydını devre dışı bırakmak ve orijinal günlük kaydı davranışına dönmek üzere aşağıdaki komutu çalıştırın:
adb shell setprop log.tag.Games INFO
Oturum açılamadı
Oyuncuların oyununuzda oturum açmasını sağlayamıyorsanız öncelikle istemci kimliklerinizi oluşturma ve oyun hizmetlerini yapılandırma talimatlarını uyguladığınızdan emin olun. Hâlâ oturum açma hatalarıyla karşılaşıyorsanız oyununuzun doğru şekilde ayarlandığından emin olmak için aşağıdaki öğeleri kontrol edin.
Meta veri etiketlerinizi kontrol etme
AndroidManifest.xml
, oyun meta verisi etiketi içermelidir. Meta veri etiketlerinizin doğru şekilde ayarlandığını doğrulamak için:
AndroidManifest.xml
dosyanızı açın ve aşağıda gösterildiği gibi birmeta-data
etiketi içerdiğini doğrulayın:<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
@string/app_id
kaynağınızın tanımını bulun. Genellikleres/xml
dizininde bulunan bir XML dosyasında (ör.res/xml/strings.xml
veyares/xml/ids.xml
) tanımlanır.@string/app_id
kaynağının değerinin, uygulamanızın sayısal kimliğiyle eşleştiğini doğrulayın. Bu kaynağın değeri yalnızca rakam içermelidir. Örnek:<string name="app_id">123456789012</string>
Paket adınızı kontrol edin
Oyununuzun paket adı, müşteri kimliğinizdeki paket adıyla eşleşmelidir. Paket adını doğrulamak için:
AndroidManifest.xml
dosyanızı açın ve oyununuzun paket adının doğru olduğundan emin olun. Paket adı,manifest
etiketindekipackage
özelliğinin değeridir.Müşteri kimliğinizi oluştururken belirttiğiniz paket adını doğrulayın. Google Play Console'da paket adını doğrulamak için Play Console'a gidip oyununuza karşılık gelen girişi tıklayın.
Bağlı Uygulamalar sekmesine gidin ve istemci kimlikleri listesini inceleyin. Bu listede, paket adı
AndroidManifest.xml
'ünüzdeki paket adıyla eşleşen bir Android bağlı uygulaması olmalıdır. Eşleşme yoksa doğru paket adıyla yeni bir istemci kimliği oluşturun ve tekrar oturum açmayı deneyin.
Sertifika parmak izini kontrol etme
Oyununuzu imzaladığınız sertifika, müşteri kimliğinizle ilişkili sertifika parmak izini karşılamalıdır. Bunu doğrulamak için öncelikle sertifikanızın SHA1 parmak izini aşağıdaki gibi kontrol edin:
Sertifika dosyanızı bulun ve SHA1 parmak izini alın. SHA1 parmak izini almak için şu komutu çalıştırın:
keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
Çıktıda
SHA1:
olarak etiketlenen on altılık basamak dizisini not edin. Bu, sertifikanızın parmak izidir.
Ardından, derleme aracınızın bu sertifikayı kullanıp kullanmadığını kontrol edin:
- Derleme aracınızdan oyununuzun APK'sını oluşturun ve istediğiniz sertifikayla imzalayın. Oluşturulan APK'yı geçici bir dizine kopyalayın.
APK'nızın sıkıştırmasını açmak için geçici dizinde aşağıdaki komutu çalıştırın.
unzip YourGame.apk
RSA sertifika dosyası kullanarak özel anahtar oluşturun:
keytool -printcert -file META-INF/CERT.RSA
Alternatif olarak, DSA sertifika dosyası kullanarak özel anahtarı oluşturabilirsiniz:
keytool -printcert -file META-INF/CERT.DSA
SHA1:
etiketli satırdaki onaltılık basamak dizisini not edin.Bu basamak dizisi, önceki adımdaki sertifika parmak izinizle eşleşmelidir. Eşleşme yoksa derleme aracınız veya sisteminiz, uygulamanızı sertifikanızla imzalayacak şekilde yapılandırılmamıştır. Bu durumda, nasıl doğru şekilde yapılandıracağınızı belirlemek için derleme ortamınızın dokümanlarına bakın ve tekrar oturum açmayı deneyin.
Ardından, sertifika parmak izinin istemci kimliğinizde yapılandırılan parmak iziyle eşleşip eşleşmediğini kontrol edin. Bunu yapmak için:
- Play Console'u açıp oyununuza gidin.
- Oyun Ayrıntıları sayfasında aşağı kaydırın ve bağlı Google Cloud Platform projesinin bağlantısını tıklayın.
- Projenizi seçin.
- Soldaki kenar çubuğundan API'ler ve kimlik doğrulama'yı seçin. Gösterilen API listesinde Google Play Games Services API durumunun AÇIK olduğundan emin olun.
- Soldaki kenar çubuğunda Kayıtlı uygulamalar'ı seçin.
- OAuth 2.0 İstemci Kimliği bölümünü genişletin ve sertifika parmak izini (SHA1) not edin.
Bu parmak izi, önceki adımlardaki sertifikanızın parmak iziyle eşleşmiyorsa doğru sertifika parmak iziyle yeni bir istemci kimliği oluşturmanız gerekir. Yeni istemci kimliğini Google Cloud Platform projesinde değil, Play Console'da oluşturmanız gerekir.
Test hesaplarının etkinleştirildiğinden emin olun
Bir oyun yayınlanmadan önce, oyunu Play Console'da oluşturan hesabın test kullanıcısı olarak da etkinleştirilmesi gerekir. Bunun doğru yapılandırıldığından emin olmak için:
- Play Console'u açıp oyununuza gidin.
- Test sekmesini açın.
- Oturum açmaya çalıştığınız hesabın test kullanıcıları listesinde olup olmadığını kontrol edin.
Oturum açmaya çalıştığınız hesap listede yoksa listeye ekleyin, birkaç dakika bekleyin ve tekrar oturum açmayı deneyin.
Proguard sorunları
Proguard kullanıyorsanız ve kodu karartılmış APK'da hata görüyorsanız AndroidManifest.xml
'inizdeki hedef API seviyesini kontrol edin. Bu değeri 17 veya daha yüksek bir değere ayarladığınızdan emin olun.
Kurulum sorunlarının diğer nedenleri
Hataların diğer yaygın nedenlerini kontrol edin:
- Oyununuz yayınlandıysa oyun ayarlarının da yayınlandığından emin olun (uygulamayı oyun ayarlarını yayınlamadan yayınlamak mümkündür). Bunu yapmak için Google Play Console'a gidip uygulamanıza gidin ve oyunun adının yanındaki kutunun yayınlandığını gösterdiğinden emin olun. "Yayınlanmaya Hazır" veya "Teste Hazır" gibi başka bir durumda olduğunu gösteriyorsa kutuyu tıklayıp Oyunu Yayınla'yı seçin.
- Oyununuzu yayınlayamıyorsanız istemci kimliklerinden birinde Bu uygulama yeni yüklemeler için tercih edilir seçeneğinin etkinleştirildiğinden emin olun.
Anonim dinleyiciler
Anonim dinleyiciler kullanmayın. Anonim dinleyiciler, aşağıda gösterildiği gibi satır içi olarak tanımlanan bir dinleyici arayüzünün uygulamalarıdır.
ImageManager im = ...;
// Anonymous listener -- dangerous:
im.loadImage(new ImageManager.OnImageLoadedListener() {
@Override
public void onImageLoaded(Uri uri, Drawable drawable) {
// ...code...
}
}
Play Games SDK'sı anonim dinleyicileri zayıf referanslar olarak koruduğu için bu dinleyiciler güvenilir değildir. Bu, çağrılmadan önce çöp toplayıcı tarafından geri alınabilecekleri anlamına gelir. Bunun yerine, dinleyiciyi Activity
gibi kalıcı bir nesne kullanarak uygulamanız gerekir.
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...
}
}