Ускоренная сборка Kotlin с помощью Kotlin Symbol Processing 1.0

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Kotlin Symbol Processing (KSP), наш новый инструмент для создания легких плагинов компилятора на языке Kotlin, теперь стабилен! KSP обладает функциональностью, схожей с Kotlin Annotation Processing Tool (KAPT), однако работает в 2 раза быстрее, предоставляет прямой доступ к конструкциям языка Kotlin и поддерживает многоплатформенные задачи.

За последние несколько месяцев KSP пережил 32 релиза, в которых было исправлено более 162 ошибок, о которых сообщили представители сообщества и которые были исправлены нашей командой. Если вы ждали, когда сможете перейти на использование KSP, сейчас пришло самое время проверить его.

Почему мы создали KSP

В команде Android мы регулярно спрашиваем разработчиков: "Что вас больше всего раздражает в написании приложений на сегодняшний день? Один из главных вопросов, который неоднократно поднимается, — это скорость сборки. На протяжении многих лет мы постоянно улучшали инструментарий сборки Android, и сегодня мы рады добавить к этим улучшениям KSP. KSP — это следующее поколение обработки аннотаций в Kotlin: он значительно повысит скорость сборки для разработчиков Kotlin, и в отличие от KAPT, он предлагает поддержку Kotlin/Native и Kotlin/JS.

«Добавление поддержки KSP в Room улучшило скорость компиляции, а также позволило Room лучше понимать код Kotlin, например, способность дженериков принимать нулевые значения, что было невозможно с KAPT. Это также открывает новые возможности, такие как генерация кода Kotlin, что позволит Room в будущем иметь лучший пользовательский опыт работы с Kotlin.» — Игит Бояр, инженер-программист, Android

Почему KSP работает быстрее?

Kotlin Annotation Processing Tool (KAPT) работает с инфраструктурой обработки аннотаций Java, чтобы большинство процессоров аннотаций языка Java работали в Kotlin "из коробки". Для этого KAPT компилирует код Kotlin в Java-заглушки, сохраняющие информацию, которая важна процессорам аннотаций Java. Однако создание таких заглушек требует больших затрат и означает, что компилятор должен разрешить все символы в вашей программе несколько раз (один раз для генерации заглушек, а затем еще раз для фактической компиляции).

KSP уходит от модели генерации заглушек, работая как плагин для компилятора Kotlin — он позволяет процессорам аннотаций читать и анализировать исходные программы и ресурсы непосредственно в Kotlin, вместо того чтобы требовать зависимости от инфраструктуры обработки аннотаций Java. Это значительно повышает скорость сборки (до 2 раз быстрее для Room, тестового приложения на Kotlin) и означает, что KSP можно использовать в средах, отличных от Android и JVM, таких как Kotlin/Native и Kotlin/JS.

Как начать работу

Чтобы начать применение KSP, загрузите проект KSP playground с GitHub, который показывает, как использовать KSP и как процессор аннотаций, и в виде пользовательского приложения/библиотеки:

  • Процессор аннотаций: Библиотека test-processor, использует шаблон конструктора в виде процессора KSP.

  • Библиотека пользователя: Каталог workload, который показывает, как использовать процессор конструктора (builder processor)  в Kotlin-проекте.

Если вы разработчик приложений, ознакомьтесь со списком поддерживаемых библиотек и руководством по быстрому запуску для переноса модуля из KAPT в KSP.

Использование Moshi или Room с KSP

Если вы используете Moshi или Room в своем проекте, то уже сейчас можете попробовать KSP, внеся быстрое исправление в файл сборки вашего модуля. Например, чтобы использовать KSP-версию Room в модуле Gradle, достаточно заменить плагин KAPT на KSP и поменять местами зависимости KSP:

apply plugin: 'com.google.devtools.ksp'

dependencies {
  ...
  implementation "androidx.room:room-runtime:$room_version"
  kapt "androidx.room:room-compiler:$room_version"
  ksp "androidx.room:room-compiler:$room_version"

}

Ознакомьтесь с примечаниями к релизу Room для получения дополнительной информации.

Заключение

С выходом версии 1.0 KSP скорость сборки ваших Kotlin-проектов будет возрастать по мере перехода от библиотек, основанных на KAPT. Мы также обновили ряд библиотек для Android, доступных уже сегодня и обеспечивающих значительное повышение производительности.


Материал подготовлен в рамках курса "Kotlin QA Engineer". Всех желающих приглашаем на demo-занятие «Тестирование нативных приложений на Kotlin Native». На занятии рассмотрим основы нативной разработки для Android/iOS, попробуем сделать и протестировать простое приложение по работе с данными на стороне платформы, а также научимся подключать сторонние библиотеки для Android/iOS (на примере OpenCV).
>> РЕГИСТРАЦИЯ

Источник: https://habr.com/ru/company/otus/blog/583234/


Интересные статьи

Интересные статьи

Drozer – обязательный инструмент в арсенале каждого пентестера. С его помощью можно быстро получить информацию о приложении и его слабых местах. Drozer предустановлен в Kali Linux и др...
Вы использовали когда-нибудь Hygen, автоматический генератор кода? Если еще нет, возможно, наш перевод откроет для вас новый полезный инструмент. Читать дальше → ...
Ваш сайт работает на 1С-Битрикс? Каждому клиенту вы даёте собственную скидку или назначаете персональную цену на товар? Со временем в вашей 1С сложилась непростая логика ценообразования и формирования...
Компании растут и меняются. Если для небольшого бизнеса легко прогнозировать последствия любых изменений, то у крупного для такого предвидения — необходимо изучение деталей.
PHP создан умирать. И все было бы хорошо, но в последнее время это сделать ему не дают. Год назад на хабре состоялся анонс инструмента RoadRunner, заставляющего PHP процесс выйти из бесконечног...