Atender ao requisito de segmentação de nível de API do Google Play

O APK enviado por upload precisa atender aos requisitos de nível de API do Google Play. Novos apps e atualizações (exceto Wear OS) precisam segmentar o Android 10 (nível 29 da API) ou posterior.

A partir de agosto de 2021, os novos apps precisarão:

A partir de novembro de 2021, as atualizações de apps precisarão segmentar o nível 30 da API ou posterior e ajustar as mudanças comportamentais no Android 11. Os apps atuais que não receberem atualizações não serão afetados e continuarão disponíveis na Play Store.

A mudança para o envio do Android App Bundle também afetará as experiências instantâneas que usam o formato ZIP legado de app instantâneos. A partir de agosto de 2021, será necessário publicar pacotes de apps instantâneos para novas experiências instantâneas e atualizações nas existentes.

Por que segmentar SDKs mais recentes?

Cada nova versão do Android inclui mudanças que trazem melhorias significativas de segurança e desempenho e aprimoram a experiência do usuário no Android em geral. Algumas dessas mudanças se aplicam somente a apps que declaram o suporte explicitamente pelo atributo de manifesto targetSdkVersion, também conhecido como o nível desejado da API.

Configurar o app para segmentar um nível de API recente garante que os usuários se beneficiem dessas melhorias. Ao mesmo tempo, o app poderá ser executado em versões mais antigas do Android. Segmentar um nível de API recente também permite que o app aproveite os últimos recursos da plataforma para conquistar seus usuários. Além disso, a partir do Android 10 (nível 29 da API), os usuários verão um aviso ao iniciarem um app pela primeira vez se o app segmentar o Android 5.1 (nível 22 da API) ou versões anteriores.

Este documento destaca pontos importantes que você precisa saber ao atualizar o nível desejado da API para atender ao requisito do Google Play.

Observação: se o arquivo Gradle contiver entradas de manifesto, será possível confirmar ou mudar o valor atual de targetSdkVersion no arquivo Gradle do app, conforme descrito em Configurar a versão. Como alternativa, é possível usar o atributo android:targetSdkVersion no arquivo de manifesto, conforme descrito na documentação do elemento de manifesto <uses-sdk>.

Migrar do Android 10 (nível 29 da API) para o Android 11 (nível 30 da API)

Para as alterações introduzidas no Android 11 (nível 30 da API), consulte a página Mudanças de comportamento.

Migrar de versões anteriores para o Android 10 (nível 29 da API)

Selecione a versão do Android que será migrada:

Migrar para o Android 5 (nível 21 da API)

Consulte cada uma das seguintes versões na página "Mudanças de comportamento" para garantir que o app registrou as alterações apresentadas nelas:

Continue seguindo as instruções na próxima seção.

Migrar para o Android 6 (nível 23 da API)

As seguintes considerações se aplicam a apps que segmentam o Android 6.0 e versões mais recentes da plataforma:

  • Permissões de tempo de execução

    • Permissões perigosas são concedidas somente em tempo de execução. Os fluxos de interface do usuário precisam fornecer recursos para conceder essas permissões.

    • Sempre que possível, o app precisa estar preparado para lidar com a rejeição de solicitações de permissão. Por exemplo, se um usuário recusar uma solicitação para acessar o GPS do dispositivo, o app precisará ter outra maneira de prosseguir.

Para ver uma lista completa das alterações introduzidas no Android 6.0 (nível 23 da API), consulte a página Mudanças de comportamento dessa versão da plataforma.

Continue seguindo as instruções na próxima seção.

Migrar para o Android 7 (nível 24 da API)

As seguintes considerações se aplicam a apps que segmentam o Android 7.0 e versões mais recentes da plataforma:

  • Soneca e App em espera

    Projete os comportamentos descritos no artigo sobre como otimizar para o "Soneca" e "App em espera", que engloba outras mudanças introduzidas em várias versões de plataforma.

    Quando um dispositivo está nos modos Soneca e App em espera, o sistema se comporta da seguinte maneira:

    • Restringe o acesso à rede.
    • Adia alarmes, sincronizações e trabalhos.
    • Restringe as verificações de GPS e Wi-Fi.
    • Restringe mensagens do Firebase Cloud Messaging de prioridade normal.
  • Alterações de permissão

    • O sistema restringe o acesso aos diretórios privados do app.
    • A exposição de um URI file:// fora do app aciona uma FileUriExposedException. Caso você precise compartilhar arquivos fora do app, implemente o FileProvider.
  • O sistema proíbe a vinculação a bibliotecas não NDK.

Para ver uma lista completa das alterações introduzidas no Android 7.0 (nível 24 da API), consulte a página Mudanças de comportamento dessa versão da plataforma.

Continue seguindo as instruções na próxima seção.

Migrar para o Android 8 (nível 26 da API)

As seguintes considerações se aplicam a apps que segmentam o Android 8.0 e versões mais recentes da plataforma:

Para ver uma lista completa das alterações introduzidas no Android 8.0 (nível 26 da API), consulte a página Mudanças de comportamento dessa versão da plataforma.

Migrar do Android 8 (nível 26 da API) para o Android 9 (nível 28 da API)

Para ver uma lista completa de alterações introduzidas no Android 9.0 (nível 28 da API), consulte as Mudanças de comportamento.

Migrar do Android 9 (nível 28 da API) para o Android 10 (nível 29 da API)

Atualize para o nível 30 da API pelas instruções da seção anterior.

Modernizar os apps

Ao atualizar o nível desejado da API para os apps, considere adotar recursos recentes da plataforma para modernizá-los e conquistar os usuários.

  • Use o CameraX, que está em Beta, para aproveitar ao máximo o uso da câmera.
  • Use os componentes do Jetpack para seguir as práticas recomendadas, eliminar a escrita de código de texto clichê e simplificar tarefas complexas para que você possa se concentrar no código de seu interesse.
  • Use o Kotlin para escrever apps melhores, mais rapidamente e com menos código.
  • Verifique se você está seguindo os requisitos e as práticas recomendadas de privacidade.
  • Adicione compatibilidade com tema escuro aos seus apps.
  • Adicione compatibilidade com a navegação por gestos aos seus apps.
  • Migre o app do Google Cloud Messaging (GCM) para a versão mais recente do Firebase Cloud Messaging.
  • Aproveite o gerenciamento avançado de janelas.

Verificar e atualizar SDKs e bibliotecas

Verifique se as dependências de terceiros do SDK oferecem suporte à API 29: alguns provedores de SDK as publicam no manifesto; outros exigirão uma investigação maior. Se você usa um SDK incompatível com a API 29, defina como prioridade o trabalho com o provedor do SDK para resolver o problema.

Além disso, observe que o targetSdkVersion do app ou jogo pode restringir o acesso a bibliotecas privadas da plataforma Android. Consulte Vinculação de apps NDK às bibliotecas de plataforma para saber mais.

Também é necessário verificar quaisquer restrições que possam existir na versão da Biblioteca de Suporte do Android que você está usando. Como sempre, é preciso garantir a compatibilidade entre a versão principal da Biblioteca de Suporte do Android e o compileSdkVersion do app.

É recomendável escolher um targetSdkVersion menor ou igual à versão principal da Biblioteca de Suporte. Sugerimos a atualização para uma biblioteca de suporte compatível mais recente, a fim de aproveitar os recursos de compatibilidade e correções de bugs mais novos.

Testar seu app

Após atualizar o nível e os recursos da API do app, conforme apropriado, teste alguns casos de uso principais. As sugestões a seguir não são completas, mas visam orientar o processo de teste. Sugerimos testar nos seguintes casos:

  • Se o app compila para a API 29 sem erros nem avisos.
  • Se o app tem uma estratégia para os casos em que o usuário rejeita solicitações de permissão e solicita ao usuário autorizações. Para fazer isso:
    • Vá para a tela Informações do app e desative cada permissão.
    • Abra o app e garanta que não haja falhas.
    • Execute os principais testes de caso de uso e garanta que as permissões necessárias sejam solicitadas novamente.

  • Se lida com a Soneca com os resultados esperados e sem erros.
  • Usando o adb, coloque seu dispositivo de teste em Soneca enquanto o app estiver em execução.
  • Teste todos os casos de uso que acionam mensagens do Firebase Cloud Messaging.
  • Teste todos os casos de uso que usam alarmes ou tarefas.
  • Elimine todas as dependências nos serviços de segundo plano.
  • Coloque o app no modo "App em espera".
    • Teste todos os casos de uso que acionam mensagens do Firebase Cloud Messaging.
    • Teste todos os casos de uso que usam alarmes.
  • Se lida com novas fotos / vídeos sendo feitos, faça o seguinte:
  • Se lida com o compartilhamento de arquivos com outros apps:
    • Teste qualquer caso de uso que compartilhe dados de arquivos com qualquer outro app (até do mesmo desenvolvedor).
    • Verifique se o conteúdo é visível no outro app e não aciona falhas.
  • Mais informações

    Ative os e-mails no Google Play Console para que possamos enviar atualizações e comunicados importantes do Android e do Google Play, incluindo nossa newsletter de parceiros.