Android için Özel Korumalı Alan sorun giderme kılavuzu

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:

  1. 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ı URL https://adtech.example.com/register_source idi
  2. 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:

  1. Cihazınıza veya emülatörünüze Google Hesabınızla giriş yapın.
  2. 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:

  1. 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.
  2. Beta sürümü kullanıyorsanız adb shell getprop | grep build.version.extensions komutunu çalıştırın ve sonuçları biletinize ekleyin.
  3. 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.
  4. Tam hata raporu ekleyin. adb bugreport aracını çalıştırarak veya talimatları uygulayarak tam hata raporuna ulaşabilirsiniz.