ProfileInstaller
Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
21 de agosto de 2024 | 1.3.1 | - | 1.4.0-beta01 | - |
Cómo declarar dependencias
Para agregar una dependencia en ProfileInstaller, debes incluir el repositorio Maven de Google en tu proyecto. Lee el repositorio Maven de Google para obtener más información.
Agrega las dependencias de los artefactos que necesites en el archivo build.gradle
de tu app o módulo:
Groovy
dependencies { implementation "androidx.profileinstaller:profileinstaller:1.3.1" }
Kotlin
dependencies { implementation("androidx.profileinstaller:profileinstaller:1.3.1") }
Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.
Comentarios
Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.
Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.
Versión 1.4
Versión 1.4.0-beta01
21 de agosto de 2024
Lanzamiento de androidx.profileinstaller:profileinstaller:1.4.0-beta01
sin modificaciones respecto de la última versión alfa. La versión 1.4.0-beta01 contiene estas confirmaciones.
Versión 1.4.0-alpha02
7 de agosto de 2024
Lanzamiento de androidx.profileinstaller:profileinstaller:1.4.0-alpha02
. La versión 1.4.0-alpha02 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad con el nivel de API 35 al instalador de perfiles. (6f9f6fa).
Correcciones de errores
- Se quitó la descripción manual del acceso a las nuevas APIs de la plataforma, ya que esto sucede automáticamente a través del modelado de APIs cuando se usa R8 con AGP 7.3 o versiones posteriores (por ejemplo, R8 versión 3.3) y para todas las compilaciones cuando se usa AGP 8.1 o versiones posteriores (p. ej., D8 versión 8.1). Se recomienda a los clientes que no usan AGP que actualicen a D8 8.1 o versiones posteriores. Consulta este artículo para obtener más detalles. (If6b4c, b/345472586).
Versión 1.4.0-alpha01
7 de febrero de 2024
Lanzamiento de androidx.profileinstaller:profileinstaller:1.4.0-alpha01
. La versión 1.4.0-alpha01 contiene estas confirmaciones.
Correcciones de errores
- Se agregó un código de error para ningún perfil incorporado al verificador de perfiles. (Ifb109, b/313928520).
- Se corrigió la falla que se producía cuando se descartaban sombreadores en Android U (nivel de API 34), así como en emuladores. (I031ca, b/274314544).
- Se habilitó la compatibilidad con Android U en el instalador de perfiles. (Iaf177).
- Se corrigió el error del instalador de perfiles en Android U debido a que el perfil actual no se creaba vacío cuando se iniciaba el proceso. (Ie3899).
- Se corrigió la transcodificación del mapa de bits del método en el formato de perfil
V_015S
. (aosp/2906631) y (aosp/2847740).
Versión 1.3
Versión 1.3.1
3 de mayo de 2023
Lanzamiento de androidx.profileinstaller:profileinstaller:1.3.1
. La versión 1.3.1 contiene estas confirmaciones.
Correcciones de errores
- Se habilitó la compatibilidad con Android U en el instalador de perfiles (Iaf177).
- Se corrigió el error del instalador de perfiles en Android U debido a que el perfil actual no se creaba vacío cuando se iniciaba el proceso. (Ie3899).
Versión 1.3.0
22 de marzo de 2023
Lanzamiento de androidx.profileinstaller:profileinstaller:1.3.0
. La versión 1.3.0 contiene estas confirmaciones.
Cambios importantes desde 1.2.0
- Se corrigió una
NullPointerException
enProfileInstallReceiver
. (b/243851384). - Se agregó la API de
ProfileVerifier
para verificar desde la app si se compiló, programó o falta un perfil de Baseline (I263a4, b/246653809). - Se agregó una nueva emisión de shell que permite que Macrobenchmark vacíe por completo los datos del perfil de la memoria al disco, para incluirlos en la generación del perfil de referencia. Esto es necesario para usar la biblioteca de macrocomparativas a fin de capturar perfiles de referencia con
BaselineProfileRule
y evaluar el rendimiento del perfil conCompilationMode.Partial(warmupIterations)
. - Se agregó un código de diagnóstico para detectar perfiles de Baseline comprimidos. Profileinstaller no puede instalar perfiles de Baseline comprimidos en Macrobenchmarks ni en producción debido a la sobrecarga de la CPU, y se deben evitar cuando compilas tu app actualizando a Studio/AGP Electric Eel o a la versión de
bundletool
1.13.1
. (I86413, b/261998144) - Se agregaron hooks para macrocomparativas a fin de capturar perfiles y descartar la caché del sombreador, que son necesarios para generar perfiles de Baseline o macrocomparativas en dispositivos sin permisos de administrador. (Ie0a7d, b/250083467, b/253094958) (Ia5171, b/231455742)
Versión 1.3.0-rc01
8 de marzo de 2023
Lanzamiento de androidx.profileinstaller:profileinstaller:1.3.0-rc01
sin modificaciones desde la última versión beta. La versión 1.3.0-rc01 contiene estas confirmaciones.
Versión 1.3.0-beta01
8 de febrero de 2023
Lanzamiento de androidx.profileinstaller:profileinstaller:1.3.0-beta01
. La versión 1.3.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Quita la compatibilidad con el control de perfiles comprimidos: abrir y descomprimir genera una regresión de 10 ms en el uso de CPU durante el inicio, por lo que, en cambio, se agregó un diagnóstico para descubrir perfiles de referencia comprimidos incorrectamente. (I86413, b/261998144).
Versión 1.3.0-alpha03
11 de enero de 2023
Lanzamiento de androidx.profileinstaller:profileinstaller:1.3.0-alpha03
. La versión 1.3.0-alpha03 contiene estas confirmaciones.
Correcciones de errores
- Se habilita el manejo de perfiles de Baseline comprimidos o sin comprimir (Ic61a0).
- Se corrigió
MacrobenchmarkScope.dropShaderCache()
para que ya no falle. Para ello, se modificó el registro de transmisión en el manifiesto de profileinstaller (I5c728, b/258619948).
Versión 1.3.0-alpha02
9 de noviembre de 2022
Lanzamiento de androidx.profileinstaller:profileinstaller:1.3.0-alpha02
. La versión 1.3.0-alpha02 contiene estas confirmaciones.
Cambios en la API
- Se agregó un hook para las comparativas para descartar la caché del sombreador y garantizar un rendimiento coherente para los inicios en frío, en especial cuando se compilan con perfiles a partir de iteraciones de preparación. Esta actualización es necesaria para medir los inicios en frío que usan
benchmark-macro-junit4:1.2.0-alpha05
o versiones posteriores. Para conocer los cambios en la API de la biblioteca Benchmark, consulta la página Benchmark 1.2.0-alpha07. (Ia5171, b/231455742)
Versión 1.3.0-alpha01
24 de octubre de 2022
Lanzamiento de androidx.profileinstaller:profileinstaller:1.3.0-alpha01
. La versión 1.3.0-alpha01 contiene estas confirmaciones.
Cambios en la API
- Se agregó la API de
ProfileVerifier
para comprobar desde la app si se compiló, programó o falta un perfil de referencia (I263a4, b/246653809). - Se agregó una nueva emisión de shell que permite que Macrobenchmark vacíe por completo los datos del perfil de la memoria al disco, para incluirlos en la generación del perfil de referencia. Esto es necesario para usar la biblioteca de macrocomparativas a fin de capturar perfiles de referencia con
BaselineProfileRule
y evaluar el rendimiento del perfil conCompilationMode.Partial(warmupIterations)
. (Ie0a7d, b/250083467, b/253094958).
Versión 1.2.2
Versión 1.2.2
11 de enero de 2023
Lanzamiento de androidx.profileinstaller:profileinstaller:1.2.2
. La versión 1.2.2 contiene estas confirmaciones.
Correcciones de errores
- Se habilita el manejo de perfiles de Baseline comprimidos o sin comprimir (Ic61a0).
Versión 1.2.1
Versión 1.2.1
7 de diciembre de 2022
Lanzamiento de androidx.profileinstaller:profileinstaller:1.2.1
. La versión 1.2.1 contiene estas confirmaciones.
Nuevas funciones
- Se habilitó profileinstaller para S_V2 (API 32) y TIRAMISU (API 33) (b/254900303).
Versión 1.2.0
Versión 1.2.0
27 de julio de 2022
Lanzamiento de androidx.profileinstaller:profileinstaller:1.2.0
. La versión 1.2.0 contiene estas confirmaciones.
Cambios importantes desde la versión 1.1.0
- Se agregó compatibilidad con el formato de perfil de ART que se usa en Android 12 y versiones posteriores.
- Se agregaron nuevas APIs en
ProfileInstallReceiver
para obtener resultados más coherentes conMacrobenchmarks
cuando se usan perfiles de referencia.
Versión 1.2.0-rc01
15 de junio de 2022
Se lanzó androidx.profileinstaller:profileinstaller:1.2.0-rc01
. La versión 1.2.0-rc01 contiene estas confirmaciones.
- Esta versión es idéntica a
androidx.profileinstaller:profileinstaller:1.2.0-beta03
.
Versión 1.2.0-beta03
1 de junio de 2022
Se lanzó androidx.profileinstaller:profileinstaller:1.2.0-beta03
. La versión 1.2.0-beta03 contiene estas confirmaciones.
Versión 1.2.0-beta02
18 de mayo de 2022
Lanzamiento de androidx.profileinstaller:profileinstaller:1.2.0-beta02
. La versión 1.2.0-beta02 contiene estas confirmaciones.
- No se requieren cambios para admitir las versiones Compose 1.2.0-beta02.
Versión 1.2.0-beta01
11 de mayo de 2022
Lanzamiento de androidx.profileinstaller:profileinstaller:1.2.0-beta01
. La versión 1.2.0-beta01 contiene estas confirmaciones.
Cambios en la API
- Se agregaron nuevas API en
ProfileInstallReceiver
para obtener resultados más coherentes conMacrobenchmarks
cuando se usan perfiles de Baseline (If2ae5, b/215740637).
Correcciones de errores
- El instalador de perfiles muestra un mensaje útil cuando intenta usar el formato
V_001
de metadatos en Android 12 y versiones posteriores (aosp/1978526, b/217502387). - El instalador de perfiles ahora usa
androidx.startup
versión1.1.1
(aosp/2077099, b/229828376).
Versión 1.2.0-alpha02
26 de enero de 2022
Lanzamiento de androidx.profileinstaller:profileinstaller:1.2.0-alpha02
. La versión 1.2.0-alpha02 contiene estas confirmaciones.
Esta versión es idéntica a 1.2.0-alpha01
.
Versión 1.2.0-alpha01
12 de enero de 2022
Lanzamiento de androidx.profileinstaller:profileinstaller:1.2.0-alpha01
. La versión 1.2.0-alpha01 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad con el formato de perfil de ART que se usa en Android 12 y versiones posteriores.
Versión 1.1.0
Versión 1.1.0
9 de febrero de 2022
Lanzamiento de androidx.profileinstaller:profileinstaller:1.1.0
. La versión 1.1.0 contiene estas confirmaciones.
Versión 1.1.0-rc01
15 de diciembre de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.1.0-rc01
sin actualizaciones desde la versión 1.1.0-beta04. La versión 1.1.0-rc01 contiene estas confirmaciones.
Versión 1.1.0-beta04
1 de diciembre de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.1.0-beta04
. La versión 1.1.0-beta04 contiene estas confirmaciones.
Versión 1.1.0-beta03
17 de noviembre de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.1.0-beta03
. La versión 1.1.0-beta03 contiene estas confirmaciones.
Correcciones de errores
- Se actualizó para admitir Compose 1.1.0-beta03.
Versión 1.1.0-beta02
3 de noviembre de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.1.0-beta02
. La versión 1.1.0-beta02 contiene estas confirmaciones.
Correcciones de errores
- Se actualizó para admitir Compose 1.1.0-beta02.
Versión 1.1.0-beta01
27 de octubre de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.1.0-beta01
. La versión 1.1.0-beta01 contiene estas confirmaciones.
- No hay cambios desde la versión 1.1.0-alpha07.
Versión 1.1.0-alpha07
13 de octubre de 2021
Se lanzó androidx.profileinstaller:profileinstaller:1.1.0-alpha07
. La versión 1.1.0-alpha07 contiene estas confirmaciones.
Nuevas funciones
- Se agregó compatibilidad con profm en Android N.
Versión 1.1.0-alpha06
29 de septiembre de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.1.0-alpha06
. La versión 1.1.0-alpha06 contiene estas confirmaciones.
Correcciones de errores
- Se solucionaron los problemas de transcodificación del instalador de perfiles en N, O y O_MR1. (I12d75)
Versión 1.1.0-alpha05
15 de septiembre de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.1.0-alpha05
. La versión 1.1.0-alpha05 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió la transcodificación de perfiles de Android Nougat y Android Oreo para APK de multidex.
Versión 1.1.0-alpha04
1 de septiembre de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.1.0-alpha04
. La versión 1.1.0-alpha04 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió
ProfileInstaller
para facilitar que las apps que usan perfiles de referencia puedan ejecutar MacroBenchmarks medianteCompilationMode.BaselineProfile
. (I42657, b/196074999)
Versión 1.1.0-alpha03
18 de agosto de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.1.0-alpha03
. La versión 1.1.0-alpha03 contiene estas confirmaciones.
Correcciones de errores
- Cambia el comportamiento de omisión de profileinstaller para registrar PackageInfo.lastUpdatedTime en un archivo en el directorio de archivos de la app y compáralo antes de instalar el perfil en la próxima ejecución. (Ib93d1)
- Se ajustó el formato de perfil en dispositivos P, Q, R para cumplir con los requisitos de ART. (I84e89)
Versión 1.1.0-alpha02
4 de agosto de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.1.0-alpha02
. La versión 1.1.0-alpha02 contiene estas confirmaciones.
Se actualizó para que sea compatible con Compose 1.1.0-alpha01.
Versión 1.1.0-alpha01
21 de julio de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.1.0-alpha01
. La versión 1.1.0-alpha01 contiene estas confirmaciones.
Correcciones de errores
- Se corrigió el error que activaba el modo estricto en algunas circunstancias.
Versión 1.0
Versión 1.0.4
13 de octubre de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.0.4
. La versión 1.0.4 contiene estas confirmaciones.
- Se actualizó para admitir Compose 1.0.4.
Versión 1.0.3
29 de septiembre de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.0.3
. La versión 1.0.3 contiene estas confirmaciones.
- Se actualizó para admitir Compose 1.0.3
Versión 1.0.2
1 de septiembre de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.0.2
. La versión 1.0.2 contiene estas confirmaciones.
Correcciones de errores
- Se agregó la transcodificación de perfiles para dispositivos P, Q y R. Este cambio implica que estos dispositivos transcodificarán el perfil, lo que garantiza que ART pueda usar siempre el perfil escrito. Anteriormente, se omitía la transcodificación en estas plataformas, lo que a veces hacía que ART no pudiera procesar el perfil fuente. No hay cambios en las API para desarrolladores.
Versión 1.0.1
4 de agosto de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.0.1
. La versión 1.0.1 contiene estas confirmaciones.
Se actualizó para que sea compatible con Compose 1.0.1.
Versión 1.0.0
28 de julio de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.0.0
. La versión 1.0.0 contiene estas confirmaciones.
Funciones principales de la versión 1.0.0
El instalador de perfiles es una nueva biblioteca que permite que las bibliotecas y las aplicaciones definan "reglas de perfiles" y agrupen información de perfiles de ART con un APK. Esta biblioteca instalará esos perfiles después del inicio de la app. Esto se puede usar para mejorar el rendimiento de una aplicación.
Consulta las notas detalladas de la versión 1.0.0-beta01 para obtener más información sobre estas reglas de perfil y el modo en el que funcionan.
Versión 1.0.0-rc02
14 de julio de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.0.0-rc02
. La versión 1.0.0-rc02 contiene estas confirmaciones.
Versión 1.0.0-rc01
1 de julio de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.0.0-rc01
. La versión 1.0.0-rc01 contiene estas confirmaciones.
Esta es una versión RC (candidata para el lanzamiento) sin cambios desde la versión beta.
Versión 1.0.0-beta01
16 de junio de 2021
Lanzamiento de androidx.profileinstaller:profileinstaller:1.0.0-beta01
. La versión 1.0.0-beta01 contiene estas confirmaciones.
Propósito de la biblioteca
El instalador de perfiles es una nueva biblioteca que permite que las bibliotecas y las aplicaciones definan "reglas de perfiles" y agrupen información de perfiles de ART con un APK. Esta biblioteca instalará esos perfiles después del inicio de la app. Esto se puede usar para mejorar el rendimiento de una aplicación.
Esta instalación de perfiles se realiza con la biblioteca androidx.startup. Si por algún motivo quieres inhabilitar la instalación de perfiles, puedes modificar el manifiesto para quitarla:
<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>
Esto es muy útil si tu app tiene requisitos de inicio no triviales y quieres activar la instalación de perfiles manualmente con la API ProfileInstaller.writeProfile
.
¿Qué son las reglas de perfiles?
Las reglas de perfiles de una biblioteca se especifican en un archivo de texto
baseline-prof.txt
, ubicado ensrc/main
o el directorio equivalente. El archivo especifica una regla por línea, donde una regla en este caso es un patrón para la coincidencia con métodos o clases de la biblioteca. La sintaxis de estas reglas es un superconjunto del formato de perfil ART legible que se usa cuando se implementaadb shell profman --dump-classes-and-methods ...
. Estas reglas adoptan una de dos formas para segmentar métodos o clases.Una regla de métodos tendrá el siguiente patrón:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Una regla de clases tendrá el siguiente patrón:
<CLASS_DESCRIPTOR>
Aquí,
<FLAGS>
es uno o más caracteresH
,S
yP
, los cuales indican si este método debe marcarse como "Hot" (caliente), "Startup" (inicio) o "Post Startup" (posterior al inicio).El
<CLASS_DESCRIPTOR>
es el descriptor de la clase a la que pertenece el método segmentado. Por ejemplo, la claseandroidx.compose.runtime.SlotTable
tendría un descriptor deLandroidx/compose/runtime/SlotTable;
.El
<METHOD_SIGNATURE>
es la firma del método y, además, incluye el nombre, los tipos de parámetros y los tipos de datos que muestra. Por ejemplo, el métodofun isPlaced(): Boolean
enLayoutNode
tiene la firmaisPlaced()Z
.Estos patrones pueden tener comodines (
**
,*
y?
) para tener una sola regla que abarque varios métodos o clases.
¿Para qué sirven las reglas?
Un método con la marca
H
indica que es "hot" y debe compilarse con anticipación.Un método con la marca
S
indica que se llama durante el inicio y debe compilarse con anticipación para evitar el costo de interpretarlo y compilarlo en el momento del inicio.Un método que tiene la marca
P
indica que es un método que se llama después del inicio.Una clase presente en este archivo indica que se usa durante el inicio y debe asignarse previamente en el montón para evitar el costo de cargarla.
¿Cómo funciona esto?
Las bibliotecas pueden definir estas reglas que se empaquetarán en artefactos de AAR. Luego, cuando se compila un APK que incluye esos artefactos, esas reglas se combinan y se usan para compilar un perfil de ART binario compacto específico para el APK. De esta manera, ART puede tomar este perfil cuando se instala el APK en dispositivos para compilar con anticipación un subconjunto específico de la aplicación a fin de mejorar su rendimiento, especialmente en la primera ejecución. Ten en cuenta que esta acción no tendrá efecto en las aplicaciones depurables.
Los archivos de reglas deben llamarse
baseline-prof.txt
y ubicarse en el directorio raíz del conjunto de orígenes principal (debe ser un archivo del mismo nivel que el archivoAndroidManifset.xml
).Actualmente, estos archivos solo se usarán si usas el complemento de Android para Gradle 7.0 o una versión posterior y, por ahora, solo están habilitados con una marca en tu
gradle.properties
:# Enable adding baseline-prof.txt files to AAR artifacts, and binary profiles to APKs android.experimental.enableArtProfiles=true
Los perfiles requieren un saldo
- Los perfiles creados de manera adecuada, que priorizan correctamente los métodos y las clases que estarán en la ruta de inicio y son fundamentales para el rendimiento, brindarán los mejores resultados. Sin embargo, incluir demasiados métodos o clases en los perfiles puede terminar teniendo un efecto negativo en el consumo de memoria y el uso del disco, por lo que te recomendamos que comiences con un ritmo conservador si vas a definir tus propias reglas de perfiles.