Spec-Zone.ru › Kotlin 2

Compose Hot Reload

Compose Hot Reload помогает визуализировать изменения интерфейса и экспериментировать с ними во время работы над проектом Compose Multiplatform. В отличие от стандартных предварительных просмотров Compose, которые помогают просматривать отдельные компоненты с тестовыми данными, Compose Hot Reload применяет изменения кода непосредственно к работающему приложению.

Для встроенного плагина Gradle Compose Hot Reload требуется Kotlin 2.1.20+ и целевая платформа JVM, совместимая с Java 21 или более ранней версией. Чтобы использовать все возможности Compose Hot Reload, рекомендуем установить плагин Kotlin Multiplatform для IDE, доступный для IntelliJ IDEA начиная с версии 2025.2.2 и Android Studio начиная с Otter 2025.2.1.

Пока мы изучаем возможность добавления поддержки других целевых платформ, вы уже можете использовать настольное приложение в качестве песочницы, чтобы быстро экспериментировать с изменениями интерфейса в общем коде, не прерывая работу.

Compose Hot Reload

Добавление Compose Hot Reload в проект

Compose Hot Reload можно добавить двумя способами:

  • создать проект с нуля в IntelliJ IDEA или Android Studio

  • добавить плагин Gradle в существующий проект

Создание с нуля

В этом разделе описаны шаги по созданию многоплатформенного проекта с целевой настольной платформой в IntelliJ IDEA и Android Studio. После создания проекта Compose Hot Reload будет добавлен автоматически.

  1. В кратком руководстве выполните инструкции по настройке среды для разработки на Kotlin Multiplatform.

  2. В IDE выберите Файл | Создать | Проект.

  3. На панели слева выберите Kotlin Multiplatform.

  4. В окне Новый проект укажите значения в полях Имя, Группа и Артефакт.

  5. Выберите целевую платформу Desktop и нажмите Создать.

    Create multiplatform project with desktop target

Для существующего проекта

Начиная с Compose Multiplatform 1.10.0, плагин Compose Hot Reload включен в поставку и активирован по умолчанию для всех проектов, в которых есть целевая настольная платформа.

Если в вашем проекте уже есть целевая настольная платформа, обновитесь до Compose Multiplatform версии 1.10.0 или более поздней и пользуйтесь возможностями Compose Hot Reload сразу после установки.

Хотя плагин включен по умолчанию, вы всё равно можете явно объявить плагин Compose Hot Reload, чтобы использовать конкретную более раннюю версию.

Более ранние версии Compose Multiplatform

В многоплатформенных проектах, использующих Compose Multiplatform версии ниже 1.10.0, необходимо настроить целевую настольную платформу, а затем явно добавить плагин Compose Hot Reload. В инструкциях в качестве примера используется проект из руководства Создание приложения с общей логикой и интерфейсом.

  1. Добавьте целевую настольную платформу: создайте каталог desktopApp, объявите функцию main() и предоставьте реализации actual. Если в вашем проекте уже есть целевая настольная платформа, этот шаг можно пропустить. В качестве примера см. Добавление точки входа JVM.

  2. Обновите каталог версий, указав последнюю версию Compose Hot Reload (см. раздел Выпуски). В файле gradle/libs.versions.toml добавьте следующий код:

    composeHotReload = { id = "org.jetbrains.compose.hot-reload", version.ref = "composeHotReload"}
    

    Подробнее об использовании каталога версий для централизованного управления зависимостями проекта см. в нашем руководстве по рекомендациям по работе с Gradle.

  3. В файле build.gradle.kts родительского проекта (ComposeDemo/build.gradle.kts) добавьте следующий код в блок plugins {}:

    plugins {
        alias(libs.plugins.composeHotReload) apply false
    }
    

    Это предотвратит многократную загрузку плагина Compose Hot Reload в каждом из подпроектов.

  4. В файле build.gradle.kts подпроекта, содержащего многоплатформенное приложение (ComposeDemo/sharedUI/build.gradle.kts), добавьте следующий код в блок plugins {}:

    plugins { 
        alias(libs.plugins.composeHotReload)
    }
    
  5. Проект должен запускаться на JetBrains Runtime (JBR) — форке OpenJDK, поддерживающем расширенное переопределение классов. Compose Hot Reload может автоматически установить совместимую версию JBR для вашего проекта.

    Последняя версия JetBrains Runtime поддерживает только Java 21: если добавить Compose Hot Reload в проект, совместимый только с Java 22 или более поздней версией, при запуске проекта возникнет ошибка связывания.

    Чтобы разрешить автоматическую установку, добавьте следующий плагин Gradle в файл settings.gradle.kts:

    plugins {
        id("org.gradle.toolchains.foojay-resolver-convention") version "1.2.0"
    }
    
  6. Нажмите кнопку Синхронизировать изменения Gradle, чтобы синхронизировать файлы Gradle: Synchronize Gradle files

Использование Compose Hot Reload

  1. В исходном наборе desktopApp откройте файл main.kt и обновите функцию main():

    fun main() = application {
        Window(
            onCloseRequest = ::exitApplication,
            alwaysOnTop = true,
            title = "composedemo",
        ) {
            App()
        }
    }
    

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

  2. Откройте файл App.kt и обновите компонуемый элемент Button:

    Button(onClick = { showContent = !showContent }) {
        Column {
            Text(Greeting().greet())
        }
    }
    

    Теперь текст кнопки задается функцией greet().

  3. Откройте файл Greeting.kt и обновите функцию greet():

     fun greet(): String {
         return "Hello!"
     }
    
  4. Откройте файл main.kt и нажмите значок Запуск на поле слева от кода. Выберите Запустить 'desktopApp' с Compose Hot Reload.

    Run Compose Hot Reload from gutter
    First Compose Hot Reload on desktop app
  5. Измените строку, возвращаемую функцией greet(), а затем сохраните все файлы (⌘ S/Ctrl+S), чтобы увидеть, как настольное приложение обновится автоматически.

    Compose Hot Reload

    Также можно запустить перезагрузку вручную, нажав назначенную клавишу быстрого доступа или кнопку Перезагрузить интерфейс. Изменить поведение запуска можно на странице Настройки | Инструменты | Compose Hot Reload.

Поздравляем! Вы увидели Compose Hot Reload в действии. Теперь можно экспериментировать с изменением текста, изображений, форматирования, структуры интерфейса и многого другого, не перезапуская конфигурацию запуска настольного приложения после каждого изменения.

Сервер MCP для ИИ-агентов

Начиная с Compose Multiplatform 1.12.0, Compose Hot Reload включает встроенный сервер Model Context Protocol (MCP). Сервер MCP позволяет ИИ-агентам для программирования взаимодействовать с работающим приложением Compose: запускать Compose Hot Reload, просматривать отрисованный интерфейс, изучать семантическую структуру, имитировать пользовательский ввод и читать журналы выполнения. Если приложение открывает несколько окон, агент может вывести их список и выбрать любое из них.

Это замыкает цикл обратной связи для ИИ-агентов при редактировании кода Compose. Вместо того чтобы полагаться на вас, который вручную проверяет результат после каждого изменения, агент может самостоятельно вносить изменения в код и проверять каждое из них.

Подключение ИИ-агента

Чтобы подключить ИИ-агента, настройте клиент MCP на запуск задачи Gradle hotMcpServer. Например, в .mcp.json:

{
  "mcpServers": {
    "compose-hot-reload": {
      "command": "./gradlew",
      "args": [
        "--no-daemon",
        "--quiet",
        "--console=plain",
        "hotMcpServer"
      ]
    }
  }
}

Gradle ищет задачи во всех подпроектах и сопоставляет короткое имя hotMcpServer с вариантами для конкретных целевых платформ, такими как hotMcpServerJvm или hotMcpServerDesktop.

Если в модуле определено несколько целевых платформ JVM, укажите полное имя задачи, чтобы избежать неоднозначности: :<module>:hotMcpServer<Target>, например :app:hotMcpServerDesktop или :composeApp:hotMcpServerJvm.

Доступные инструменты MCP

Сервер MCP предоставляет ряд инструментов, которые агент может вызывать, в том числе:

  • reload — перекомпилирует проект и выполняет горячую перезагрузку изменённых классов.

  • take_screenshot — делает снимок текущего состояния окна приложения.

  • get_semantic_tree — возвращает семантическое дерево Compose, позволяя агенту понять структуру интерфейса.

  • get_logs — возвращает последние записи журнала работающего приложения, включая исключения времени выполнения.

  • click, type_text и scroll — имитируют пользовательский ввод для проверки интерактивных сценариев.

Полный список инструментов MCP и их параметров см. в файле README Compose Hot Reload.

Получение помощи

Если у вас возникли проблемы при использовании Compose Hot Reload, сообщите нам о них, создав задачу на GitHub.

09 сентября 2026
Рекомендуемые IDE и редакторы кодаСправочник по DSL Gradle для многоплатформенных проектов

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/compose-hot-reload.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API