Android Oyununuzdaki Sorunları Giderme

Bu sayfada, Play Games SDK'sı ile Android oyunları geliştirirken karşılaşabileceğiniz sorunları nasıl gidereceğiniz açıklanmaktadır.

Oturum açılamıyor

Oyununuzda oyuncuları oturum açamıyorsanız 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 ayarlandığından emin olmak için aşağıdaki öğeleri kontrol edin.

Meta veri etiketlerinizi kontrol etme

AndroidManifest.xml, oyun meta veri etiketi içermelidir. Meta veri etiketlerinizin doğru şekilde oluşturulduğundan emin olmak için:

  1. AndroidManifest.xml cihazınızı açın ve aşağıda gösterildiği gibi 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 bir XML dosyasında (ör. res/xml/strings.xml veya res/xml/ids.xml) 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 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:

  1. AndroidManifest.xml cihazınızı açıp oyununuzun paket adının doğru olduğunu onaylayın. 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'da paket adını doğrulamak için Google 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 içindeki paket adıyla eşleşen bir Android bağlantılı uygulama olmalıdır.
  3. Uyuşmazlık varsa doğru paket adıyla yeni bir istemci kimliği oluşturun ve tekrar oturum açmayı deneyin.

Sertifika dijital parmak izini kontrol edin

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

  1. Sertifika dosyanızı bulun ve SHA1 dijital parmak izini edinin. 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ış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ı 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 sertifikası dosyası kullanarak özel anahtar oluşturun:

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

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

    keytool -printcert -file META-INF/CERT.DSA
    
  4. SHA1: etiketli satırdaki onaltılık basamak dizisini not edin.

    Bu basamak dizisi, önceki adımda belirtilen 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ış. Bu durumda, doğru şekilde nasıl yapılandırılacağını belirlemek ve tekrar oturum açmayı denemek için derleme ortamınızın dokümanlarına bakın.

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. Google Play Console'u açıp oyununuza gidin.
  2. Game Details (Oyun Ayrıntıları) sayfasını kaydırarak en alta gidin ve bağlı Google Cloud Platform projesinin bağlantısını tıklayın.
  3. Google Cloud Platform'da projenizi seçin.
  4. Soldaki kenar çubuğunda API'ler ve kimlik doğrulama'yı seçin. Google Play Games Hizmetleri API durumunun gösterilen API listesinde AÇIK olduğundan emin olun.
  5. Soldaki kenar çubuğunda 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ımlardaki 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'da değil, Google Play Console'da oluşturmanız gerekir.

Test hesaplarının etkin olup olmadığını kontrol etme

Bir oyun yayınlanmadan önce, Google Play Console'da oyunu oluşturan hesabın test kullanıcısı olarak da etkinleştirilmiş olması gerekir. Bunun doğru şekilde yapılandırılıp yapılandırılmadığını kontrol etmek için:

  1. Google 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 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 karartılmış APK'da hatalarla karşılaşıyorsanız AndroidManifest.xml sayfasındaki hedef API düzeyini 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 (uygulama, oyun ayarlarını yayınlamadan yayınlanabilir). Bunun için Google Play Console'a gidip uygulamanıza gidin ve oyunun adının yanındaki kutunun yayınlandığından emin olun. "Yayınlanmaya Hazır" veya "Teste Hazır" gibi başka bir durumdaysa kutuyu tıklayın ve Oyunu Yayınla'yı seçin.
  • Oyununuzu yayınlayamazsanız istemci kimliklerinden birinde Yeni yüklemeler için bu uygulama tercih edilir seçeneğinin etkinleştirildiğinden emin olun.

Anonim dinleyiciler

Anonim işleyiciler kullanmayın. Anonim dinleyiciler, aşağıda gösterildiği gibi satır içi olarak tanımlanan bir dinleyici arayüzünün uygulaması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ı, bunları zayıf referanslar olarak koruduğundan, istirahatten önce çöp toplayıcısı tarafından geri kazanılabilirler. Bu yüzden anonim dinleyicilere güvenilmez. 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...
        }
    }