Добавить в корзинуПозвонить
Найти в Дзене

Мой первый KMP проект. С нуля до прода. Личный опыт. Часть 2. Настриваем ИИ шаблоны для разработки

Шаг 1. Обновление проекта до AGP 9.0 Сompose Preview не работал, пришлось апгрейтися на AGP 9.0 и новый kmp плагин и вот чудо, preview в common коде стал работать. Полезные ссылки: Код шага: Шаг 2. Делаем сетевой core слой Понял, что если создаю templates, то нужно создать и сетевой слой. Код шага: Шаг 3. Добавляем дизайн систему и базовые компоненты Важный момент, dynamicColor не поддерживается, но можно реализовать через actual/expect. Код шага: Шаг 4. Делаем эталонную реализацию экрана Применяем архитектуру, выстраиваем структуру модулей, реализуем взаимодействие между разными слоями приложения. Интересные моменты, которые я выявил: 1. Нельзя использовать bom файлы. С такими зависимостями проект не скомпилируется. Решение убрать bom, его можно использовать только в jvm артефактах, если надо viewmodeldelegates-bom = { module = "com.yugyd.viewmodeldelegates:viewmodeldelegates", version.ref = "viewmodeldelegates" } 2. Sync иногда падает, поэтому лучше пересобирать build, потом все рабо

Шаг 1. Обновление проекта до AGP 9.0

Сompose Preview не работал, пришлось апгрейтися на AGP 9.0 и новый kmp плагин и вот чудо, preview в common коде стал работать.

Полезные ссылки:

Updating multiplatform projects with Android apps to use AGP 9 | Kotlin Multiplatform

Код шага:

Update to AGP 9 and new kmp plugins · yugyd/quiz-platform-maker@88b8909

Шаг 2. Делаем сетевой core слой

Понял, что если создаю templates, то нужно создать и сетевой слой.

Код шага:

Add network core with Ktor · yugyd/quiz-platform-maker@ad78d21

Шаг 3. Добавляем дизайн систему и базовые компоненты

Важный момент, dynamicColor не поддерживается, но можно реализовать через actual/expect.

Код шага:

Add design system core and icons module · yugyd/quiz-platform-maker@d6f183d

Шаг 4. Делаем эталонную реализацию экрана

Применяем архитектуру, выстраиваем структуру модулей, реализуем взаимодействие между разными слоями приложения.

Интересные моменты, которые я выявил:

1. Нельзя использовать bom файлы. С такими зависимостями проект не скомпилируется. Решение убрать bom, его можно использовать только в jvm артефактах, если надо

viewmodeldelegates-bom = { module = "com.yugyd.viewmodeldelegates:viewmodeldelegates", version.ref = "viewmodeldelegates" }

2. Sync иногда падает, поэтому лучше пересобирать build, потом все работает в случае с ошибкой в синке

3. Очень много самого актуального АПИ в обычном разраобтке это риск фактор. Но тут особенность kmp что функционал добавляется и тд, приходится сидеть на самых актуальных версиях. Например, beta версия koin или бета версия навигации, потому что все нужно для Navigation 3.

4. Нет привычных R классов. Генерация идет не по пакету, а по названию модуля. Пример, "import quizmaker.product.core.designsystem_icons.generated.resources.Res".

5. Второй момент, пакет я сделал, но ресурсы internal и нельзя использовать в других модулях.

Решение: publicResClass = true

6. Сompose Preview не работал, пришлось апгрейтнуться на AGP 9.0 и новый KMP плагин и вот чудо, preview в common коде стал работать.

Я написал тестовый экран. В нем сделал разные кейсы CRUD с различными источниками данных.

Полезные ссылки:

Using multiplatform resources in your app | Kotlin Multiplatform

Код шага:

Add sample screen · yugyd/quiz-platform-maker@c532e50

Шаг 5. Подготовительные работы. Генерация промпта и создание templates для ИИ

По шаблонам пока решил не использовать ftl формат, так приложение небольшое из нескольких экранов, принял решение лучше быстро реализовать.

В качестве агента мой собственный CLI инструмент на базе API ChatGPT 5.2.

Структуру промпта всегда использую такую, по моему опыту она дает приемлемый ответ на все случаи жизни.

Код шага:

Add an AI prompt for generating a feature · yugyd/quiz-platform-maker@276f5a3

#технологии #it #dev #Android #AndroidРазработка #Kotlin #Java #OpenSource #РазработкаПриложений #MobileDevelopment #Разработка #Приложения

#KMP #KotlinMultiplatform #Мультиплатформа