Android oyunlarda Play Oyun Hizmetleri ile ilgili sorunları giderme

Bu sayfada, Google Play Oyun Hizmetleri ile Android oyunları geliştirirken karşılaşabileceğiniz sorunları nasıl gidereceğiniz 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ı açabilirsiniz. Daha sonra, logcat'i kullanarak Google Play Oyun 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:

  1. Cihazı Android SDK'nın yüklü olduğu bir makineye bağlayın.

  2. Bir terminal penceresi açın ve şu komutu çalıştırın:

    adb shell setprop log.tag.Games VERBOSE
  3. Oyununuzu cihazda çalıştırın ve hata ayıklamaya çalıştığınız sorunu yeniden oluşturun.

  4. Günlükleri görüntüleyin:

    adb logcat

Günlük kaydını devre dışı bırak

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çılamıyor

Oyuncuların oyununuzda oturumlarını açamıyorsanız önce 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 ayarlandığından emin olmak için aşağıdaki öğeleri kontrol edin.

Meta veri etiketlerinizi kontrol edin

AndroidManifest.xml bir oyun meta veri etiketi içermelidir. Meta veri etiketlerinizin doğru şekilde ayarlandığını doğrulamak için:

  1. AndroidManifest.xml öğenizi açın ve aşağıda gösterildiği gibi bir meta-data etiketi içerdiğini doğrulayın:

    <meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="@string/app_id" />
    
  2. @string/app_id kaynağınızın tanımını bulun. Genellikle res/xml dizininde bulunan res/xml/strings.xml veya res/xml/ids.xml gibi bir XML dosyasında tanımlanır.

  3. @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. Ö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:

  1. AndroidManifest.xml cihazınızı açın ve oyununuzun paket adının doğru olduğundan emin olun. Paket adı, manifest etiketindeki package özelliğinin değeridir.

  2. İstemci kimliğinizi oluştururken sağladığınız paket adını doğrulayın. Google Play Console'daki paket adını doğrulamak için Play Console'a gidin ve oyununuza karşılık gelen girişi tıklayın.

  3. Bağlı Uygulamalar sekmesine gidin ve istemci kimliklerinin listesini inceleyin. Bu listede, paket adı AndroidManifest.xml içindeki paket adıyla eşleşen Android bağlantılı bir uygulama olmalıdır. 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 edin

Oyununuzu imzaladığınız sertifika, istemci kimliğinizle ilişkilendirilmiş sertifika parmak iziyle eşleşmelidir. Bunu doğrulamak için önce sertifikanızın SHA1 parmak izini aşağıdaki şekilde kontrol edin:

  1. 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
    
  2. Çıkıştaki SHA1: olarak etiketlenen on altılı 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:

  1. 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.
  2. 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
    
  3. RSA sertifika dosyası kullanarak özel anahtar oluşturma:

    keytool -printcert -file META-INF/CERT.RSA
    

    Alternatif olarak, özel anahtarı bir DSA sertifika dosyası kullanarak da oluşturabilirsiniz:

    keytool -printcert -file META-INF/CERT.DSA
    
  4. SHA1: etiketli satırdaki on altılı basamak dizisine dikkat edin.

    Bu rakam dizisi, önceki adımda bulunan sertifika parmak izinizle eşleşmelidir. Uyuşmazlık varsa derleme aracınız veya sisteminiz, uygulamanızı sertifikanızla imzalayacak şekilde yapılandırılmamıştır. Bu durumda, doğru şekilde nasıl 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. Bunun için:

  1. Play Console'u açıp oyununuza gidin.
  2. Oyun Ayrıntıları sayfasında alta ilerleyip bağlı Google Cloud Platform projesinin bağlantısını tıklayın.
  3. Projenizi seçin.
  4. Soldaki kenar çubuğundan API'ler ve yetkilendirme'yi seçin. Görüntülenen API listesinde Google Play Games hizmetleri API durumunun AÇIK olduğundan emin olun.
  5. Soldaki kenar çubuğundan Kayıtlı uygulamalar'ı seçin.
  6. OAuth 2.0 İstemci Kimliği bölümünü genişletin ve sertifika parmak izini (SHA1) not edin.

Bu parmak izi, sertifikanızın önceki adımlarda kullanılan parmak izinle 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 da test kullanıcısı olarak etkinleştirilmesi gerekir. Bunun doğru şekilde yapılandırılıp yapılandırılmadığını kontrol etmek için:

  1. Play Console'u açıp oyununuza gidin.
  2. Test sekmesini açın.
  3. Oturum açmaya çalıştığınız hesabın test kullanıcıları listesinde bulunduğundan emin olun.

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 kod karartma uygulanmış APK'da hata görüyorsanız AndroidManifest.xml cihazınızda hedef API düzeyini kontrol edin. 17 veya sonraki bir değere ayarladığınızdan emin olun.

Kurulum sorunlarının diğer nedenleri

Hataların sık karşılaşılan diğer nedenlerini kontrol edin:

  • Oyununuz yayınlandıysa oyun ayarlarının da yayınlandığından emin olun (uygulama, oyun ayarlarını yayınlamadan da yayınlanabilir). Bunu yapmak için Google Play Console'a gidip uygulamanıza gidin ve oyunun adının yanındaki kutudan oyunun yayınlandığını belirten kutuyu işaretleyin. Oyunun "Yayınlanmaya Hazır" veya "Teste Hazır" gibi başka bir durumda olduğunu belirtirse kutuyu tıklayın ve Oyunu Yayınla'yı seçin.
  • Oyununuzu yayınlayamıyorsanız istemci kimliklerinden tam olarak birinin Bu uygulama yeni yüklemeler için tercih edilir seçeneğinin etkin olup olmadığını kontrol edin.

Anonim dinleyiciler

Anonim işleyiciler kullanmayın. Anonim dinleyiciler, aşağıda gösterildiği gibi satır içinde tanımlanan dinleyici arayüzü uygulamalarıdır.

    ImageManager im = ...;

    // Anonymous listener -- dangerous:
    im.loadImage(new ImageManager.OnImageLoadedListener() {
        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }

Anonim dinleyiciler güvenilir değildir çünkü Play Games SDK'sı bunları zayıf referanslar olarak tutar. Bu da, çöp toplayıcı tarafından çağrılmadan önce geri çekilebilecekleri anlamına gelir. Bunun yerine, işleyiciyi 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...
        }
    }