Bu sayfada, Google Play Games Hizmetleri ile Android oyun geliştirirken karşılaşabileceğiniz sorunları nasıl gidereceğiniz açıklanmaktadır.
Günlük kaydı
Oyununuzla ilgili sorunları gidermek için cihazınızda adb shell
komutunu kullanarak 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'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
Oyunu 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 geri dönmek için aşağıdaki komutu çalıştırın:
adb shell setprop log.tag.Games INFO
Oturum açılamadı
Oyuncular oyununuzda oturum açamıyorsa öncelikle istemci kimliklerinizi oluşturma ve oyun hizmetlerini yapılandırma talimatlarını uyguladığınızdan emin olun. Oturum açma hatalarıyla karşılaşmaya devam ederseniz oyununuzun doğru şekilde ayarlandığından emin olmak için aşağıdaki öğeleri kontrol edin.
Meta veri etiketlerinizi kontrol etme
AndroidManifest.xml
dosyanızda oyun meta verileri etiketi bulunmalıdır. Meta veri etiketlerinizin doğru şekilde ayarlandığını doğrulamak için:
AndroidManifest.xml
öğenizi açın ve aşağıda gösterildiği gibimeta-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 tanımlanır. Örneğinres/xml/strings.xml
veyares/xml/ids.xml
.@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 rakamlardan oluşmalıdır. Örneğin:<string name="app_id">123456789012</string>
Paket adınızı kontrol edin
Oyununuzun paket adı, istemci kimliğinizdeki paket adıyla eşleşmelidir. Paket adını doğrulamak için:
AndroidManifest.xml
açın ve oyununuzun paket adının doğru olduğunu doğrulayın. Paket adı,manifest
etiketindekipackage
özelliğinin değeridir.Müşteri kimliğinizi oluştururken sağladığınız 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 gidip istemci kimlikleri listesini inceleyin. Bu listede, paket adı
AndroidManifest.xml
uygulamanızdaki paket adıyla eşleşen bir Android uygulaması olmalıdır. Bir uyuşmazlık varsa 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 iziyle eşleşmelidir. Bunu doğrulamak için öncelikle sertifikanızın SHA1 parmak izini aşağıdaki şekilde 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
Çıkışta
SHA1:
olarak etiketlenen onaltılık basamak dizisini not edin. Bu, sertifikanızın parmak izidir.
Ardından, derleme aracınızın bu sertifikayı kullandığını kontrol edin:
- Oyununuzun APK'sını derleme aracınızdan oluşturun ve istediğiniz sertifikayla imzalayın. Oluşturulan APK'yı geçici bir dizine kopyalayın.
Geçici dizinde, APK'nızı açmak için aşağıdaki komutu çalıştırın.
unzip YourGame.apk
RSA sertifika dosyasını kullanarak özel anahtar oluşturma:
keytool -printcert -file META-INF/CERT.RSA
Alternatif olarak, DSA sertifika dosyası kullanarak gizli anahtar oluşturabilirsiniz:
keytool -printcert -file META-INF/CERT.DSA
SHA1:
etiketli satırdaki onaltılık basamak sırasını not edin.Bu rakam dizisi, önceki adımdaki sertifika parmak izinizle eşleşmelidir. Bir uyuşmazlık varsa derleme aracınız veya sisteminiz, uygulamanızı sertifikanızla imzalayacak şekilde yapılandırılmamıştır. Bu durumda, derleme ortamınızın belgelerine göz atarak ortamı nasıl doğru şekilde yapılandıracağınızı belirleyin ve tekrar oturum açmayı deneyin.
Ardından, sertifika dijital parmak izinin, istemci kimliğinizde yapılandırılan dijital 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 en alta gidin ve bağlı Google Cloud Platform projesinin bağlantısını tıklayın.
- Projenizi seçin.
- Soldaki kenar çubuğunda API'ler ve kimlik doğrulama'yı seçin. Görüntülenen API listesinde Google Play Games Hizmetleri API'sinin 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 izini kullanarak 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, Play Console'da oyunu oluşturan hesabın da testçi olarak etkinleştirilmesi gerekir. Bunun doğru şekilde yapılandırıldığını kontrol etmek 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 hesabı listeye ekleyin, birkaç dakika bekleyin ve tekrar oturum açmayı deneyin.
Proguard sorunları
Proguard kullanıyorsanız ve karartılmış APK'da hatalar görüyorsanız AndroidManifest.xml
hedef API seviyesini kontrol edin. 17 veya daha yüksek bir yaş 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 (oyun ayarlarını yayınlamadan uygulamayı 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, oyunun yayınlandığını gösterdiğinden emin olun. Başka bir durumda olduğunu gösteriyorsa (ör. "Yayınlanmaya hazır" veya "Test edilmeye hazır"), kutuyu tıklayın ve Oyunu Yayınla'yı seçin.
- Oyununuzu yayınlayamıyorsanız istemci kimliklerinden yalnızca 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 işleyiciler, aşağıda gösterildiği gibi satır içi tanımlanan bir işleyici 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, anonim dinleyicileri zayıf referanslar olarak tuttuğu için bu dinleyiciler güvenilir değildir. Bu da, ç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...
}
}