TGViewer
AppFiles - Mobile Development AppFiles - Mobile Development @applib · 2.18K subscribers
Post #3976 346
Kotlin Symbol Processing: создаём свой процессор

Dagger/Hilt генерирует DI‑классы, Room генерирует DAO и сущности, Moshi генерирует JSON и т.д. Это экономит тонны времени. Но долгие годы для Kotlin‑проектов приходилось использовать KAPT — Kotlin Annotation Processing, прослойку для совместимости с Java‑аннотациями.

KAPT работал, но имел свои минусы. Он генерирует Java‑стабы из Kotlin‑кода и прогоняет стандартный Java Annotation Processor. Эта махинация замедляет компиляцию: сначала компилятор Kotlin должен переварить ваши исходники в промежуточные Java‑классы, потом снова всё это компилировать. Плюс, KAPT порой криво понимал Kotlin фичи, потому что мыслил категориями Java.

И вот появился Kotlin Symbol Processing (KSP). Это библиотека, которая позволяет писать процессоры напрямую для Kotlin. Обещают до 2х ускорения сборки по сравнению с KAPT, полную поддержку всех фич языка и мультиплатформенность.

Статья: https://habr.com/ru/companies/otus/articles/991044/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
More from @applib
  1. Oct 14, 2026Куда девается место на диске: Xcode, рабочие деревья и ИИ-агенты Несколько недель назад мо…
  2. Oct 14, 2026Как эффективно отлаживать код, когда вы перестали его понимать С развитием AI-кодинга возн…
  3. Oct 14, 2026CodexKit - SDK для создания агентов CodexKit — это SDK на Swift для встраивания агентов в…
  4. Oct 13, 2026Куда делись все вакансии для Android-разработчиков? Я всё думаю о том, насколько иначе рын…
  5. Oct 13, 2026Мы научили агента писать тесты так, как их пишет наша команда Каждому iOS-разработчику зна…
  6. Oct 13, 2026Pixelate - размытие контента в Compose Pixelates преобразует контент Compose Multiplatform…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →