Guia de solução de problemas do Sandbox de privacidade para Android

Este documento descreve como resolver problemas comuns ao configurar o Sandbox de privacidade no Android. Se você encontrar algum erro que não esteja neste guia, entre em contato.

Alguns erros têm várias razões possíveis para serem gerados. Confira abaixo alguns dos erros mais comuns e as respectivas correções. Ainda assim, é possível encontrar a mesma mensagem de erro por um motivo diferente.

Antes de resolver problemas

Desative as atualizações de configuração do dispositivo

Ao resolver problemas com os testes do Sandbox de privacidade, a primeira etapa é desativar as atualizações de configuração do dispositivo. Isso garante que o dispositivo não busque configurações atualizadas do servidor e desative acidentalmente o Sandbox de privacidade no dispositivo de teste.

Desative as atualizações de configuração do dispositivo com este comando:

adb shell device_config set_sync_disabled_for_tests persistent

Para reativar as atualizações de configuração do dispositivo após o teste, use este comando:

adb shell device_config set_sync_disabled_for_tests none

Ative o registro detalhado de adservices

A geração de registros detalhada de adservices fornece mais contexto sobre os erros que você recebe. Para ativar, use este comando:

adb shell setprop log.tag.adservices VERBOSE

Verifique se o dispositivo foi configurado corretamente

Se você acabou de desativar as atualizações de configuração do dispositivo, recomendamos seguir essas etapas de novo para garantir que o dispositivo esteja configurado corretamente e permaneça dessa forma durante o teste.

  • Ative as PPAPIs com os comandos adb aplicáveis.
  • Registre seu dispositivo ou desative o registro, dependendo dos seus objetivos.

Confira o código para confirmar se as PPAPIs estão disponíveis

Você pode adicionar verificações à sua base de código para garantir que o dispositivo tenha as versões corretas necessárias para o Sandbox de privacidade.

Se você estiver usando uma versão Beta com extensões do SDK, verifique se o build e a versão da extensão do SDK estão corretos:

Se você estiver usando uma versão Beta com as bibliotecas do Jetpack, a função de inicialização vai retornar o valor null quando o Sandbox de privacidade não estiver disponível no dispositivo. Exemplo:

Para qualquer versão, confira os serviços do Google Play:

Exceções de segurança

Os erros de exceção de segurança geralmente ocorrem quando algo não tem autorização para acessar um recurso do Sandbox de privacidade.

A permissão não foi solicitada

Erro:

Failed to get Ad ID: java.lang.SecurityException: Caller is not authorized to call this API. Permission was not requested.

Possível motivo:

É necessário declarar uma permissão para acessar o ID do anúncio.

Correção:

Declare a permissão no AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID" />

Autor da chamada não autorizado

Erro:

Failed to find resolveInfo for adServices service. Intent action: android.adservices.adid.AdIdProviderService

Failed to find AdServices services

Caller not authorized

Possível motivo:

Você não registrou o dispositivo corretamente. Confira se você seguiu todas as instruções de registro (link em inglês), incluindo as etapas pós-registro, para configurar o dispositivo.

Possível motivo:

Os URLs de registro não são iguais.

Correção:

  1. Analise seus dados de registro para descobrir se há discrepâncias entre o URL usado no código e o registrado no Sandbox de privacidade. Por exemplo, talvez você esteja usando https://adtech.example.com/source, mas o URL registrado era https://adtech.example.com/register_source.
  2. Ajuste seu código para que ele corresponda ao URL registrado. Por exemplo, ajuste a linha no app de exemplo (link em inglês) para anexar "/register_source" ao URL em vez de "/source".

Se o erro persistir:

Talvez sua empresa não esteja na lista de registros ou esteja registrada, mas não na lista de permissões do manifesto do app. Entre em contato com android-ps-support@google.com para confirmar se a sua organização está registrada no Sandbox de privacidade.

Autor da chamada não permitido

Erro:

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.

Possível motivo:

O nome do pacote não está na lista de permissões.

Correção:

Permitir todos os nomes de pacote na lista de permissões:

Se você usa o adb shell diretamente:

Os comandos listados funcionam para bash e outros shells, mas se você iniciar o shell do adb diretamente e tentar executar os comandos, não será necessário fazer o escape das aspas. Em vez disso, execute os comandos da seguinte maneira:

Correção:

Adicione o nome do seu pacote à lista de permissões:

adb shell device_config put adservices ppapi_app_allow_list [package name]

Verifique se o nome do pacote está na lista de permissões:

adb shell device_config get adservices ppapi_app_allow_list

Se necessário, exclua a lista de permissões com este comando:

adb shell device_config delete adservices ppapi_app_allow_list

Exceções de estado ilegal

As exceções de estado ilegal indicam que um método foi invocado em um momento ilegal ou inadequado, em que o ambiente ou o aplicativo não está em um estado adequado para a operação solicitada.

Exceções de estado ilegal: serviço indisponível

Erro:

com.example.measurement.sampleapp E Failed binding to measurement service: java.lang.IllegalStateException: Service is not available

Possível motivo:

A chave de desativação precisa estar desativada.

Correção:

É possível desativar a chave com este comando:

adb shell 'device_config put adservices global_kill_switch false'

Possível motivo:

O usuário não deu consentimento.

Correção:

Você pode executar:

adb shell am start -n com.google.android.adservices.api/com.android.adservices.ui.settings.activities.AdServicesSettingsMainActivity

Após a conclusão do comando anterior, mude a preferência Enable Privacy Sandbox (Ativar Sandbox de privacidade) para "On" (Ativado).

Erros com comandos adb

Não foi possível encontrar o job

Erro:

Could not find job 14 in package com.google.android.adservices.api/ user 0

Possível motivo:

As APIs do Sandbox de privacidade não foram acionadas.

Correção: antes de executar esse job, chame uma das APIs do Sandbox de privacidade, como registerSource(), getTopics() ou selectAds(). Espera-se que essa chamada falhe, mas ela é necessária para ativar a API. Em seguida, execute novamente o comando jobscheduler 14.

Possível motivo:

É preciso atualizar a Google Play Store.

Correção:

  1. Faça login no dispositivo ou emulador com sua Conta do Google.
  2. Depois, acesse Google Play Store > ícone de perfil > Configurações > Sobre. No título Versão da Play Store, toque em Atualizar Play Store.

Registrar um tíquete

Se essas etapas não resolverem o erro, registre um tíquete e inclua estas informações:

  1. Qual versão você está usando: prévia para desenvolvedores ou Beta? Qual é a sua? Você pode encontrar o código da versão em Configurações > Sobre o dispositivo > Número da versão.
  2. Se você estiver usando uma versão Beta, execute adb shell getprop | grep build.version.extensions e inclua os resultados no tíquete.
  3. Qual versão do Google Play Services está instalada no seu dispositivo? Execute adb shell dumpsys package com.google.android.gms | grep versionName e inclua os resultados desse comando no tíquete.
  4. Inclua um relatório completo do bug. Gere um relatório completo do bug executando adb bugreport ou seguindo as instruções.