En este documento, se describe cómo resolver problemas habituales durante la configuración de Privacy Sandbox en Android. Si ves un error que no se encuentra en esta guía, infórmanos al respecto.
Algunos errores tienen varios motivos posibles para los que se arrojan. A continuación, se indican algunos de los errores más habituales y sus soluciones, pero es posible encontrar el mismo mensaje de error por un motivo diferente.
Antes de solucionar el problema, realiza lo siguiente:
Inhabilita las actualizaciones de configuración del dispositivo
Cuando soluciones cualquier problema que tengas con las pruebas de Privacy Sandbox, el primer paso debe ser inhabilitar las actualizaciones de configuración del dispositivo. De esta manera, se garantiza que tu dispositivo no recupere configuraciones actualizadas del servidor ni inhabilite, de forma inadvertida, Privacy Sandbox en tu dispositivo de prueba.
Inhabilita las actualizaciones de configuración del dispositivo con este comando:
adb shell device_config set_sync_disabled_for_tests persistent
Si quieres volver a habilitar las actualizaciones de configuración del dispositivo después de las pruebas, puedes hacerlo con este comando:
adb shell device_config set_sync_disabled_for_tests none
Habilita el registro detallado de adservices
El registro detallado de adservices proporciona más contexto sobre los errores que ves. Para habilitarlo, usa este comando:
adb shell setprop log.tag.adservices VERBOSE
Asegúrate de que el dispositivo se haya configurado de forma correcta
Si acabas de inhabilitar las actualizaciones de configuración del dispositivo, te recomendamos que vuelvas a realizar estos pasos para asegurarte de que el dispositivo esté configurado de forma correcta y se mantenga así durante la prueba.
- Habilita las PPAPIs con los comandos adb correspondientes.
- Inscribe el dispositivo o desactiva la inscripción según tus objetivos.
Verifica el código para asegurarte de que las PPAPIs estén disponibles
Puedes agregar verificaciones a tu base de código para asegurarte de que tu dispositivo tenga las versiones correctas que necesita para Privacy Sandbox.
Si usas una versión beta a través de extensiones del SDK, comprueba la compilación correcta y la versión de extensión del SDK:
Si usas una versión beta a través de las bibliotecas de Jetpack, la función de inicialización muestra null
si Privacy Sandbox no está disponible en tu dispositivo. Por ejemplo:
Busca cualquier versión en los Servicios de Google Play:
Excepciones de seguridad
Por lo general, los errores de excepción de seguridad surgen cuando no se tiene la autorización necesaria para acceder a un recurso de Privacy Sandbox.
No se solicitó el permiso
Error:
Failed to get Ad ID: java.lang.SecurityException: Caller is not authorized to
call this API. Permission was not requested
.
Posible motivo:
Debes declarar un permiso para acceder al ID de anuncio.
Solución:
Declara el permiso en tu AndroidManifest.xml
:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" />
El llamador no está autorizado
Error:
Failed to find resolveInfo for adServices service. Intent action:
android.adservices.adid.AdIdProviderService
Failed to find AdServices services
Caller not authorized
Posible motivo:
No inscribiste tu dispositivo de forma correcta. Para configurar el dispositivo, asegúrate de haber seguido todas las instrucciones de inscripción, incluidos los pasos posteriores a la inscripción.
Posible motivo:
Las URLs de inscripción no coinciden.
Solución:
- Consulta tus datos de inscripción para comprobar si hay discrepancias entre la URL que usas en tu código y la que registraste en Privacy Sandbox. Por ejemplo, es posible que uses
https://adtech.example.com/source
, pero la URL registrada erahttps://adtech.example.com/register_source
- Ajusta tu código para que coincida con la URL registrada. Por ejemplo, puedes ajustar la línea en la app de ejemplo para agregar "/register_source" a la URL en lugar de "/source".
Si el error persiste, haz lo siguiente:
Es posible que tu empresa no esté en la lista de inscripción o que la empresa esté inscrita, pero no en la lista de entidades permitidas del manifiesto de la app. Asegúrate de que tu organización esté inscrita en Privacy Sandbox. Para ello, comunícate con android-ps-support@google.com.
No se permite el llamador
Error:
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
.
Posible motivo:
El nombre del paquete no está en la lista de entidades permitidas.
Solución:
Permite todos los nombres de paquetes de la lista de entidades permitidas:
Si usas shell de adb directamente, haz lo siguiente:
Los comandos enumerados anteriormente funcionan para Bash y otros shells, pero si inicias el shell de adb directamente y tratas de ejecutar los comandos, se supone que no debes escapar las comillas. En su lugar, ejecuta los comandos de la siguiente manera:
Solución:
Agrega el nombre de tu paquete a la lista de entidades permitidas:
adb shell device_config put adservices ppapi_app_allow_list [package name]
Verifica que el nombre de tu paquete esté en la lista de entidades permitidas:
adb shell device_config get adservices ppapi_app_allow_list
Si es necesario, puedes borrar la lista de entidades permitidas con este comando:
adb shell device_config delete adservices ppapi_app_allow_list
Excepciones de estado ilegales
Las excepciones de estado ilegales indican que se invocó un método en un momento ilegal o inapropiado, en el que el entorno o la aplicación no se encuentran en el estado correcto para la operación solicitada.
Excepciones de estado ilegales: El servicio no está disponible
Error:
com.example.measurement.sampleapp E Failed binding to measurement service:
java.lang.IllegalStateException: Service is not available
Posible motivo:
Se debe inhabilitar el interruptor general.
Solución:
Puedes inhabilitar el interruptor general con el siguiente comando:
adb shell 'device_config put adservices global_kill_switch false'
Posible motivo:
No se otorgó el consentimiento del usuario.
Solución:
Puedes ejecutar lo siguiente:
adb shell am start -n com.google.android.adservices.api/com.android.adservices.ui.settings.activities.AdServicesSettingsMainActivity
Una vez que se haya completado el comando anterior, activa la preferencia "Habilitar Privacy Sandbox".
Errores con comandos adb
No se pudo encontrar el trabajo
Error:
Could not find job 14 in package com.google.android.adservices.api/ user 0
Posible motivo:
No se activaron las APIs de Privacy Sandbox.
Solución: Antes de ejecutar este trabajo, llama a una de las APIs de Privacy Sandbox, como registerSource()
, getTopics()
o selectAds()
. Se espera que esta llamada falle, pero es necesaria para activar la API. Luego, vuelve a ejecutar el comando jobscheduler 14
.
Posible motivo:
Es necesario actualizar Google Play Store.
Solución:
- Accede al dispositivo o emulador con tu Cuenta de Google.
- Luego, ve a Google Play Store > ícono de perfil > Configuración > Acerca de. Debajo del encabezado Versión de Play Store, presiona Actualizar Play Store.
Envía un ticket
Si, con estos pasos, no se resuelve el error, envía un ticket e incluye la siguiente información:
- ¿Qué versión estás usando? ¿Versión preliminar para desarrolladores o beta? ¿Qué versión tienes? Puedes encontrar el código de la versión en Configuración > Acerca del teléfono > Número de compilación.
- Si usas una versión beta, ejecuta
adb shell getprop | grep build.version.extensions
e incluye los resultados en tu ticket. - ¿Qué versión de Servicios de Google Play tiene tu dispositivo? Ejecuta
adb shell dumpsys package com.google.android.gms | grep versionName
e incluye los resultados de ese comando en tu ticket. - Incluye un informe de errores completo. Para obtener un informe de errores completo, ejecuta
adb bugreport
. siguiendo las instrucciones.