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:
AndroidManifest.xml
cihazınızı 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 (ö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 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
cihazınızı açıp oyununuzun paket adının doğru olduğunu onaylayın. Paket adı,manifest
etiketindekipackage
özelliğinin değeridir.- İ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. - 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:
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
Çı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:
- 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 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
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:
- Google Play Console'u açıp oyununuza gidin.
- 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.
- Google Cloud Platform'da projenizi seçin.
- 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.
- 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 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:
- Google 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 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...
}
}