Bu belgede, Android'de Özel Korumalı Alan kurulumu sırasında sık karşılaşılan sorunların nasıl çözüleceği açıklanmaktadır. Bu kılavuzda bulunmayan bir hata görürseniz bize bildirin.
Bazı hataların, iptal edilmelerine yol açabilecek birden çok olası nedeni vardır. Aşağıda, daha sık karşılaşılan hatalardan bazıları ve bunların düzeltmeleri verilmiştir ancak aynı hata mesajıyla farklı bir nedenle de karşılaşılabilir.
Sorun giderme işleminden önce
Cihaz yapılandırma güncellemelerini devre dışı bırak
Özel Korumalı Alan testinde yaşadığınız sorunları giderirken ilk adım olarak cihaz yapılandırma güncellemelerini devre dışı bırakmanız gerekir. Bu, cihazınızın güncellenmiş yapılandırmaları sunucudan getirmemesini ve test cihazınızda Özel Korumalı Alan'ı yanlışlıkla devre dışı bırakmasını sağlar.
Cihaz yapılandırma güncellemelerini şu komutla devre dışı bırakın:
adb shell device_config set_sync_disabled_for_tests persistent
Test sonrasında cihaz yapılandırma güncellemelerini yeniden etkinleştirmek isterseniz bu komutu şu komutla yapabilirsiniz:
adb shell device_config set_sync_disabled_for_tests none
Reklam hizmetleri ayrıntılı günlük kaydını etkinleştir
Reklam hizmetlerinden ayrıntılı günlük kaydı, gördüğünüz hatalarla ilgili daha fazla bağlam sağlar. Etkinleştirmek için şu komutu kullanın:
adb shell setprop log.tag.adservices VERBOSE
Cihazınızın doğru yapılandırıldığından emin olun
Cihaz yapılandırma güncellemelerini kısa süre önce devre dışı bıraktıysanız cihazınızın doğru şekilde yapılandırıldığından ve testiniz boyunca bu şekilde kaldığından emin olmak için bu adımları tekrar uygulamanızı öneririz.
- PPAPI'leri geçerli adb komutlarıyla etkinleştirin.
- Cihazınızı kaydettirin veya hedeflerinize bağlı olarak kaydı devre dışı bırakın.
PPAPI'lerin kullanılabilir olduğundan emin olmak için kodu kontrol edin
Cihazınızın Özel Korumalı Alan için gereken doğru sürümlere sahip olduğundan emin olmak amacıyla kod tabanınıza denetimler ekleyebilirsiniz.
SDK uzantıları üzerinden bir Beta sürümü kullanıyorsanız doğru derleme ve SDK uzantısı sürümü olup olmadığını kontrol edin:
Jetpack Kitaplıkları üzerinden bir Beta sürümü kullanıyorsanız Özel Korumalı Alan, cihazınızda kullanılamıyorsa başlatma işlevi null
değerini döndürür. Örneğin:
Herhangi bir sürüm için Google Play Hizmetleri'ni kontrol edin:
Güvenlik istisnaları
Güvenlik istisnası hataları genellikle bir Özel Korumalı Alan kaynağına erişim yetkisi olmadığında ortaya çıkar.
İzin istenmedi
Hata:
Failed to get Ad ID: java.lang.SecurityException: Caller is not authorized to
call this API. Permission was not requested
.
Olası Neden:
Reklam kimliğine erişmek için bir izin beyan etmeniz gerekir.
Çözüm:
AndroidManifest.xml
sayfanızda izni beyan edin:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" />
Arayan yetkisi yok
Hata:
Failed to find resolveInfo for adServices service. Intent action:
android.adservices.adid.AdIdProviderService
Failed to find AdServices services
Caller not authorized
Olası Neden:
Cihazınızı doğru kaydetmediniz. Cihazınızı yapılandırmak için kayıt sonrası adımlar da dahil olmak üzere tüm kayıt talimatlarını uyguladığınızdan emin olun.
Olası Neden:
Kayıt URL'leri eşleşmiyor.
Çözüm:
- Kodunuzda kullandığınız URL ile Özel Korumalı Alan'a kaydettiğiniz URL arasında tutarsızlıklar olup olmadığını görmek için kayıt verilerinize bakın. Örneğin,
https://adtech.example.com/source
kullanıyor olabilirsiniz ancak kayıtlı URLhttps://adtech.example.com/register_source
idi - Kodunuzu, kayıtlı URL ile eşleşecek şekilde ayarlayın. Örneğin, örnek uygulamadaki satırı, URL'ye "/source" yerine "/register_source" ifadesini ekleyecek şekilde ayarlayabilirsiniz.
Bu hatayı görmeye devam ediyorsanız:
Şirketiniz kayıt listesinde olmayabilir veya şirket kayıtlı olup uygulamanın manifest izin verilenler listesinde yer almayabilir. android-ps-support@google.com adresiyle iletişime geçerek kuruluşunuzun Özel Korumalı Alan'a kaydolduğundan emin olun.
Arayana izin verilmiyor
Hata:
Failed to get Ad ID: java.lang.SecurityException: Caller is not authorized to
call this API. Caller is not allowed. Package [package name] is not allowed to
call the API
.
Olası Neden:
Paket adı izin verilenler listesinde değil.
Çözüm:
İzin verilenler listesindeki tüm paket adlarına izin ver:
Doğrudan adb kabuğu kullanıyorsanız:
Daha önce listelenen komutlar bash ve diğer kabuklar için çalışır ancak adb kabuğunu doğrudan başlatıp komutları çalıştırmayı denerseniz tırnak işaretlerinden çıkış yapmanız gerekmez. Bunun yerine, aşağıdaki gibi komutları çalıştırın:
Çözüm:
Paket adınızı izin verilenler listesine ekleyin:
adb shell device_config put adservices ppapi_app_allow_list [package name]
Paket adınızın izin verilenler listesinde olduğunu doğrulayın:
adb shell device_config get adservices ppapi_app_allow_list
Gerekirse şu komutla izin verilenler listesini silebilirsiniz:
adb shell device_config delete adservices ppapi_app_allow_list
Yasa dışı durum istisnaları
Yasa dışı durum istisnaları, bir yöntemin yasa dışı veya uygun olmayan bir zamanda çağrıldığını gösterir. Ortam ya da uygulama, istenen işlem için uygun durumda değildir.
Yasa dışı durum istisnaları: Hizmet kullanılamıyor
Hata:
com.example.measurement.sampleapp E Failed binding to measurement service:
java.lang.IllegalStateException: Service is not available
Olası Neden:
Sonlandırma anahtarı devre dışı bırakılmalıdır.
Çözüm:
Sonlandırma anahtarını şu komutla devre dışı bırakabilirsiniz:
adb shell 'device_config put adservices global_kill_switch false'
Olası Neden:
Kullanıcı izni verilmedi.
Çözüm:
Şunları çalıştırabilirsiniz:
adb shell am start -n com.google.android.adservices.api/com.android.adservices.ui.settings.activities.AdServicesSettingsMainActivity
Önceki komut tamamlandıktan sonra "Özel Korumalı Alan'ı Etkinleştir" tercihini "Açık" konumuna getirin.
Adb komutlarıyla ilgili hatalar
İş bulunamadı
Hata:
Could not find job 14 in package com.google.android.adservices.api/ user 0
Olası Neden:
Özel Korumalı Alan API'leri tetiklenmemiştir.
Çözüm: Bu işi çalıştırmadan önce registerSource()
, getTopics()
veya selectAds()
gibi Özel Korumalı Alan API'lerinden birini çağırın. Bu çağrının başarısız olması beklenmektedir, ancak API'yi etkinleştirmek için gereklidir. Ardından jobscheduler 14
komutunu tekrar çalıştırın.
Olası Neden:
Google Play Store'un güncellenmesi gerekiyor.
Çözüm:
- Cihazınıza veya emülatörünüze Google Hesabınızla giriş yapın.
- Google Play Store > profil simgesi > Ayarlar > Hakkında'ya gidin. Play Store sürümü başlığının altında Play Store'u güncelle'ye dokunun.
Kayıt oluştur
Bu adımlar hatanızı çözmezse bir destek kaydı oluşturun ve aşağıdaki bilgileri ekleyin:
- Geliştirici Önizlemesi mi yoksa Beta sürümü mü? Hangi sürümü kullanıyorsunuz? Sürüm kodunuzu Ayarlar > Telefon Hakkında > Derleme Numarası bölümünde bulabilirsiniz.
- Beta sürümü kullanıyorsanız
adb shell getprop | grep build.version.extensions
komutunu çalıştırın ve sonuçları biletinize ekleyin. - Cihazınızda Google Play Hizmetleri'nin sürümü nedir?
adb shell dumpsys package com.google.android.gms | grep versionName
komutunu çalıştırın ve ilgili komutun sonuçlarını biletinize ekleyin. - Tam hata raporu ekleyin.
adb bugreport
aracını çalıştırarak veya talimatları uygulayarak tam hata raporuna ulaşabilirsiniz.