Kotlin Multiplatform на практике /Анна Жаркова /(2026)

Хотите писать код один раз и запускать его на Android и iOS, сохранив нативное качество и производительность? В этой книге вы освоите все шаги разработки полнофункциональных кросс-платформенных приложений с помощью Kotlin Multiplatform SDK – от создания проекта с нуля до миграции существующих нативных решений. Подробные инструкции, архитектурные подходы и реальные примеры помогут уверенно работать с общими модулями, многопоточностью, сетевым слоем, хранением данных и Compose Multiplatform для iOS.
Особое внимание уделено использованию нативного и общего кода в кросс-платформенном приложении, применению expect/actual, тестированию с Kotest, оптимизации разработки с помощью KSP, плагинов компилятора и ИИ-ассистентов. Вы узнаете, как создавать и публиковать собственные KMP-библиотеки, а также получите краткий справочник по Kotlin и Swift, чтобы уверенно ориентироваться в обеих экосистемах.
Оглавление:
От издательства .................................................................................................. 8
О книге ..... ...................................... ................................................................. 9
Для кого эта книга .............................................................................................. 9
Структура книги .................................................................................................. 9
Уславные обозначения ........................................................................................ 11
От автора ........................................................................................................... 12
ЧАСТЬ I
Вводная rлава. Почему Kotlin Multiplatform ........................................................... 14
Польза кросс-nлатформенной разработки ............................................................ 14
История Kotlin Multiplatfoгm ................................................................................ 14
Почему Kotlin Multiplatfoгm ................................................................................. 15
Когда не стоит использовать Kotlin Multiplatfoгm .................................................. 16
Дорожная карта развития Kotlin Mulltiplatfoгm ...................................................... 17
Глава 1. Создаем и настраиваем проект Kotlin Multiplatform .................................. 18
1.1. Создание проекта с нуля ............................................................................. 22
1.2. Настройка проекта и управление зависимостями ........................................... 25
1.3. Shаrеd-модуль приложения ......................................................................... 30
1.4. Создание проекта из существующего нативного ............................................... 37
1.5. Пробуем Fleet ................................................................................................ 39
1.5.1. Kotlin Mllltiplatfoгm Wizaгd ......................................................................... 40
Глава 2. Подготовка приложения на КМР. Старт разработки ..................................... 43
2.1. Каркас приложеия ................................................................................... 44
2.2. Архитектура кросс-платформенного приложения .......................................... 49
2.2.1. Нативное приложение и общий интерфейс ... ................................................. 49
2.2.2. Бизнес-логика экранного модуля ................................................................. 55
2.2.3. Общий архитектурный посредник ............................................................ 57
2.3. UI нативных приложений .......................................................................... 61
2.3.1. UI на SwiftUI .............................................................................................. 61
2.3.2. UI на Jetpack Compose ................................................................................. 64
Глава 3. Expect/actual. Общее и нативное ............................................................... 67
3.1. Интеропедия. Библиотека преобразований Kotlin в Objective-C/Swift ................ 69
3.1.1. Базовые примеры конвертации ..................................................................... 71
3.1.2. Ограничения конвертации Kotlin в Swift ...................................................... 75
3.2. Интерфейс или expect/actual ...................................................................................... 78
3.2.1. Приложение с нативным UI и общим интерфейсом для View .......................... 78
3.2.2. Интерфейс vs. expect/actual ............................................................................. 84
3.2.3. Платформа-специфичное поведение. Чтение файла .................................... 90
3.2.4. Связь типов ............................................................................................................ 93
3.3. Материал со звездочкой. Как работает под капотом интероп ......................... 94
3.4. Из Kotlin в Swift и обратно ....................................................................................... 104
Глава 4. Многопоточность в приложениях Kotlin Multiplatform .. ....... ....................... 109
4.1. Coroutines для iОS-разработчиков ......................................................................... 110
4.2. Совсем общая многопоточностъ. Настройка корутин для iOS и Kotlin/Native ......... 115
4.3. Использование корутин и скоупов ......................................................................... 119
4.4. Под капотом Dispatcheгs.IO ...................................................................................... 120
4.5. Материал со звездочкой. Внутренняя кухня многопоточности
в Kotlin/Native ....................................................................................................................... 122
4.6. Управление памятью ................................................................................................... 128
4.7. Соединяем suspend с iOS ........................................................................................... 129
4.8. Соединяем Kotlin Flow с iOS .................................................................................... 131
4.9. Применение на практике ............................................................................................ 138
Глава 5. Сетевой слой приложения КМР .... ....... ... ... .... ... ....... ... ....... ............... 140
5.1. Подготовка к работе ..................................................................................................... 140
5.2. Нативная реализация в commonMain .................................................................... 145
5.3. Общий сетевой клиент на Кtог ................................................................................ 151
5.4. Материал со звездочкой. Внутренняя кухня Кtог ............................................ 156
5.5. Применение на практике ............................................................................................ 160
Глава 6. Собираем приложение по частям ............................................................. 161
6.1. Соединение компонентов решения ................................................................... ..... 161
6.2. Миграция на готовую ViewModel ........................................................................... 167
6.3. Материал со звездочкой. Что nод капотом ViewModel ................................... 170
Глава 7. Связываем слои. DI в Kotlin Multiplatform .. .... ... ... ..... .. ....................... 174
7.1. Концепция общего Dependency Injection (DI) ................................................... 174
7.2. Начало работы с Kodein ............................................................................................. 181
7.3. Работа с Koin DI ............................................................................................................ 185
7.4. Синтаксические приемы для оптимизации кода ............................................... 190
7.5. Kotlin Inject ..................................................................................................................... 192
7.6. Daggeг Multiplatfoпn ................................................................................................... 193
7.7. Доработка приложения ............................................................................................... 194
Глава 8. Храним данные в приложениях Kotlin Multiplatform .................................... 197
8.1. Нативные хранилища iOS и Andгoid ..................................................................... 197
8.2. DataStoгe в Kotlin Multiplatform ............................................................................. 206
8.3. Room ......................................................................................................................... 208
8.3.1. Установка и подключение Rооm .................................................................. 209
8.3.2. Настройка хранилища Rооm ......................................................................... 212
8.3.3. Работа с хра11илищем ....................................................................................... 218
8.3.4. Ограничения Room КМР ................................................................................ 219
8.4. Применение на практике ............................................................................................ 221
Глава 9. Тестируем приложение Kotlin Multiplatform ................................................... 226
9.1. Kotliп Test ........................................................................................................................ 227
9.2. Работа с маками для комплексных тестов ........................................................... 232
9.3. Платформенные тесты ................................................................................................ 239
9.4. Expect/actual в тестах .................................................................................................. 242
9.5. Kotest ................................................................................................................................. 245
9.6. Применение на практике ............................................................................................ 248
Глава 10. Общий UI в приложениях Kotlin Multiplatform ............................................... 251
10.1. Концепция общего UI ............................................................................................... 251
10.1.1. Нативный UI в iOS ......................................................................................... 251
10.1.2. Нативный UI для Andгoid ............................................................................. 256
10.2. Общий UI ...................................................................................................................... 259
10.2.1. Общая обертка для UI ................................................................................... 261
10.2.2. Общий контрол в нативной обертке ......................................................... 262
10.2.3. Подключение через alias ............................................................................... 264
10.3. Compose Multiplatfoгm ............................................................................................. 265
10.3.1. Подключение и настройка СМР в проекте ....................................................... 267
10.3.2. Перенос и адаптация UI под Соmроsе Mulltiplatform .................................... 269
10.4. Навигация в проектах с Compose Mllltiplatform .................................................. 272
10.4.1. Навигация на PгeCompose ............................................................................ 273
10.4.2. Нативная навигация от JetBгains ................................................................... 279
10.5. Подключение нативноrо кода к Compose Multiplatfoпn .................................... 283
10.6. Sегvег Driven UI .......................................................................................................... 286
10.7. Альтернативные решения для общего UI .......................................................... 291
10.7.1. Библиотека Redwood ..................................................................................... 291
10.7.2. Библиотека Decompose ................................................................................. 292
ЧАСТЬ II
Глава 11. Полезные инструменты для Kotlin Multiplatform ........................................... 298
11.1. Аннотации и Kotlin Symbol Pгocessiвg ............................................................... 298
11.2. Плагины компилятора .............................................................................................. 305
11.3. ИИ-помошники для кросс-платформенной разработки ..................................... 310
11.3.1. Gemini .................................................................................................................. 311
11.3.2. GigaCode ............................................................................................................. 327
11.4. Полезные библиотеки для Kotlin Mtlltiplatform ................................................. 330
Глава 12. iOS для Android и Android для iOS. Шпаргалка по языкам ........................... 332
12.1. Kotlin для разработчиков iOS и Swift для разработчиков Andгoid ....................... 332
12.1.1. Переменные и константы ............................................................................. 332
12.1.2. Опционалы, нуллабельные типы .................................................................. 333
12.1.3. Потоки исполнения ........................................................................................ 335
12.1.4. Функции ............................................................................................................. 336
12.1.5. Структуры и классы ............. .......................................................................... 337
12.1.6. Расширения в Kotlin и Swift .......................................................................... 338
12.1.7. Enum, enum class, sealed class ....................................................................... 338
12.1.8. Синглтоны и статический функционал .......................................................... 339
12.1.9. Интерфейсы и протоколы ............................................................................ 340
12.2. Gradle для разработчиков iOS .............................................................................. 341
12.2.1. Settiлgs.gгadle .................................................................................................... 342
12.2.2. Build.gгadle. kts (project) ................................................................................ 343
12.2.3. Build.gгadle. kts shагеd-модуля .................................................................... 343
12.2.4. Gгadle. propeгties ............................................................................................... 346
Глава 13. Создаем кросс-платформенную библиотеку для приложения
Kotlin Multiplatform ................................................................................................. 347
13.1. Создание библиотеки ................................................................................................ 347
13.2. Сетевая библиотека для Kotlin в Multiplatform .................................................. 350
13.3. Сборка библиотеки .................................................................... ................................ 354
13.3.1. Сборка артефактов .......................................................................................... 354
13.3.2. Подключение к iОS - приложению ............................................................. 356
13.3.3. Подключение к приложению Andгoid ..................................................... 360
13.4. Упаковка и публикация артефакта для Maven ................................................ 362
13.5. Размещение библиотеки в публичном репозитории ..................................... 364
13.5.1. Github Packages ................................................................................................ 365
13.5.2. Публикация в Maven Centгal .................................................................... 366
Глава 14. Гайд-шпарrалка по миграции существующих нативных приложений ............. 372
14.1. Из Android в Kotlin Mllltiplatfoгm ........................................................................ 372
14.2. Миграuия существующего iОS-приложения ................................................... 376
Резюме .. ... ..... .. ... .... ... ... ... .... ... .. ..... .......... ... ....... ... .... ... ... ..... .. .......... ... 381
Что дальше .... ....... ... ... .............. .......... ....... ... ... ....... ... ....... ... .. ........ ..... 383
Перспективы Kotlin Multiplatform .... .......... .................... ....... ... ................. ... ... 384
О книге ..... ...................................... ................................................................. 9
Для кого эта книга .............................................................................................. 9
Структура книги .................................................................................................. 9
Уславные обозначения ........................................................................................ 11
От автора ........................................................................................................... 12
ЧАСТЬ I
Вводная rлава. Почему Kotlin Multiplatform ........................................................... 14
Польза кросс-nлатформенной разработки ............................................................ 14
История Kotlin Multiplatfoгm ................................................................................ 14
Почему Kotlin Multiplatfoгm ................................................................................. 15
Когда не стоит использовать Kotlin Multiplatfoгm .................................................. 16
Дорожная карта развития Kotlin Mulltiplatfoгm ...................................................... 17
Глава 1. Создаем и настраиваем проект Kotlin Multiplatform .................................. 18
1.1. Создание проекта с нуля ............................................................................. 22
1.2. Настройка проекта и управление зависимостями ........................................... 25
1.3. Shаrеd-модуль приложения ......................................................................... 30
1.4. Создание проекта из существующего нативного ............................................... 37
1.5. Пробуем Fleet ................................................................................................ 39
1.5.1. Kotlin Mllltiplatfoгm Wizaгd ......................................................................... 40
Глава 2. Подготовка приложения на КМР. Старт разработки ..................................... 43
2.1. Каркас приложеия ................................................................................... 44
2.2. Архитектура кросс-платформенного приложения .......................................... 49
2.2.1. Нативное приложение и общий интерфейс ... ................................................. 49
2.2.2. Бизнес-логика экранного модуля ................................................................. 55
2.2.3. Общий архитектурный посредник ............................................................ 57
2.3. UI нативных приложений .......................................................................... 61
2.3.1. UI на SwiftUI .............................................................................................. 61
2.3.2. UI на Jetpack Compose ................................................................................. 64
Глава 3. Expect/actual. Общее и нативное ............................................................... 67
3.1. Интеропедия. Библиотека преобразований Kotlin в Objective-C/Swift ................ 69
3.1.1. Базовые примеры конвертации ..................................................................... 71
3.1.2. Ограничения конвертации Kotlin в Swift ...................................................... 75
3.2. Интерфейс или expect/actual ...................................................................................... 78
3.2.1. Приложение с нативным UI и общим интерфейсом для View .......................... 78
3.2.2. Интерфейс vs. expect/actual ............................................................................. 84
3.2.3. Платформа-специфичное поведение. Чтение файла .................................... 90
3.2.4. Связь типов ............................................................................................................ 93
3.3. Материал со звездочкой. Как работает под капотом интероп ......................... 94
3.4. Из Kotlin в Swift и обратно ....................................................................................... 104
Глава 4. Многопоточность в приложениях Kotlin Multiplatform .. ....... ....................... 109
4.1. Coroutines для iОS-разработчиков ......................................................................... 110
4.2. Совсем общая многопоточностъ. Настройка корутин для iOS и Kotlin/Native ......... 115
4.3. Использование корутин и скоупов ......................................................................... 119
4.4. Под капотом Dispatcheгs.IO ...................................................................................... 120
4.5. Материал со звездочкой. Внутренняя кухня многопоточности
в Kotlin/Native ....................................................................................................................... 122
4.6. Управление памятью ................................................................................................... 128
4.7. Соединяем suspend с iOS ........................................................................................... 129
4.8. Соединяем Kotlin Flow с iOS .................................................................................... 131
4.9. Применение на практике ............................................................................................ 138
Глава 5. Сетевой слой приложения КМР .... ....... ... ... .... ... ....... ... ....... ............... 140
5.1. Подготовка к работе ..................................................................................................... 140
5.2. Нативная реализация в commonMain .................................................................... 145
5.3. Общий сетевой клиент на Кtог ................................................................................ 151
5.4. Материал со звездочкой. Внутренняя кухня Кtог ............................................ 156
5.5. Применение на практике ............................................................................................ 160
Глава 6. Собираем приложение по частям ............................................................. 161
6.1. Соединение компонентов решения ................................................................... ..... 161
6.2. Миграция на готовую ViewModel ........................................................................... 167
6.3. Материал со звездочкой. Что nод капотом ViewModel ................................... 170
Глава 7. Связываем слои. DI в Kotlin Multiplatform .. .... ... ... ..... .. ....................... 174
7.1. Концепция общего Dependency Injection (DI) ................................................... 174
7.2. Начало работы с Kodein ............................................................................................. 181
7.3. Работа с Koin DI ............................................................................................................ 185
7.4. Синтаксические приемы для оптимизации кода ............................................... 190
7.5. Kotlin Inject ..................................................................................................................... 192
7.6. Daggeг Multiplatfoпn ................................................................................................... 193
7.7. Доработка приложения ............................................................................................... 194
Глава 8. Храним данные в приложениях Kotlin Multiplatform .................................... 197
8.1. Нативные хранилища iOS и Andгoid ..................................................................... 197
8.2. DataStoгe в Kotlin Multiplatform ............................................................................. 206
8.3. Room ......................................................................................................................... 208
8.3.1. Установка и подключение Rооm .................................................................. 209
8.3.2. Настройка хранилища Rооm ......................................................................... 212
8.3.3. Работа с хра11илищем ....................................................................................... 218
8.3.4. Ограничения Room КМР ................................................................................ 219
8.4. Применение на практике ............................................................................................ 221
Глава 9. Тестируем приложение Kotlin Multiplatform ................................................... 226
9.1. Kotliп Test ........................................................................................................................ 227
9.2. Работа с маками для комплексных тестов ........................................................... 232
9.3. Платформенные тесты ................................................................................................ 239
9.4. Expect/actual в тестах .................................................................................................. 242
9.5. Kotest ................................................................................................................................. 245
9.6. Применение на практике ............................................................................................ 248
Глава 10. Общий UI в приложениях Kotlin Multiplatform ............................................... 251
10.1. Концепция общего UI ............................................................................................... 251
10.1.1. Нативный UI в iOS ......................................................................................... 251
10.1.2. Нативный UI для Andгoid ............................................................................. 256
10.2. Общий UI ...................................................................................................................... 259
10.2.1. Общая обертка для UI ................................................................................... 261
10.2.2. Общий контрол в нативной обертке ......................................................... 262
10.2.3. Подключение через alias ............................................................................... 264
10.3. Compose Multiplatfoгm ............................................................................................. 265
10.3.1. Подключение и настройка СМР в проекте ....................................................... 267
10.3.2. Перенос и адаптация UI под Соmроsе Mulltiplatform .................................... 269
10.4. Навигация в проектах с Compose Mllltiplatform .................................................. 272
10.4.1. Навигация на PгeCompose ............................................................................ 273
10.4.2. Нативная навигация от JetBгains ................................................................... 279
10.5. Подключение нативноrо кода к Compose Multiplatfoпn .................................... 283
10.6. Sегvег Driven UI .......................................................................................................... 286
10.7. Альтернативные решения для общего UI .......................................................... 291
10.7.1. Библиотека Redwood ..................................................................................... 291
10.7.2. Библиотека Decompose ................................................................................. 292
ЧАСТЬ II
Глава 11. Полезные инструменты для Kotlin Multiplatform ........................................... 298
11.1. Аннотации и Kotlin Symbol Pгocessiвg ............................................................... 298
11.2. Плагины компилятора .............................................................................................. 305
11.3. ИИ-помошники для кросс-платформенной разработки ..................................... 310
11.3.1. Gemini .................................................................................................................. 311
11.3.2. GigaCode ............................................................................................................. 327
11.4. Полезные библиотеки для Kotlin Mtlltiplatform ................................................. 330
Глава 12. iOS для Android и Android для iOS. Шпаргалка по языкам ........................... 332
12.1. Kotlin для разработчиков iOS и Swift для разработчиков Andгoid ....................... 332
12.1.1. Переменные и константы ............................................................................. 332
12.1.2. Опционалы, нуллабельные типы .................................................................. 333
12.1.3. Потоки исполнения ........................................................................................ 335
12.1.4. Функции ............................................................................................................. 336
12.1.5. Структуры и классы ............. .......................................................................... 337
12.1.6. Расширения в Kotlin и Swift .......................................................................... 338
12.1.7. Enum, enum class, sealed class ....................................................................... 338
12.1.8. Синглтоны и статический функционал .......................................................... 339
12.1.9. Интерфейсы и протоколы ............................................................................ 340
12.2. Gradle для разработчиков iOS .............................................................................. 341
12.2.1. Settiлgs.gгadle .................................................................................................... 342
12.2.2. Build.gгadle. kts (project) ................................................................................ 343
12.2.3. Build.gгadle. kts shагеd-модуля .................................................................... 343
12.2.4. Gгadle. propeгties ............................................................................................... 346
Глава 13. Создаем кросс-платформенную библиотеку для приложения
Kotlin Multiplatform ................................................................................................. 347
13.1. Создание библиотеки ................................................................................................ 347
13.2. Сетевая библиотека для Kotlin в Multiplatform .................................................. 350
13.3. Сборка библиотеки .................................................................... ................................ 354
13.3.1. Сборка артефактов .......................................................................................... 354
13.3.2. Подключение к iОS - приложению ............................................................. 356
13.3.3. Подключение к приложению Andгoid ..................................................... 360
13.4. Упаковка и публикация артефакта для Maven ................................................ 362
13.5. Размещение библиотеки в публичном репозитории ..................................... 364
13.5.1. Github Packages ................................................................................................ 365
13.5.2. Публикация в Maven Centгal .................................................................... 366
Глава 14. Гайд-шпарrалка по миграции существующих нативных приложений ............. 372
14.1. Из Android в Kotlin Mllltiplatfoгm ........................................................................ 372
14.2. Миграuия существующего iОS-приложения ................................................... 376
Резюме .. ... ..... .. ... .... ... ... ... .... ... .. ..... .......... ... ....... ... .... ... ... ..... .. .......... ... 381
Что дальше .... ....... ... ... .............. .......... ....... ... ... ....... ... ....... ... .. ........ ..... 383
Перспективы Kotlin Multiplatform .... .......... .................... ....... ... ................. ... ... 384
Автор: Анна Жаркова
Издательство: Питер
Серия: Библиотека программиста
ISBN: 978-5-4461-4406-8
Жанр: Swift, Кроссплатформенные приложения, Программирование, Разработка мобильных приложений, Разработка приложений, Разработка программного обеспечения, Технологии разработки программного обеспечения, Язык Kotlin
Формат: PDF
Качество: Обработанный скан
Иллюстрации: Черно-белые
Размер: 67MB
Внимание! У Вас нет прав для просмотра скрытого текста.

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.