~/VibeHandbook

Приложения / Mobile

developer.android.com

Android (Jetpack Compose)

Что это такое

Jetpack Compose — это современный декларативный инструментарий для построения UI в Android. Вместо того чтобы описывать макеты в XML и менять их через ссылки на view, вы пишете composable-функции на Kotlin, которые описывают UI для заданного состояния, и фреймворк перерисовывает экран по мере изменения этого состояния. Сейчас это рекомендуемый Google способ создавать нативные интерфейсы Android, и он работает вместе с более широким набором библиотек Jetpack для навигации, жизненного цикла и данных.

Сильные стороны

  • Декларативный и нативный для Kotlin — UI и логика живут на одном языке, без XML-макетов.
  • Рекомпозиция, управляемая состоянием, автоматически поддерживает экран в актуальном виде.
  • Меньше шаблонного кода, чем в старой системе View; мощные, компонуемые строительные блоки.
  • Встроенные компоненты Material Design, темизация, анимация и доступность.
  • Совместим с существующим кодом на основе View, поэтому внедрять его можно постепенно.

Компромиссы

  • Поведение рекомпозиции бывает неочевидным; неправильно размещённое состояние вызывает лишние перерисовки или баги.
  • Требует достаточно свежего инструментария Android и настройки минимального SDK.
  • Ментальная модель отличается от старого императивного подхода, поэтому есть кривая обучения.
  • Некоторые зрелые библиотеки только для View по-прежнему требуют обёрток для совместимости.

Лучше всего подходит для

Jetpack Compose — правильный выбор для новых нативных приложений Android, где вам нужна современная, поддерживаемая кодовая база и быстрые итерации. Он естественно сочетается с Kotlin и корутинами.

Соответствие vibe coding

Compose хорошо подходит для разработки с помощью ИИ, потому что composable-функции — это маленькие, чистые функции от состояния, которые легко генерировать, предпросматривать и проверять по отдельности. Попросите ассистента выносить состояние из composable-функций (передавать значения вниз, события вверх), держать каждую composable-функцию сфокусированной и строить списки из иммутабельных данных. Аннотация @Preview позволяет осмотреть сгенерированный UI, не запуская всё приложение, что укорачивает цикл обратной связи.

@Composable
fun Counter() {
    var count by remember { mutableStateOf(0) }
    Column {
        Text("Count: $count")
        Button(onClick = { count++ }) { Text("Add") }
    }
}