ProfileInstaller
Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
2 de outubro de 2024 | 1.4.1 | - | - | - |
Declarar dependências
Para adicionar uma dependência ao ProfileInstaller, adicione o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.
Adicione as dependências dos artefatos necessários ao arquivo build.gradle
do
seu app ou módulo:
Groovy
dependencies { implementation "androidx.profileinstaller:profileinstaller:1.3.1" }
Kotlin
dependencies { implementation("androidx.profileinstaller:profileinstaller:1.3.1") }
Para mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.4
Versão 1.4.1
2 de outubro de 2024
Lançamento de androidx.profileinstaller:profileinstaller:1.4.1
. A versão 1.4.1 contém estas confirmações.
Correções de bugs
- Correção do suporte à gravação de perfis de referência de vários processos sinalizando vários processos sequencialmente. Essa correção exige a atualização para
androidx.benchmark:benchmark-macro:1.4.0-alpha02
no módulo de perfil de referência/Macrobenchmark eandroidx.profileinstaller:profileinstaller:1.4.1
no app (I0f519, b/366231469).
Versão 1.4.0
18 de setembro de 2024
Lançamento de androidx.profileinstaller:profileinstaller:1.4.0
. A versão 1.4.0 contém estas confirmações.
Mudanças importantes desde a versão 1.3.0
- O
ProfileInstaller
agora oferece suporte à captura/instalação de perfis na API 35 e mais recentes. As atualizações doProfileInstaller
não são mais necessárias para atualizações da versão da plataforma. (6f9f6fa). - Correção de falha ao soltar shaders no Android U (API 34) e em emuladores. (I031ca, b/274314544).
- Correção da transcodificação de flag de método no formato de perfil
V_015S
. (aosp/2906631, aosp/2847740).
Versão 1.4.0-rc01
4 de setembro de 2024
androidx.profileinstaller:profileinstaller:1.4.0-rc01
é lançado sem mudanças desde a última versão Beta. A versão 1.4.0-rc01 contém estas confirmações.
Versão 1.4.0-beta01
21 de agosto de 2024
Lançamento de androidx.profileinstaller:profileinstaller:1.4.0-beta01
sem mudanças desde a última versão Alfa. A versão 1.4.0-beta01 contém estas confirmações.
Versão 1.4.0-alpha02
7 de agosto de 2024
Lançamento de androidx.profileinstaller:profileinstaller:1.4.0-alpha02
. A versão 1.4.0-alpha02 contém estas confirmações.
Novos recursos
- Foi adicionado suporte à API 35 ao ProfileInstaller. (6f9f6fa).
Correções de bugs
- Remoção da descrição manual do acesso às novas APIs da plataforma, já que isso acontece automaticamente pela modelagem de API ao usar o R8 com o AGP 7.3 ou mais recente (por exemplo, o R8 versão 3.3) e para todos os builds ao usar o AGP 8.1 ou mais recente (por exemplo, o D8 versão 8.1). Os clientes que não estão usando o AGP precisam fazer upgrade para a versão 8.1 ou mais recente do D8. Veja mais detalhes neste artigo. (If6b4c, b/345472586).
Versão 1.4.0-alpha01
7 de fevereiro de 2024
Lançamento de androidx.profileinstaller:profileinstaller:1.4.0-alpha01
. A versão 1.4.0-alpha01 contém estas confirmações.
Correções de bugs
- Foi adicionado um código de erro para nenhum perfil incorporado ao verificador de perfil. (Ifb109, b/313928520).
- Correção de falha ao soltar shaders no Android U (API 34) e em emuladores. (I031ca, b/274314544).
- Ativação do suporte ao Android U no instalador de perfil. (Iaf177).
- Correção do instalador de perfil no Android U com falha devido ao perfil atual não ter sido criado vazio quando o processo começou. (Ie3899).
- Correção da transcodificação de bitmap do método no formato de perfil
V_015S
. (aosp/2906631) e (aosp/2847740).
Versão 1.3
Versão 1.3.1
3 de maio de 2023
Lançamento de androidx.profileinstaller:profileinstaller:1.3.1
. A versão 1.3.1 contém estas confirmações.
Correções de bugs
- Foi ativado o suporte ao Android U no instalador de perfil (Iaf177).
- Correção do instalador de perfil no Android U com falha devido ao perfil atual não ter sido criado vazio quando o processo começou. (Ie3899).
Versão 1.3.0
22 de março de 2023
Lançamento de androidx.profileinstaller:profileinstaller:1.3.0
. A versão 1.3.0 contém estas confirmações.
Mudanças importantes desde a versão 1.2.0
- Correção de uma
NullPointerException
emProfileInstallReceiver
(b/243851384). - Adição da API
ProfileVerifier
para verificar no app se um perfil de referência foi compilado, programado ou está ausente (I263a4, b/246653809). - Foi adicionada uma nova transmissão do shell que permite que o Macrobenchmark apague totalmente os dados de perfil na memória para disco para que sejam incluídos na geração de perfil de referência. Isso é necessário para usar a biblioteca macrobenchmark para capturar perfis de valor de referência com
BaselineProfileRule
e avaliar a performance do perfil usandoCompilationMode.Partial(warmupIterations)
- Foi adicionado um código de diagnóstico para detectar perfis de referência compactados. Os perfis de referência compactados não podem ser instalados pelo Profileinstaller em Macrobenchmarks ou na produção devido à sobrecarga da CPU e devem ser evitados ao criar seu app atualizando para o Studio/AGP Electric Eel ou a versão
bundletool
1.13.1
(I86413, b/261998144). - Foram adicionados hooks para Macrobenchmark para capturar perfis e soltar o cache de sombreador, que são necessários para gerar perfis de referência ou macrobenchmark em dispositivos sem acesso root (Ie0a7d, b/250083467, b/253094958) (Ia5171, b/231455742).
Versão 1.3.0-rc01
8 de março de 2023
androidx.profileinstaller:profileinstaller:1.3.0-rc01
é lançado sem mudanças desde a última versão Beta. A versão 1.3.0-rc01 contém estas confirmações.
Versão 1.3.0-beta01
8 de fevereiro de 2023
Lançamento de androidx.profileinstaller:profileinstaller:1.3.0-beta01
. A versão 1.3.0-beta01 contém estas confirmações.
Mudanças na API
- Remoção do suporte para o processamento de perfis compactados. A abertura e descompactação levam a uma regressão de 10s no uso da CPU durante a inicialização. Em vez disso, foi adicionado um diagnóstico para descobrir perfis de referência compactados incorretamente (I86413, b/261998144).
Versão 1.3.0-alpha03
11 de janeiro de 2023
Lançamento de androidx.profileinstaller:profileinstaller:1.3.0-alpha03
. A versão 1.3.0-alpha03 contém estas confirmações.
Correções de bugs
- Agora, é possível processar perfis de referência compactados ou descompactados (Ic61a0).
MacrobenchmarkScope.dropShaderCache()
foi corrigido para não falhar mais ao corrigir o registro de transmissão no manifesto de profileinstaller (I5c728, b/258619948).
Versão 1.3.0-alpha02
9 de novembro de 2022
Lançamento de androidx.profileinstaller:profileinstaller:1.3.0-alpha02
. A versão 1.3.0-alpha02 contém estas confirmações.
Mudanças na API
- Um hook foi usado para fazer comparações a fim de eliminar o cache do sombreador e garantir uma performance consistente para inicialização a frio, especialmente ao compilar com perfis de iterações de aquecimento. Essa atualização é necessária para medir a inicialização a frio usando
benchmark-macro-junit4:1.2.0-alpha05
ou versões mais recentes. Para ver as mudanças na API da biblioteca Benchmark, consulte a página Benchmark 1.2.0-alpha07 (Ia5171, b/231455742).
Versão 1.3.0-alpha01
24 de outubro de 2022
Lançamento de androidx.profileinstaller:profileinstaller:1.3.0-alpha01
. A versão 1.3.0-alpha01 contém estas confirmações.
Mudanças na API
- Foi adicionada a API
ProfileVerifier
para verificar no app se um perfil de referência foi compilado, programado ou está ausente (I263a4, b/246653809). - Foi adicionada uma nova transmissão do shell que permite que o Macrobenchmark apague totalmente os dados de perfil na memória para disco para que sejam incluídos na geração de perfil de referência. Isso é necessário para usar a biblioteca macrobenchmark para capturar perfis de valor de referência com
BaselineProfileRule
e avaliar a performance do perfil usandoCompilationMode.Partial(warmupIterations)
(Ie0a7d, b/250083467, b/253094958).
Versão 1.2.2
Versão 1.2.2
11 de janeiro de 2023
Lançamento de androidx.profileinstaller:profileinstaller:1.2.2
. A versão 1.2.2 contém estas confirmações.
Correções de bugs
- Agora, é possível processar perfis de referência compactados ou descompactados (Ic61a0).
Versão 1.2.1
Versão 1.2.1
7 de dezembro de 2022
Lançamento de androidx.profileinstaller:profileinstaller:1.2.1
. A versão 1.2.1 contém estas confirmações.
Novos recursos
- O profileinstaller foi ativado para S_V2 (API 32) e TIRAMISU (API 33) (b/254900303).
Versão 1.2.0
Versão 1.2.0
27 de julho de 2022
Lançamento de androidx.profileinstaller:profileinstaller:1.2.0
. A versão 1.2.0 contém estas confirmações.
Mudanças importantes desde a 1.1.0
- Foi adicionado suporte ao formato de perfil do ART usado no Android 12 e versões mais recentes.
- Foram adicionadas novas APIs em
ProfileInstallReceiver
para ter resultados mais consistentes comMacrobenchmarks
ao usar perfis de referência
Versão 1.2.0-rc01
15 de junho de 2022
Lançamento de androidx.profileinstaller:profileinstaller:1.2.0-rc01
. A versão 1.2.0-rc01 contém estas confirmações.
- Esta versão é idêntica à
androidx.profileinstaller:profileinstaller:1.2.0-beta03
.
Versão 1.2.0-beta03
1º de junho de 2022
Lançamento de androidx.profileinstaller:profileinstaller:1.2.0-beta03
. A versão 1.2.0-beta03 contém estas confirmações.
Versão 1.2.0-beta02
18 de maio de 2022
Lançamento de androidx.profileinstaller:profileinstaller:1.2.0-beta02
. A versão 1.2.0-beta02 contém estas confirmações.
- Não é necessária nenhuma mudança para oferecer suporte para as versões do Compose 1.2.0-beta02.
Versão 1.2.0-beta01
11 de maio de 2022
Lançamento de androidx.profileinstaller:profileinstaller:1.2.0-beta01
. A versão 1.2.0-beta01 contém estas confirmações.
Mudanças na API
- Foram adicionadas novas APIs em
ProfileInstallReceiver
para ter resultados mais consistentes comMacrobenchmarks
ao usar perfis de referência (If2ae5, b/215740637).
Correções de bugs
- O Instalador de perfil gera uma mensagem útil ao tentar usar o formato de metadados
V_001
no Android 12 e versões mais recentes (aosp/1978526, b/217502387). - O Instalador de perfil agora usa o
androidx.startup
versão1.1.1
(aosp/2077099, b/229828376).
Versão 1.2.0-alpha02
26 de janeiro de 2022
Lançamento de androidx.profileinstaller:profileinstaller:1.2.0-alpha02
. A versão 1.2.0-alpha02 contém estas confirmações.
Esta versão é idêntica à 1.2.0-alpha01
.
Versão 1.2.0-alpha01
12 de janeiro de 2022
Lançamento de androidx.profileinstaller:profileinstaller:1.2.0-alpha01
. A versão 1.2.0-alpha01 contém estas confirmações.
Novos recursos
- Adição de suporte ao formato de perfil do ART usado no Android 12 e versões mais recentes.
Versão 1.1.0
Versão 1.1.0
9 de fevereiro de 2022
Lançamento de androidx.profileinstaller:profileinstaller:1.1.0
. A versão 1.1.0 contém estas confirmações.
Versão 1.1.0-rc01
15 de dezembro de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.1.0-rc01
sem atualizações desde a versão 1.1.0-beta04. A versão 1.1.0-rc01 contém estas confirmações.
Versão 1.1.0-beta04
1º de dezembro de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.1.0-beta04
. A versão 1.1.0-beta04 contém estas confirmações.
Versão 1.1.0-beta03
17 de novembro de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.1.0-beta03
. A versão 1.1.0-beta03 contém estas confirmações.
Correções de bugs
- Houve uma atualização para oferecer suporte ao Compose 1.1.0-beta03.
Versão 1.1.0-beta02
3 de novembro de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.1.0-beta02
. A versão 1.1.0-beta02 contém estas confirmações.
Correções de bugs
- Atualização para oferecer suporte ao Compose 1.1.0-beta02.
Versão 1.1.0-beta01
27 de outubro de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.1.0-beta01
. A versão 1.1.0-beta01 contém estas confirmações.
- Nenhuma mudança desde a versão 1.1.0-alpha07.
Versão 1.1.0-alpha07
13 de outubro de 2021
androidx.profileinstaller:profileinstaller:1.1.0-alpha07
é lançado. A versão 1.1.0-alpha07 contém estas confirmações.
Novos recursos
- Novo suporte ao profm no Android N.
Versão 1.1.0-alpha06
29 de setembro de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.1.0-alpha06
. A versão 1.1.0-alpha06 contém estas confirmações.
Correções de bugs
- Problemas de transcodificação do instalador do perfil em N, O e O_MR1 foram corrigidos (I12d75).
Versão 1.1.0-alpha05
15 de setembro de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.1.0-alpha05
. A versão 1.1.0-alpha05 contém estas confirmações.
Correções de bugs
- A transcodificação de perfil do Android Nougat e do Android Oreo para apks multidex foi corrigida.
Versão 1.1.0-alpha04
1º de setembro de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.1.0-alpha04
. A versão 1.1.0-alpha04 contém estas confirmações.
Correções de bugs
- O
ProfileInstaller
foi corrigido para facilitar a execução de MacroBenchmarks usando apps com perfis de valor de referência noCompilationMode.BaselineProfile
(I42657, b/196074999).
Versão 1.1.0-alpha03
18 de agosto de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.1.0-alpha03
. A versão 1.1.0-alpha03 contém estas confirmações.
Correções de bugs
- Mudança no comportamento de ignorar do profileinstaller para registrar o PackageInfo.lastUpdatedTime em um arquivo no diretório de arquivos do app e compará-lo antes de instalar o perfil na próxima execução (Ib93d1).
- Ajuste no formato do perfil em dispositivos P, Q e R para atender aos requisitos do ART (I84e89).
Versão 1.1.0-alpha02
4 de agosto de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.1.0-alpha02
. A versão 1.1.0-alpha02 contém estas confirmações.
Atualização para oferecer compatibilidade com o Compose 1.1.0-alpha01.
Versão 1.1.0-alpha01
21 de julho de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.1.0-alpha01
. A versão 1.1.0-alpha01 contém estas confirmações.
Correções de bugs
- Correção de um bug que acionava o modo restrito em algumas circunstâncias.
Versão 1.0
Versão 1.0.4
13 de outubro de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.0.4
. A versão 1.0.4 contém estas confirmações:
- Atualização para oferecer suporte ao Compose 1.0.4.
Versão 1.0.3
29 de setembro de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.0.3
. A versão 1.0.3 contém estas confirmações:
- Atualização para oferecer suporte ao Compose 1.0.3.
Versão 1.0.2
1º de setembro de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.0.2
. A versão 1.0.2 contém estas confirmações:
Correções de bugs
- A transcodificação de perfil foi adicionada a dispositivos P, Q e R. Com a mudança, esses dispositivos transcodificam o perfil, garantindo que o perfil escrito possa sempre ser usado pelo ART. Anteriormente, a transcodificação era ignorada nessas plataformas, o que às vezes levava o ART a não conseguir processar o perfil de origem. Não houve mudanças nas APIs para desenvolvedores.
Versão 1.0.1
4 de agosto de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.0.1
. A versão 1.0.1 contém estas confirmações.
Atualização para oferecer compatibilidade com o Compose 1.0.1.
Versão 1.0.0
28 de julho de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.0.0
. A versão 1.0.0 contém estas confirmações.
Principais recursos da versão 1.0.0
O instalador de perfil é uma nova biblioteca que possibilita que bibliotecas e aplicativos definam “regras de perfil”, e empacotem informações do perfil do ART com um APK. A biblioteca instalará esses perfis após a inicialização do aplicativo. Isso pode ser usado para melhorar o desempenho do aplicativo.
Consulte as notas da versão detalhadas em 1.0.0-beta01 para ver mais informações sobre quais são essas regras de perfil e como elas funcionam.
Versão 1.0.0-rc02
14 de julho de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.0.0-rc02
. A versão 1.0.0-rc02 contém estas confirmações:
Versão 1.0.0-rc01
1º de julho de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.0.0-rc01
. A versão 1.0.0-rc01 contém estas confirmações.
Esta é uma versão RC sem mudanças do Beta.
Versão 1.0.0-beta01
16 de junho de 2021
Lançamento de androidx.profileinstaller:profileinstaller:1.0.0-beta01
. A versão 1.0.0-beta01 contém estas confirmações.
Finalidade da biblioteca
O instalador de perfil é uma nova biblioteca que possibilita que bibliotecas e aplicativos definam “regras de perfil”, e empacotem informações do perfil do ART com um APK. A biblioteca instalará esses perfis após a inicialização do aplicativo. Isso pode ser usado para melhorar o desempenho do aplicativo.
A instalação do perfil é feita com a biblioteca androidx.startup. Se por algum motivo alguém quiser desativar a instalação do perfil, poderá modificar o manifesto para removê-lo:
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data android:name="androidx.profileinstaller.ProfileInstallerInitializer"
tools:node="remove" />
</provider>
Isso é especialmente útil se o app tiver requisitos de inicialização não triviais e você quiser acionar a instalação do perfil manualmente usando a API ProfileInstaller.writeProfile
.
O que são as regras de perfil?
As regras de perfil para uma biblioteca são especificadas em um arquivo de texto
baseline-prof.txt
localizado no diretóriosrc/main
ou equivalente. O arquivo especifica uma regra por linha. Nesse caso, uma regra é um padrão para a correspondência de métodos ou classes na biblioteca. A sintaxe dessas regras é um superconjunto do formato de perfil do ART legível que é usado junto comadb shell profman --dump-classes-and-methods ...
. Essas regras podem ter uma das duas formas destinadas a métodos ou classes.Uma regra de método tem o seguinte padrão:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
E uma regra de classe tem o seguinte padrão:
<CLASS_DESCRIPTOR>
Aqui,
<FLAGS>
é um ou mais dos caracteresH
,S
eP
, para indicar se esse método precisa ser sinalizado como "Hot" (frequente), "Startup" (de inicialização) ou "Post Startup" (pós-inicialização).O
<CLASS_DESCRIPTOR>
é o descritor da classe à qual o método desejado pertence. Por exemplo, a classeandroidx.compose.runtime.SlotTable
teria o descritorLandroidx/compose/runtime/SlotTable;
.A
<METHOD_SIGNATURE>
é a assinatura do método e inclui o nome, os tipos de parâmetro e os tipos de retorno do método. Por exemplo, o métodofun isPlaced(): Boolean
emLayoutNode
tem a assinaturaisPlaced()Z
.Esses padrões podem ter caracteres curinga (
**
,*
e?
) para que uma única regra inclua vários métodos ou classes.
O que as regras fazem?
Um método com a flag
H
indica que ele é um método "hot" (frequente) e precisa ser compilado com antecedência.Um método com a flag
S
indica que ele é chamado na inicialização e precisa ser compilado com antecedência para evitar o custo da compilação e interpretação dele no momento da inicialização.Um método com a flag
P
indica que ele é chamado após a inicialização.A presença de uma classe nesse arquivo indica que ela é usada durante a inicialização e precisa ser pré-alocada no heap para evitar o custo do carregamento dela.
Como isso funciona?
As bibliotecas podem definir essas regras que serão empacotadas nos artefatos do AAR. Quando um APK é criado e inclui esses artefatos, essas regras são mescladas e usadas para criar um perfil do ART binário compacto que seja específico para o APK. Assim, o ART poderá aproveitar esse perfil quando o APK estiver instalado em dispositivos para compilar um subconjunto específico do aplicativo, com antecedência, para melhorar o desempenho dele, especialmente na primeira execução. Isso não terá efeito nos aplicativos depuráveis.
Os arquivos de regras precisam ser nomeados como
baseline-prof.txt
e colocados no diretório raiz do conjunto de origem principal. Ele precisa ser um arquivo irmão do arquivoAndroidManifset.xml
.Atualmente, esses arquivos só vão ser utilizados se você estiver usando o Plug-in do Android para Gradle 7.0 ou mais recente. Esse arquivo só é ativado com uma flag nas
gradle.properties
:# Enable adding baseline-prof.txt files to AAR artifacts, and binary profiles to APKs android.experimental.enableArtProfiles=true
Os perfis precisam de um equilíbrio
- Perfis elaborados de maneira adequada que priorizam corretamente os métodos e as classes que vão estar no caminho de inicialização e que são essenciais para a performance vão produzir os melhores resultados. No entanto, incluir muitos métodos ou classes nos perfis pode resultar em um efeito negativo em termos de consumo de memória e uso de disco. Recomendamos começar com prudência, se você for definir suas próprias regras de perfil.