Os perfis de inicialização são um subconjunto dos perfis de referência. Os perfis de inicialização são usados pelo sistema de build para otimizar ainda mais as classes e os métodos que elas contêm melhorando o layout do código nos arquivos DEX do APK. Com os perfis de inicialização, a inicialização do app geralmente é de 15% a 30% mais rápida do que com os perfis de referência.

Requisitos
Recomendamos o uso dos perfis de inicialização com as seguintes ferramentas:
- Jetpack Macrobenchmark 1.2.0 ou mais recente
- Plug-in do Android para Gradle 8.2 ou mais recente
- Android Studio Iguana ou mais recente
Além disso, você precisa ter as seguintes configurações no app:
- R8 ativado. Para o build de lançamento, defina
isMinifyEnabled = true
. - Otimizações de layout DEX ativadas. No bloco
baselineProfile {}
do arquivo de build do módulo do app, definadexLayoutOptimization = true
.
Criar um perfil de inicialização
O Android Studio cria um perfil de inicialização com um perfil de referência quando você usa o modelo padrão do gerador de perfil de referência.
As etapas gerais para criar e gerar um perfil de inicialização são as mesmas para criar um perfil de referência.
A maneira padrão de criar um perfil de inicialização é usando o modelo de módulo do gerador de perfil
de referência no Android Studio. Isso inclui interações
de inicialização que formam um perfil de inicialização básico. Para aumentar esse perfil de inicialização
com mais jornadas ideais do usuário (CUJs), adicione as CUJs de inicialização do app a um bloco rule
com includeInStartupProfile
definido como true
. Para apps simples, iniciar
a MainActivity
do app pode ser suficiente. Para apps mais complexos, considere
adicionar os pontos de entrada mais comuns, como iniciar o app na
tela inicial ou abrir um link direto.
O snippet de código a seguir mostra um gerador de perfil de referência (por padrão, o
arquivo BaselineProfileGenerator.kt
) que inclui a inicialização do app na
tela inicial e o lançamento em um link direto. O link direto vai diretamente para o
feed de notícias do app, não para a tela inicial.
@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {
@get:Rule
val rule = BaselineProfileRule()
@Test
fun generate() {
rule.collect(
packageName = "com.example.app",
includeInStartupProfile = true
) {
// Launch directly into the NEWS_FEED.
startActivityAndWait(Intent().apply {
setPackage(packageName)
setAction("com.example.app.NEWS_FEED")
})
}
}
}
Execute a configuração Generate Baseline Profile for app e encontre as
regras do perfil de inicialização em
src/<variant>/generated/baselineProfiles/startup-prof.txt
.
Considerações para criar perfis de inicialização
A saída das classes e métodos de um perfil de startup é limitada pelo tamanho do primeiro arquivo classes.dex. Isso significa que nem todas as jornadas de perfil de referência também precisam ser de perfil de inicialização.
Para decidir quais jornadas do usuário cobrir ao criar um perfil de inicialização, considere onde a maioria dos usuários inicia o aplicativo. Geralmente, isso é feito pelo iniciador e depois que o usuário faz login. Essa também é a jornada de perfil de referência mais básica.
Depois que o primeiro caso de uso for abordado, siga o funil de usuários para a inicialização do app. Em muitos casos, os funis de inicialização de apps seguem esta lista:
- Atividade principal da tela de início
- Notificações que acionam a inicialização do app
- Atividades opcionais da tela de início
Processe a lista de cima para baixo e pare antes que classes.dex esteja cheio. Para cobrir mais jornadas depois, remova o código do caminho de inicialização e adicione mais jornadas. Para mover o código do caminho de inicialização, inspecione os rastros do Perfetto durante a inicialização do app e procure operações de execução longa. Você também pode usar um macrobenchmark com o rastreamento de método ativado para uma visualização completa e automatizável de chamadas de método durante a inicialização do app.
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Criar perfis de referência {:#creating-profile-rules}
- Perfis de referência {:#baseline-profiles}
- Como criar uma comparação da Microbenchmark