Criar perfis de referência

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Como desenvolvedor de apps, você pode gerar perfis automaticamente para cada lançamento usando a biblioteca Macrobenchmark do Jetpack e BaselineProfileRule. É recomendável usar a com.android.tools.build:gradle:7.3.0 ou versões mais recentes, que vem com melhorias de build ao usar perfis de referência.

Para criar perfis de referência usando a biblioteca Macrobenchmark, siga estas etapas:

  1. Configure um módulo da Macrobenchmark no seu projeto do Gradle.

  2. Defina um novo teste com o nome BaselineProfileGenerator parecido com este:

    @OptIn(ExperimentalBaselineProfilesApi::class)
    class TrivialBaselineProfileBenchmark {
        @get:Rule
        val baselineProfileRule = BaselineProfileRule()
    
        @Test
        fun startup() = baselineProfileRule.collectBaselineProfile(
            packageName = "com.example.app",
            profileBlock = {
                startActivityAndWait()
            }
        )
    }
    

    Confira outros exemplos de testes que usam @BaselineProfileRule para melhorar jornadas ideais do usuário.

  3. Para configurar um dispositivo gerenciado pelo Gradle, abra o arquivo build.gradle.kts e, no bloco de configuração testOptions, adicione managedDevices e devices e, em seguida, crie sua definição de um emulador. Use o aosp como systemImageSource, porque você vai precisar de acesso raiz ao gerador de perfis de referência.

    Kotlin

    testOptions {
        managedDevices {
            devices {
                create ("pixel6Api31", ManageVirtualDevice::class) {
                    device = "Pixel 6"
                    apiLevel = "31"
                    systemImageSource = "aosp"
                }
            }
        }
    }
    

    Groovy

    testOptions {
        managedDevices {
            devices {
                pixel6Api31(com.android.build.api.dsl.ManagedVirtualDevice) {
                    device = "Pixel 6"
                    apiLevel = 31
                    systemImageSource = "aosp"
                }
            }
        }
    }
    
  4. O Gradle cria tarefas para você com base no nome do dispositivo selecionado e nas variantes de build disponíveis no módulo. Ele é formatado como [emulator_name][flavor][build type]AndroidTest. É possível executar essa tarefa no terminal, por exemplo:

    ./gradlew :benchmark:pixel2Api31BenchmarkAndroidTest
    

Aplicar as regras geradas

  1. Localize o perfil gerado em [module name]/build/outputs/managed_device_android_test_additional_output/[device name]. Os perfis seguem o padrão de nomenclatura [class name]-[test method name]-baseline-prof.txt, que precisa ser semelhante a: TrivialBaselineProfileBenchmark-startup-baseline-prof.txt

  2. Copie o perfil gerado para a pasta src/main/ do módulo do app, junto com o AndroidManifest.xml. Renomeie o arquivo como baseline-prof.txt.

  3. Adicione uma dependência à biblioteca ProfileInstaller no arquivo build.gradle do seu app para ativar a compilação de perfis de referência locais e da Play Store. Essa é a única maneira de transferir um perfil de referência localmente por sideload.

    dependencies {
         implementation("androidx.profileinstaller:profileinstaller:1.2.0")
    }
    

Outras observações

Ao criar perfis de referência, considere alguns outros detalhes:

  • Os builds de comparação não podem ser ofuscados. Adicione -dontobfuscate ao arquivo de regras do Proguard ao gerar um perfil de referência.

  • Os perfis de referência precisam ter menos de 1,5 MB quando compactados. Você pode verificar o tamanho do seu perfil de referência localizando-o no artefato de saída em assets/dexopt/baseline.prof para um apk ou BUNDLE-METADATA/com.android.tools.build.profiles/baseline.prof para um aab.

  • Regras abrangentes que compilam grande parte do aplicativo podem atrasar a inicialização devido ao aumento do acesso ao disco. Você precisa testar a performance dos perfis de referência.