У Android было замечательное лицо, такое, что сделало бы заголовки для других проектов, но им удалось унести это, чтобы никто не заметил. По сути, после планирования создания собственного компилятора Google вернулась к старой технологии Dex и теперь занимается ее улучшением. Последняя версия Dex D8 находится в последней бета-версии Android Studio 3.0.
Android использует очень простой способ заставить приложение работать. Сначала Java, или в наши дни Kotlin, компилируется в стандартный байт-код Java с использованием стандартных компиляторов Java или Kotlin. Затем компилятор Dex преобразует байтовый код в Dalvik для запуска на виртуальной машине Dalvik или ART. Забавно то, что ART компилирует байтовый код Dalvik в машинный код, так что это очень длинная цепочка компиляторов, чтобы перейти от исходного кода к чему-то, что работает.
Первоначальный план заключался в том, чтобы отказаться от Dex, потому что изменения при переходе на Java 8 потребуют большой работы. Идея заключалась в том, чтобы реализовать одношаговый компилятор Jack от Java до Dex. Однако эта идея была отброшена, и Декс вернулся на сцену. Теперь он был обновлен для поддержки функций Java 8, а также поддерживает код, созданный Kotlin. Конечно, компилятор Джека был компилятором только для Java, так что Kontlin не поддерживал этот ныне заброшенный путь.
Сначала все казалось немного спешкой, чтобы подготовить Dex к своей новой роли, и все это привело к обновлению версии Android Studio с десятичной запятой до версии 3, которая в настоящее время находится в стадии бета-тестирования.
Я должен сказать, что лично я считаю, что всему проекту Android в настоящее время не хватает внимания, а Android Studio в настоящее время представляет собой чрезмерно амбициозный беспорядок, но я продолжаю надеяться, что все станет лучше по мере перехода от бета-версии к финальной версии и что после версии 3 вещи могут замедлиться, и у нас может быть некоторая консолидация.
Похоже, что Dex успокаивается, потому что у команды, работающей над этим, есть время, чтобы сосредоточиться на оптимизации. Последний компилятор Dex, D8, который находится в последней бета-версии Android Studio 3, работает быстрее и создает более компактный код.
Сокращение времени компиляции на пять секунд из 16 секунд — это хорошо. Размер файлов уменьшился с 50 до 48 МБ, что не так уж и впечатляюще, но в правильном направлении. В очень честном заявлении в блоге разработчиков говорится:
Мы проверили корректность и производительность D8 в ряде приложений, и результаты обнадеживают. Мы достаточно уверены в результатах и переходим на использование D8 в качестве компилятора dex по умолчанию для построения AOSP.
Я полагаю, что если он достаточно хорош для AOSP, он достаточно хорош для остальных из нас, но «ряд приложений» звучит не так строго, как можно было бы надеяться.
Вы можете попробовать, установив
android.enableD8 = true
в файле свойств Gradle.
Декс становится быстрее — это хорошая новость, потому что. несмотря на улучшения в мгновенном запуске. в разработке Android ничего особенного не происходит мгновенно.
Майк Джеймс является автором книги «Программирование Android: начиная с приложения», 2-е изд. (I / O Press) ISBN: 978-1871962512, руководства для начинающих по использованию Android Studio, которое охватывает последнюю версию Android Studio 2.3.