ProfileInstaller
Atualização mais recente | Versão estável | Candidata a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
15 de junho de 2022 | 1.1.0 | 1.2.0-rc01 | - | - |
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 no arquivo build.gradle
para
seu app ou módulo:
Groovy
dependencies { implementation "androidx.profileinstaller:profileinstaller:1.2.0-rc01" }
Kotlin
dependencies { implementation("androidx.profileinstaller:profileinstaller:1.2.0-rc01") }
Para ver 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.2.0
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 essas 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.1.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, será possível 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 é utilizada ao usaradb 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 terá o seguinte padrão:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
E uma regra de classe terá 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 um descritor deLandroidx/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 sinalização
H
indica que ele é um método "hot" (frequente) e precisa ser compilado com antecedência.Um método com a sinalização
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 sinalização
P
indica que ele é chamado após a inicialização.Uma classe presente 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ó serão utilizados se você estiver usando o Plug-in do Android para Gradle 7.0+ e versões mais recentes. No momento, esse arquivo só é ativado com uma sinalização 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 classes que estarão no caminho de inicialização e que são essenciais para o desempenho, produzirão 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. Portanto, recomendamos começar de maneira conservadora se você for definir suas próprias regras de perfil.