Guía de solución de problemas de Privacy Sandbox para Android

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:

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

  1. Accede al dispositivo o emulador con tu Cuenta de Google.
  2. 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:

  1. ¿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.
  2. Si usas una versión beta, ejecuta adb shell getprop | grep build.version.extensions e incluye los resultados en tu ticket.
  3. ¿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.
  4. Incluye un informe de errores completo. Para obtener un informe de errores completo, ejecuta adb bugreport o sigue las instrucciones.