ПрофильУстановщик
Последнее обновление | Стабильный выпуск | Кандидат на выпуск | Бета-версия | Альфа-релиз |
---|---|---|---|---|
7 августа 2024 г. | 1.3.1 | - | - | 1.4.0-альфа02 |
Объявление зависимостей
Чтобы добавить зависимость от ProfileInstaller, необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .
Добавьте зависимости для нужных вам артефактов в файл build.gradle
для вашего приложения или модуля:
классный
dependencies { implementation "androidx.profileinstaller:profileinstaller:1.3.1" }
Котлин
dependencies { implementation("androidx.profileinstaller:profileinstaller:1.3.1") }
Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.
Дополнительную информацию см. в документации по системе отслеживания проблем .
Версия 1.4
Версия 1.4.0-альфа02
7 августа 2024 г.
Выпущен androidx.profileinstaller:profileinstaller:1.4.0-alpha02
. Версия 1.4.0-alpha02 содержит эти коммиты .
Новые возможности
- В установщик профилей добавлена поддержка API 35. ( 6f9f6fa )
Исправления ошибок
- Убрано ручное определение доступа к API новой платформы, поскольку это происходит автоматически посредством моделирования API при использовании R8 с AGP 7.3 или новее (например, R8 версии 3.3) и для всех сборок при использовании AGP 8.1 или новее (например, D8 версии 8.1). Клиентам, не использующим AGP, рекомендуется выполнить обновление до D8 версии 8.1 или более поздней. Более подробную информацию можно найти в этой статье . ( If6b4c , b/345472586 )
Версия 1.4.0-альфа01
7 февраля 2024 г.
Выпущен androidx.profileinstaller:profileinstaller:1.4.0-alpha01
. Версия 1.4.0-alpha01 содержит эти коммиты.
Исправления ошибок
- Добавлен код ошибки, связанный с отсутствием профиля, встроенного в средство проверки профиля. ( Ifb109 , б/313928520 )
- Исправлен сбой при сбросе шейдеров на Android U (API 34), а также на эмуляторах. ( I031ca , б/274314544 )
- Включена поддержка Android U в установщике профиля. ( Iaf177 )
- Исправлена ошибка установки профиля на Android U из-за того, что текущий профиль не создавался пустым при запуске процесса. ( Ie3899 )
- Исправлено перекодирование растрового изображения метода в формате профиля
V_015S
. ( aosp/2906631 ) и ( aosp/2847740 )
Версия 1.3
Версия 1.3.1
3 мая 2023 г.
androidx.profileinstaller:profileinstaller:1.3.1
выпущен. Версия 1.3.1 содержит эти коммиты.
Исправления ошибок
- Включена поддержка Android U в установщике профиля ( Iaf177 ).
- Исправлена ошибка установки профиля на Android U из-за того, что текущий профиль не создавался пустым при запуске процесса. ( Ie3899 )
Версия 1.3.0
22 марта 2023 г.
androidx.profileinstaller:profileinstaller:1.3.0
выпущен. Версия 1.3.0 содержит эти коммиты.
Важные изменения с версии 1.2.0
- Исправлено исключение
NullPointerException
вProfileInstallReceiver
. ( б / 243851384 ) - Добавлен API
ProfileVerifier
для проверки из приложения, был ли базовый профиль скомпилирован, запланирован или отсутствует ( I263a4 , b/246653809 ). - Добавляет новую трансляцию оболочки, которая позволяет Macrobenchmark полностью сбрасывать данные профиля из памяти на диск для включения в создание базового профиля. Это необходимо для использования библиотеки макротестов для захвата базовых профилей с помощью
BaselineProfileRule
и оценки производительности профиля с помощьюCompilationMode.Partial(warmupIterations)
. - Добавлен диагностический код для обнаружения сжатых базовых профилей. Сжатые базовые профили не могут быть установлены с помощью Profileinstaller в Macrobenchmarks или в рабочей среде из-за нагрузки на ЦП, и их следует избегать при создании приложения путем обновления до Studio/AGP Electric Eel или
bundletool
версии1.13.1
( I86413 , b/261998144 ). - Добавлены перехватчики макробенчмарка для захвата профилей и удаления кэша шейдеров, которые необходимы для создания базовых профилей или макробенчмаркинга на нерутированных устройствах ( Ie0a7d , b/250083467 , b/253094958 ) ( Ia5171 , b/231455742 ).
Версия 1.3.0-rc01
8 марта 2023 г.
androidx.profileinstaller:profileinstaller:1.3.0-rc01
выпущен без изменений со времени последней бета-версии. Версия 1.3.0-rc01 содержит эти коммиты.
Версия 1.3.0-бета01
8 февраля 2023 г.
Выпущен androidx.profileinstaller:profileinstaller:1.3.0-beta01
. Версия 1.3.0-beta01 содержит эти коммиты.
Изменения API
- Удалена поддержка обработки сжатых профилей — открытие и распаковка приводит к снижению загрузки ЦП на 10 мс во время запуска, поэтому вместо этого добавлена диагностика для обнаружения неправильно сжатых базовых профилей. ( I86413 , б / 261998144 )
Версия 1.3.0-альфа03
11 января 2023 г.
androidx.profileinstaller:profileinstaller:1.3.0-alpha03
выпущен. Версия 1.3.0-alpha03 содержит эти коммиты.
Исправления ошибок
- Позволяет обрабатывать сжатые или несжатые базовые профили ( Ic61a0 ).
- Исправьте
MacrobenchmarkScope.dropShaderCache()
, чтобы он больше не выходил из строя, исправив реестр широковещательной рассылки в манифесте Profileinstaller ( I5c728 , b/258619948 ).
Версия 1.3.0-альфа02
9 ноября 2022 г.
Выпущен androidx.profileinstaller:profileinstaller:1.3.0-alpha02
. Версия 1.3.0-alpha02 содержит эти коммиты.
Изменения API
- Добавлена возможность для тестов для удаления кэша шейдеров, чтобы обеспечить стабильную производительность при холодном запуске, особенно при компиляции с профилями из итераций прогрева. Это обновление необходимо для измерения холодных запусков с использованием
benchmark-macro-junit4:1.2.0-alpha05
или более поздней версии. Информацию об изменениях API библиотеки Benchmark можно найти на странице Benchmark 1.2.0-alpha07 . ( Я5171 , б/231455742 )
Версия 1.3.0-альфа01
24 октября 2022 г.
Выпущен androidx.profileinstaller:profileinstaller:1.3.0-alpha01
. Версия 1.3.0-alpha01 содержит эти коммиты.
Изменения API
- Добавлен API
ProfileVerifier
для проверки из приложения, был ли базовый профиль скомпилирован, запланирован или отсутствует ( I263a4 , b/246653809 ). - Добавляет новую трансляцию оболочки, которая позволяет Macrobenchmark полностью сбрасывать данные профиля из памяти на диск для включения в создание базового профиля. Это необходимо для использования библиотеки макротестов для захвата базовых профилей с помощью
BaselineProfileRule
и оценки производительности профиля с помощьюCompilationMode.Partial(warmupIterations)
. ( Ie0a7d , б/250083467 , б/253094958 )
Версия 1.2.2
Версия 1.2.2
11 января 2023 г.
androidx.profileinstaller:profileinstaller:1.2.2
выпущен. Версия 1.2.2 содержит эти коммиты.
Исправления ошибок
- Позволяет обрабатывать сжатые или несжатые базовые профили ( Ic61a0 ).
Версия 1.2.1
Версия 1.2.1
7 декабря 2022 г.
androidx.profileinstaller:profileinstaller:1.2.1
выпущен. Версия 1.2.1 содержит эти коммиты.
Новые возможности
- Включите установщик профилей для S_V2 (API 32) и TIRAMISU (API 33) ( b/254900303 ).
Версия 1.2.0
Версия 1.2.0
27 июля 2022 г.
androidx.profileinstaller:profileinstaller:1.2.0
выпущен. Версия 1.2.0 содержит эти коммиты.
Важные изменения с версии 1.1.0
- Добавлена поддержка формата профиля ART, используемого в Android 12 и в дальнейшем.
- Добавьте новые API в
ProfileInstallReceiver
, чтобы получить более согласованные результаты с помощьюMacrobenchmarks
при использовании базовых профилей.
Версия 1.2.0-rc01
15 июня 2022 г.
androidx.profileinstaller:profileinstaller:1.2.0-rc01
выпущен. Версия 1.2.0-rc01 содержит эти коммиты.
- Эта версия идентична
androidx.profileinstaller:profileinstaller:1.2.0-beta03
.
Версия 1.2.0-бета03
1 июня 2022 г.
Выпущен androidx.profileinstaller:profileinstaller:1.2.0-beta03
. Версия 1.2.0-beta03 содержит эти коммиты.
Версия 1.2.0-бета02
18 мая 2022 г.
Выпущен androidx.profileinstaller:profileinstaller:1.2.0-beta02
. Версия 1.2.0-beta02 содержит эти коммиты.
- Никаких изменений не требуется для поддержки версий Compose 1.2.0-beta02.
Версия 1.2.0-бета01
11 мая 2022 г.
Выпущен androidx.profileinstaller:profileinstaller:1.2.0-beta01
. Версия 1.2.0-beta01 содержит эти коммиты.
Изменения API
- Добавьте новые API в
ProfileInstallReceiver
, чтобы получить более согласованные результаты с помощьюMacrobenchmarks
при использовании базовых профилей. ( If2ae5 , b/215740637 )
Исправления ошибок
- Установщик профиля выдает полезное сообщение при попытке использовать формат метаданных
V_001
на Android 12 и более поздних версиях. ( аосп/1978526 , б/217502387 ) - Установщик профилей теперь использует
androidx.startup
версии1.1.1
. ( аосп/2077099 , б/229828376 )
Версия 1.2.0-альфа02
26 января 2022 г.
androidx.profileinstaller:profileinstaller:1.2.0-alpha02
выпущен. Версия 1.2.0-alpha02 содержит эти коммиты.
Эта версия идентична 1.2.0-alpha01
.
Версия 1.2.0-альфа01
12 января 2022 г.
androidx.profileinstaller:profileinstaller:1.2.0-alpha01
выпущен. Версия 1.2.0-alpha01 содержит эти коммиты.
Новые возможности
- Добавьте поддержку формата профиля ART, используемого в Android 12 и в дальнейшем.
Версия 1.1.0
Версия 1.1.0
9 февраля 2022 г.
androidx.profileinstaller:profileinstaller:1.1.0
выпущен. Версия 1.1.0 содержит эти коммиты.
Версия 1.1.0-rc01
15 декабря 2021 г.
androidx.profileinstaller:profileinstaller:1.1.0-rc01
выпущен без обновлений с версии 1.1.0-beta04. Версия 1.1.0-rc01 содержит эти коммиты.
Версия 1.1.0-beta04
1 декабря 2021 г.
Выпущен androidx.profileinstaller:profileinstaller:1.1.0-beta04
. Версия 1.1.0-beta04 содержит эти коммиты.
Версия 1.1.0-beta03
17 ноября 2021 г.
androidx.profileinstaller:profileinstaller:1.1.0-beta03
выпущен. Версия 1.1.0-beta03 содержит эти коммиты.
Исправления ошибок
- Обновлено для поддержки Compose 1.1.0-beta03.
Версия 1.1.0-beta02
3 ноября 2021 г.
Выпущен androidx.profileinstaller:profileinstaller:1.1.0-beta02
. Версия 1.1.0-beta02 содержит эти коммиты.
Исправления ошибок
- Обновлено для поддержки Compose 1.1.0-beta02.
Версия 1.1.0-бета01
27 октября 2021 г.
androidx.profileinstaller:profileinstaller:1.1.0-beta01
выпущен. Версия 1.1.0-beta01 содержит эти коммиты.
- Никаких изменений с версии 1.1.0-alpha07.
Версия 1.1.0-альфа07
13 октября 2021 г.
androidx.profileinstaller:profileinstaller:1.1.0-alpha07
выпущен. Версия 1.1.0-alpha07 содержит эти коммиты.
Новые возможности
- Добавлена поддержка проф на Android N
Версия 1.1.0-альфа06
29 сентября 2021 г.
Выпущен androidx.profileinstaller:profileinstaller:1.1.0-alpha06
. Версия 1.1.0-alpha06 содержит эти коммиты.
Исправления ошибок
- Исправлены проблемы с перекодированием Profileinstaller на N, O и O_MR1. ( I12d75 )
Версия 1.1.0-альфа05
15 сентября 2021 г.
androidx.profileinstaller:profileinstaller:1.1.0-alpha05
выпущен. Версия 1.1.0-alpha05 содержит эти коммиты.
Исправления ошибок
- Исправлено перекодирование профилей Android Nougat и Android Oreo для APK-файлов Multidex.
Версия 1.1.0-альфа04
1 сентября 2021 г.
androidx.profileinstaller:profileinstaller:1.1.0-alpha04
выпущен. Версия 1.1.0-alpha04 содержит эти коммиты.
Исправления ошибок
- Исправьте
ProfileInstaller
, чтобы приложениям, использующим базовые профили, было проще запускать MacroBenchmarks с помощьюCompilationMode.BaselineProfile
. ( I42657 , б / 196074999 )
Версия 1.1.0-альфа03
18 августа 2021 г.
androidx.profileinstaller:profileinstaller:1.1.0-alpha03
выпущен. Версия 1.1.0-alpha03 содержит эти коммиты.
Исправления ошибок
- Измените поведение пропуска профиля, чтобы записать PackageInfo.lastUpdatedTime в файл в каталоге файлов приложения и сравнить его перед установкой профиля при следующем запуске. ( Ib93d1 )
- Настройте формат профиля на устройствах P, Q, R в соответствии с требованиями ART ( I84e89 ).
Версия 1.1.0-альфа02
4 августа 2021 г.
androidx.profileinstaller:profileinstaller:1.1.0-alpha02
выпущен. Версия 1.1.0-alpha02 содержит эти коммиты.
Обновлен для совместимости с Compose 1.1.0-alpha01.
Версия 1.1.0-альфа01
21 июля 2021 г.
androidx.profileinstaller:profileinstaller:1.1.0-alpha01
выпущен. Версия 1.1.0-alpha01 содержит эти коммиты.
Исправления ошибок
- Исправлена ошибка, приводившая к срабатыванию строгого режима в некоторых случаях.
Версия 1.0
Версия 1.0.4
13 октября 2021 г.
Выпущен androidx.profileinstaller:profileinstaller:1.0.4
. Версия 1.0.4 содержит эти коммиты.
- Обновлено для поддержки Compose 1.0.4.
Версия 1.0.3
29 сентября 2021 г.
androidx.profileinstaller:profileinstaller:1.0.3
выпущен. Версия 1.0.3 содержит эти коммиты.
- Обновлено для поддержки Compose 1.0.3.
Версия 1.0.2
1 сентября 2021 г.
androidx.profileinstaller:profileinstaller:1.0.2
выпущен. Версия 1.0.2 содержит эти коммиты.
Исправления ошибок
- Добавлено перекодирование профилей для устройств P, Q, R. Это изменение означает, что эти устройства будут перекодировать профиль, гарантируя, что записанный профиль всегда будет доступен для использования ART. Раньше на этих платформах перекодирование пропускалось, что иногда приводило к тому, что ART не могла обработать исходный профиль. Никаких изменений в API разработчика.
Версия 1.0.1
4 августа 2021 г.
androidx.profileinstaller:profileinstaller:1.0.1
выпущен. Версия 1.0.1 содержит эти коммиты.
Обновлено для совместимости с Compose 1.0.1.
Версия 1.0.0
28 июля 2021 г.
androidx.profileinstaller:profileinstaller:1.0.0
выпущен. Версия 1.0.0 содержит эти коммиты.
Основные особенности версии 1.0.0
Установщик профилей — это новая библиотека, которая позволяет библиотекам и приложениям определять «Правила профиля» и объединять информацию профиля ART с APK, и эта библиотека установит эти профили после запуска приложения. Это можно использовать для повышения производительности приложений.
Пожалуйста, ознакомьтесь с подробными примечаниями к выпуску 1.0.0-beta01 для получения дополнительной информации о том, что представляют собой эти правила профиля и как они работают.
Версия 1.0.0-rc02
14 июля 2021 г.
androidx.profileinstaller:profileinstaller:1.0.0-rc02
выпущен. Версия 1.0.0-rc02 содержит эти коммиты.
Версия 1.0.0-rc01
1 июля 2021 г.
androidx.profileinstaller:profileinstaller:1.0.0-rc01
выпущен. Версия 1.0.0-rc01 содержит эти коммиты.
Это RC-версия без изменений по сравнению с бета-версией.
Версия 1.0.0-бета01
16 июня 2021 г.
androidx.profileinstaller:profileinstaller:1.0.0-beta01
выпущен. Версия 1.0.0-beta01 содержит эти коммиты.
Назначение библиотеки
Установщик профилей — это новая библиотека, которая позволяет библиотекам и приложениям определять «Правила профиля» и объединять информацию профиля ART с APK, и эта библиотека установит эти профили после запуска приложения. Это можно использовать для повышения производительности приложений.
Установка этого профиля выполняется с помощью библиотеки androidx.startup. Если по какой-либо причине вы хотите отключить установку профиля, они могут изменить манифест, чтобы удалить его:
<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>
Это особенно полезно, если у вашего приложения нетривиальные требования к запуску и вы хотите запустить установку профиля вручную с помощью API ProfileInstaller.writeProfile
.
Что такое правила профиля?
Правила профиля для библиотеки указаны в текстовом файле
baseline-prof.txt
расположенном в каталогеsrc/main
или его эквиваленте. В файле указывается правило для каждой строки, где правило в данном случае представляет собой шаблон для сопоставления с методами или классами в библиотеке. Синтаксис этих правил представляет собой расширенный набор удобочитаемого формата профиля ART, который используется при использованииadb shell profman --dump-classes-and-methods ...
. Эти правила принимают одну из двух форм и ориентированы либо на методы, либо на классы.Правило метода будет иметь следующий шаблон:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
И правило класса будет иметь следующий шаблон:
<CLASS_DESCRIPTOR>
Здесь
<FLAGS>
— это один или несколько символовH
,S
иP
, указывающие, следует ли пометить этот метод как «Горячий», «Запуск» или «После запуска».<CLASS_DESCRIPTOR>
— это дескриптор класса, которому принадлежит целевой метод. Например, классandroidx.compose.runtime.SlotTable
будет иметь дескрипторLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
является сигнатурой метода и включает имя, типы параметров и типы возвращаемых данных метода. Например, методfun isPlaced(): Boolean
вLayoutNode
имеет подписьisPlaced()Z
.Эти шаблоны могут содержать подстановочные знаки (
**
,*
и?
), чтобы одно правило охватывало несколько методов или классов.
Что делают правила?
Метод с флагом
H
указывает, что этот метод является «горячим» и его следует скомпилировать заранее.Метод с флагом
S
указывает, что этот метод вызывается при запуске и его следует скомпилировать заранее, чтобы избежать затрат на компиляцию и интерпретацию метода во время запуска.Метод с флагом
P
указывает, что это метод, который вызывается после запуска.Класс, присутствующий в этом файле, указывает на то, что он используется во время запуска и должен быть предварительно выделен в куче, чтобы избежать затрат на загрузку классов.
Как это работает?
Библиотеки могут определять эти правила, которые будут упакованы в артефакты AAR. Когда затем создается APK, включающий эти артефакты, эти правила объединяются, и объединенные правила используются для создания компактного двоичного профиля ART, специфичного для APK. Затем ART может использовать этот профиль при установке APK на устройствах, чтобы заранее скомпилировать определенное подмножество приложения и повысить производительность приложения, особенно при первом запуске. Обратите внимание, что это не повлияет на отлаживаемые приложения.
Файлы правил должны называться
baseline-prof.txt
и размещаться в корневом каталоге вашего основного набора исходного кода (это должен быть родственный файл вашему файлуAndroidManifset.xml
).В настоящее время эти файлы будут использоваться только в том случае, если вы используете Android Gradle Plugin 7.0+, и в настоящее время они включены только с помощью флага в вашем
gradle.properties
:# Enable adding baseline-prof.txt files to AAR artifacts, and binary profiles to APKs android.experimental.enableArtProfiles=true
Профили требуют баланса
- Правильно созданные профили, в которых правильно расставлены приоритеты методов и классов, которые будут находиться в пути запуска и критически важны для производительности, дадут наилучшие результаты, однако включение слишком большого количества методов или классов в профили может в конечном итоге иметь отрицательный эффект с точки зрения потребления памяти и использования диска. , поэтому при определении собственных правил профиля рекомендуется начинать консервативно.