Criar perfis de inicialização

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 eles contêm, melhorando o layout do código nos arquivos DEX do APK. Com os perfis de inicialização, a inicialização do app é pelo menos 15% mais rápida do que usando apenas os perfis de referência.

Figura 1. Melhoria da localidade de código da otimização do layout DEX.

Requisitos

Recomendamos o uso de Perfis de inicialização com as seguintes ferramentas:

  • Macrobenchmark do Jetpack 1.2.0 ou mais recente.
  • Plug-in do Android para Gradle 8.2 ou mais recente
  • Android Studio Iguana ou versão mais recente

Além disso, você precisa das seguintes configurações:

  • R8 ativado. Para o build de lançamento, defina isMinifyEnabled = true.
  • Otimizações de layout DEX ativadas. No bloco baselineProfiles {} do arquivo de build do módulo de teste, defina dexLayoutOptimization = true.

Criar um perfil de startup

O Android Studio cria um perfil de inicialização junto a 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 básico. Para aumentar esse perfil de inicialização com jornadas ideais do usuário (CUJs), adicione as CUJs de inicialização do seu app a um bloco rule com includeInStartupProfile definido como true. Para apps simples, iniciar o MainActivity do app pode ser suficiente. Para apps mais complexos, considere adicionar os pontos de entrada mais comuns, como iniciar o app pela tela inicial ou usar um link direto.

O snippet de código abaixo mostra um gerador de perfis de referência (por padrão, o arquivo BaselineProfileGenerator.kt) que inclui iniciar o app na tela inicial e usar um link direto. O link direto vai diretamente para o feed de notícias do app, não para a tela inicial dele.

@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.