Size: a a a

Android Dev Подкаст

2019 June 10

AE

Alexander Efremenkov in Android Dev Подкаст
Статья совершенно неверно отражает dex2oat на НЕ-системные приложения. .oat формат используется для system-preinstalled процессов. Для пользовательских же процессов в процессе установки/запуска формируется 3 файла: .vdex, .odex, .art.
источник

AE

Alexander Efremenkov in Android Dev Подкаст
.vdex появился позже
источник

AE

Alexander Efremenkov in Android Dev Подкаст
.odex был всегда, это тот самый горячий профиль времени исполнения
источник

AE

Alexander Efremenkov in Android Dev Подкаст
В прочем, я уже пересказываю подкаст
источник

YV

Yonatan V.Levin in Android Dev Подкаст
"Android performs these optimizations using a tool called dex2oat. When you install an application on a device running Android 5.0 or later, dex2oat converts the Dalvik code located in the .ODEX file to native code and stores it in an OAT file." ,
Где тут VDex упомянуто?
источник

DS

Daniel Serdyukov in Android Dev Подкаст
Yonatan V.Levin
"Android performs these optimizations using a tool called dex2oat. When you install an application on a device running Android 5.0 or later, dex2oat converts the Dalvik code located in the .ODEX file to native code and stores it in an OAT file." ,
Где тут VDex упомянуто?
ART comprises a compiler (the dex2oat tool) and a runtime (libart.so) that is loaded for starting the Zygote. The dex2oat tool takes an APK file and generates one or more compilation artifact files that the runtime loads. The number of files, their extensions, and names are subject to change across releases, but as of the Android O release, the files being generated are:

.vdex: contains the uncompressed DEX code of the APK, with some additional metadata to speed up verification.
.odex: contains AOT compiled code for methods in the APK.
.art (optional): contains ART internal representations of some strings and classes listed in the APK, used to speed application startup.
источник

DS

Daniel Serdyukov in Android Dev Подкаст
источник

DS

Daniel Serdyukov in Android Dev Подкаст
там же кстати написано про различия в AOT компиляции для системных и не системных приложений
источник

YV

Yonatan V.Levin in Android Dev Подкаст
Daniel Serdyukov
ART comprises a compiler (the dex2oat tool) and a runtime (libart.so) that is loaded for starting the Zygote. The dex2oat tool takes an APK file and generates one or more compilation artifact files that the runtime loads. The number of files, their extensions, and names are subject to change across releases, but as of the Android O release, the files being generated are:

.vdex: contains the uncompressed DEX code of the APK, with some additional metadata to speed up verification.
.odex: contains AOT compiled code for methods in the APK.
.art (optional): contains ART internal representations of some strings and classes listed in the APK, used to speed application startup.
Это сейчас. Мы говорим про Лолипоп и Маршмело когда был только АОТ.
источник

YV

Yonatan V.Levin in Android Dev Подкаст
״ART uses ahead-of-time (AOT) compilation, and starting in Android 7.0 (Nougat or N), it uses a hybrid combination of AOT, just-in-time (JIT) compilation, and profile-guided compilation.״
вот еще одно подтверждение
с 5.0 до 7.0 использовался АОТ только
источник

Sergey λ in Android Dev Подкаст
источник

AE

Alexander Efremenkov in Android Dev Подкаст
Если сходить и погрепать сорцы - то можно увидеть, что jit и его дескрипторы в 6.* бранче никуда не делись.

А первый абзац этой статьи значит, что JIT начал использоваться для profile guided оптимизациях (то есть для последующего использования JIT профиля для AOT). А до N - AOT и JIT жили отдельно.

Если бы всё обходилось одним первичным AOT (при установке, т.е. холодный профиль, который ничего не знает об исполняемой программе) - на интерпретаторе код исполнялся было бы в разы медленнее, чем на 4.*
источник

Sergey λ in Android Dev Подкаст
если ещё актуально 😄
источник

МС

Мишаня Спицин in Android Dev Подкаст
источник

МС

Мишаня Спицин in Android Dev Подкаст
Если JIT был в 5рке и 6рке, зачем тогда писать:
In Android 7.0, we've added a Just in Time (JIT) compiler with code profiling to ART, which lets it constantly improve the performance of Android apps as they run. The JIT compiler complements ART's current Ahead of Time (AOT) compiler and helps improve runtime performance, save storage space, and speed up app updates and system updates.
источник

AE

Alexander Efremenkov in Android Dev Подкаст
Потому что чёрным по белому написано, что теперь профиль из JIT компилятора будет дополнять AOT профиль при последующих использованиях, в том числе для горячего кода.
источник

AE

Alexander Efremenkov in Android Dev Подкаст
А до N горячий код дох вместе с процессом, никак не дополняя AOT профиль
источник

AE

Alexander Efremenkov in Android Dev Подкаст
После 7 - AOT профиль дополняется JIT компилятором
источник

AE

Alexander Efremenkov in Android Dev Подкаст
А вообще - все комбинации подобного процесса чисто  OEM специфичны, какой-нибудь самсунг может, к примеру, выкрутить флаги билда рантайма так, что эта схема будет работать иначе.
источник

EM

Eugene Matsyuk in Android Dev Подкаст
Ребят, если вы хотите погрузиться в автотесты. С чего начать, какую боль пройти, и как ее пройти, то смело смотрите вот это видео!
Мы с Димой и ребятами постарались вложить в этот доклад самое важное и лучшее)
Спойлер: Очень скоро будет выпущен фреймворк, который решает много боли =)
https://youtu.be/q_8UUhVDV7c
источник