Este documento explica a diferença entre perfis de linha de base e perfis de inicialização.
Você pode usar o plug-in do Gradle do perfil de referência para capturar automaticamente os
arquivos de perfil de referência legíveis por humanos gerados pelos testes
BaselineProfileRule. Ao criar o app, o Plug-in do Android para Gradle (AGP) compila essas regras de perfil legíveis por humanos em um formato binário, empacotado como baseline.prof no pacote de aplicativo Android (APK) ou no Android App Bundle (AAB), que o Android Runtime (ART) pode usar de maneira eficaz para a compilação no dispositivo, desde que o perfil binário seja menor que 1,5 MB.
Os arquivos de perfil produzidos geralmente são chamados de startup-prof.txt e
baseline-prof.txt.
perfil de referência
O arquivo de perfil de referência contém um conjunto abrangente de regras que o ART usa para pré-compilar caminhos de código usados com frequência, o que otimiza a inicialização do app, reduz a instabilidade de interação e melhora a performance geral do ambiente de execução.
O arquivo de perfil de referência geralmente é um superconjunto das regras encontradas no seu
perfil de inicialização. Esse arquivo inclui todas as regras necessárias para a otimização da inicialização do app (geradas pela tarefa baselineProfile do Gradle), além de perfis adicionais para outras jornadas críticas do usuário. Por exemplo, rolar
e navegar por diferentes telas.
Essas regras não relacionadas à inicialização são geradas independente do valor do campo de configuração includeInStartupProfile. Para mais informações, consulte
Visão geral dos perfis de referência.
Perfil de startup
O arquivo de perfil de inicialização contém regras otimizadas especificamente para o caminho de
inicialização do app. Durante a compilação, o D8 e o R8 consomem bytecode Java para produzir arquivos executáveis Dalvik (DEX). O D8 e o R8 usam perfis de inicialização para
otimizar o layout DEX, colocando o código de inicialização crítico no arquivo .dex principal
para um carregamento de classe mais rápido. Para alcançar os ganhos de performance mais significativos, o
código de inicialização precisa estar contido no arquivo .dex principal. Se o tamanho cumulativo do código de inicialização for muito grande, ele vai transbordar para arquivos DEX subsequentes, que geralmente são preenchidos com classes e métodos não essenciais, o que diminui a velocidade de inicialização.
Embora um perfil de inicialização forneça os metadados necessários para a otimização do layout DEX, a otimização de código R8 pode ser muito eficaz para ajudar nesse processo. Ao remover código não utilizado e reduzir o bytecode, o R8 reduz a
pegada total da lógica de inicialização. Essa redução aumenta a probabilidade de o código crítico permanecer no arquivo .dex principal, evitando estouros e garantindo uma execução mais eficiente em uma variedade maior de versões do Android.
Em geral, defina includeInStartupProfile como true apenas para cenários de teste
essenciais para a exibição inicial do app.
Para mais informações, consulte Visão geral dos perfis de inicialização.