Как заставить Ваше Android-приложение работать на iOS | Мультиплатформенная мобильная бета-версия Kotlin

YOUTUBE · 27.11.2025 03:14

Ключевые темы и таймкоды

Введение

0:13
  • Обсуждение серии мультиплатформенных мобильных вебинаров Kotlin.
  • Вебинары проводятся для изучения и внедрения новой технологии.

Опрос и анонс вебинара

1:13
  • Опрос о посещаемости 1-го вебинара.
  • Анонс 2-го вебинара на тему "Как заставить ваше приложение для Android работать на iOS".

Спикеры и тема вебинара

2:07
  • Рассел и Кевин - спикеры вебинара.
  • Тема вебинара: "Как заставить ваше Android-приложение работать на iOS".
  • Обсуждение модели памяти и мультиплатформенности Kotlin.

Опрос и результаты

4:23
  • Опрос о прошлом опыте разработчиков iOS и Android.
  • 10% разработчиков iOS смотрят вебинар.

Подходы к мультиплатформенности

7:04
  • Разные команды, типы приложений, подходы к мультиплатформенности.
  • Инструментарий Kotlin разработан для создания мультиплатформенных приложений.

Примеры и сценарии

9:27
  • Гринфилд-сценарий: создание нового приложения с нуля.
  • Моно-репозиторий: интеграция Kotlin в сборку Xcode.
  • Типичные предположения и сложности при интеграции мультиплатформенности в существующую производственную среду.
  • Гринфилд-сценарий может быть хорошей моделью для производственной команды, запускающей новое приложение.

Обсуждение мультиплатформенности

12:49
  • Создание мультиплатформенных приложений на основе Kotlin и Swift.
  • Обсуждение общих частей кода и моделей, а также интеграции с существующими приложениями.

Сложности мультиплатформенности

16:23
  • Сложности возникают при интеграции общего кода в существующие приложения.
  • Мультиплатформенность гибкая, но требует адаптации к различным платформам.

Сравнение с другими технологиями

18:06
  • Мультиплатформенность не конкурирует с Flutter, но может быть альтернативой для стартапов и MVP.
  • Kotlin с нуля может быть менее рискованным вариантом, чем Flutter, для интеграции с существующими системами.
  • Kotlin лучше подходит для интеграции в уже существующие приложения, а не для создания новых.

Проблемы масштабирования и модульности

22:32
  • Обсуждение проблем масштабирования и модульности в разработке приложений.
  • Важность работы с существующими приложениями и командами, которые пытаются масштабироваться.

Адаптационный подход и общие закономерности

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

Стратегии и риски

30:19
  • Стратегии для добавления общего кода в существующие приложения: выбор функций, использование существующих фрагментов кода, установка инструментария Kotlin.
  • Риски и сопротивление при переходе к следующему этапу разработки.

Демонстрация и планы на будущее

31:44
  • Демонстрация работы с модулем и общими функциями.
  • Планы на будущее: создание демо-версии, обсуждение API iOS, продолжение работы над новыми материалами.

Демонстрация работы с Kotlin Multiplatform

32:03
  • Видео демонстрирует, как использовать Kotlin Multiplatform для создания общего модуля, который можно использовать в Android и iOS.
  • Демонстрация показывает, как использовать Gradle для публикации общего модуля в репозитории и как настроить его для работы с Cocoapods.

Вопросы и ответы

39:41
  • Вопросы касаются поддержки SPM, распространения общего модуля на iOS и использования Kotlin Multiplatform для разработки приложений.
  • В конце вебинара планируется провести сессию вопросов и ответов с участием разработчиков и экспертов.

Преобразование кода для мультиплатформенности

43:12
  • Обсуждение идеи преобразования существующего кода для мультиплатформенности, включая использование независимых от платформы API и создание общего кода.
  • Упоминается доклад на Kotlincon 2019 о том, что не обязательно преобразовывать весь код, а можно просто обернуть существующие интерфейсы.

Использование Kotlinx для сериализации

51:38
  • Обсуждение использования Kotlinx для сериализации JSON и XML, а также переход с XML на JSON.
  • Упоминание о том, что сериализация в Kotlinx не поддерживает XML, но может быть толчком для перехода на другой формат.

Использование Ktor для HTTP-клиента

53:40
  • Обсуждение использования Ktor для HTTP-клиента, который похож на родной API Kotlin и имеет DSL.
  • Упоминание о возможности использования Ktor с существующими HTTP-клиентами, такими как Retrofit или OkHttp.

Настройка и интерфейсы

55:35
  • Обсуждение использования интерфейсов для настройки и ожидания реального результата.
  • Примеры использования интерфейсов в библиотеках и для работы с базами данных.

Общие предпочтения и шифрование

1:02:18
  • Обсуждение использования Keychain для шифрования общих предпочтений на iOS и Android.

Работа с файлами и медиа

1:05:39
  • Обсуждение использования библиотеки Okio для работы с файлами и медиа на обеих платформах.
  • Примеры использования Kotlin для написания обобщенных функций для работы с файлами.

Обсуждение экосистемы Kotlin

1:07:14
  • В экосистеме Kotlin есть много инструментов и библиотек, которые помогают разработчикам создавать приложения.
  • Некоторые из них, такие как "Аполлон", уже используются в проектах.

Управление памятью и параллелизм

1:11:52
  • В Kotlin 1.7 и 2.0 включена модель памяти, которая упрощает параллельное программирование между Android и iOS.
  • Однако, это не означает, что все проблемы параллелизма решаются автоматически.

Граница кода и адаптация к Swift

1:14:38
  • Граница кода между Kotlin и Swift может быть сложной, особенно при использовании потоков и сопрограмм.
  • Важно найти общие части кода и адаптировать их для обеих платформ.
  • При этом, не стоит бояться добавлять слой перевода и адаптировать общий код под Swift.
  • Важно также общаться с разработчиками Swift и понимать их потребности.

Взаимодействие Swift и Kotlin

1:20:16
  • Обсуждение использования Kotlin для создания медленного приложения-калькулятора, которое задерживается при каждом расчете.
  • Создание экземпляра калькулятора и вызов метода добавления.

Улучшение взаимодействия Swift и Kotlin

1:24:43
  • Возможность подключения к реактивному API, например, Combine, Async Stream или Rx Swift.
  • Планы по улучшению взаимодействия с Objective-C.

Демонстрация работы с Kotlin и Swift

1:30:28
  • Создание релиза в частном репозитории на GitHub.
  • Использование Maven для распространения ZIP-файлов XCFramework.
  • Использование SPM для управления отключением и автоматической аутентификации.

Создание пользовательского интерфейса

1:32:27
  • Создание пользовательского интерфейса с использованием потоковой передачи и добавление URL-адреса репозитория в Xcode.
  • Обсуждение использования флаттера и множественного числа для мобильных устройств.

Общие подписи и зонтичные модули

1:38:34
  • Обсуждение использования зонтичных модулей для мультимодальных перевозок и общих подписей.
  • Упоминание о том, что зонтичные модули могут быть сложными для работы и требуют настройки CI.

Поддержка баз данных и отладка

1:40:40
  • Обсуждение поддержки инструментов, связанных с базами данных, и отладки на сайте iOS.
  • Упоминание о возможности переименования объектов с помощью PR-сервисов.

Обсуждение отладки и производительности

1:41:47
  • В видео обсуждается возможность отладки с помощью пульта дистанционного управления и использование Kotlin для отладки на iOS.
  • Упоминается, что в будущем можно будет вернуться к этому вопросу и рассмотреть возможность создания более сложной системы конвейерной сборки.

Обсуждение использования менеджера пакетов Swift

1:43:44
  • В видео говорится о том, что менеджер пакетов Swift еще не опубликован, но планируется его выпуск в ближайшее время.
  • Обсуждается возможность использования двух отдельных файлов в багаже для отладки и компиляции.

Обсуждение размера приложения и производительности

1:47:07
  • В видео говорится, что размер приложения может увеличиться после добавления Kotlin, но это не должно быть проблемой.
  • Обсуждается, что производительность может быть улучшена с использованием нового менеджера памяти.

Заключение

1:51:23
  • В видео упоминается, что существует документ по дизайну миграции из отчета Cotton Multi-Platform Mobile Mono или Cotton Multi-Platform Mobile с использованием KMM Bridge.
  • В заключение, видео призывает зрителей задавать вопросы и делиться своими мнениями.

Советы по использованию бета-версии

1:52:53
  • Автор рекомендует не планировать свое выступление по видеосвязи, когда нужно сразу же ехать в аэропорт.
  • Он подчеркивает, что в процессе использования бета-версии могут возникнуть проблемы, но это нормально.
  • Он также отмечает, что многие команды уже используют бета-версию в производстве, и она готова к использованию.
  • Бета-версия означает, что программа более готова к использованию, и автор призывает попробовать ее и посмотреть, что из этого получится.

Заключение

1:54:19
  • Автор благодарит зрителей за просмотр и приглашает подписаться на их канал.
  • Он также упоминает о следующем вебинаре, который состоится на следующей неделе.