Представляем альфа-версию Kotlin Multiplatform Mobile

Oksana Mandryka

Kotlin Multiplatform Mobile (KMM) — это SDK, который позволяет использовать общий код бизнес-логики в приложениях iOS и Android. Сегодня мы выпускаем альфа-версию KMM, и вы уже можете использовать общую бизнес-логику в своих мобильных приложениях. KMM включает в себя плагин для Android Studio, который позволяет писать, запускать, тестировать и отлаживать общий кросс-платформенный код в одной IDE. VMWare, Autodesk и Яндекс уже используют общий код в своих мобильных приложениях — теперь это очень просто!

Что такое Kotlin Multiplatform Mobile?

Kotlin Multiplatform Mobile (KMM) — это SDK для кросс-платформенной мобильной разработки. Он сочетает в себе мультиплатформенные возможности Kotlin с функциональностью и инструментами, разработанными для того, чтобы сделать процесс создания кросс-платформенных мобильных приложений максимально удобным и эффективным.

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

KMM предоставляет такую возможность и сохраняет при этом преимущества нативного программирования. Используйте общую кодовую базу для бизнес-логики обоих приложений и пишите платформенный код только там, где это необходимо — для реализации интерфейса или при работе с платформозависимыми API.

KMM легко интегрировать в ваш мобильный проект. Общий код, написанный на Kotlin, компилируется в байт-код JVM с помощью Kotlin/JVM и в нативные двоичные файлы с помощью Kotlin/Native, поэтому вы можете использовать модули бизнес-логики KMM, как любую другую мобильную библиотеку.

Многие компании уже экономят время и силы, используя общий Kotlin-код для разных мобильных платформ. Вот истории тех, кто уже попробовал KMM:

  • Разработчики Quizlet перевели бизнес-логику с JavaScript на KMM, что позволило значительно увеличить производительность приложений для iOS и Android.
  • В Fastwork KMM применяется на уровне домена и уровне данных, чтобы обеспечить кросс-платформенное использование бизнес-логики и службы API — команда стала работать гораздо продуктивнее.
  • Разработчики Яндекс.Диска начали с эксперимента по интеграции небольшой функциональности. Впоследствии они реализовали всю логику синхронизации данных с помощью KMM.

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

Создание мобильных приложений с помощью KMM

В мире мобильной разработки KMM — совсем новая технология, но мы считаем, что она способна в корне изменить положение дел. Внутри Kotlin мы выделили отдельную команду, которая будет развивать KMM и помогать разработчикам писать кросс-платформенные мобильные приложения на Kotlin.

Сегодня мы рады представить первую preview-версию плагина KMM для Android Studio, а также специальный портал для KMM-разработчиков.

Давайте начинать!

Работайте в привычной среде

С плагином KMM можно писать, запускать, тестировать и отлаживать общий код в Android Studio, не переключаясь в другие IDE. Для установки плагина перейдите в меню Preferences | Plugins, найдите плагин Kotlin Multiplatform Mobile в Marketplace и нажмите Install.

Сконфигурируйте новое приложение за пару кликов

В мастере создания проектов New Kotlin Multiplatform Mobile Project можно создать готовый к запуску проект мобильного приложения с общей кодовой базой всего за несколько кликов. Чтобы увидеть, как это работает на каждой из платформ, просто выберите нужную конфигурацию запуска и нажмите Run.

Созданный проект будет содержать примеры того, как подключиться к платформенным API, и базовое тестовое покрытие. Вы можете использовать мастер для знакомства с основными функциями KMM и в качестве инструмента кодогенерации для нового приложения KMM.

Узнайте из руководства, как установить плагин и создать первое мультиплатформенное приложение с помощью мастера.

Внедрите KMM в существующий проект за один шаг

Вы можете начать пользоваться KMM в текущем проекте: общий Kotlin-код легко интегрировать в существующий код, как любую обычную зависимость. Мастер New Kotlin Multiplatform Mobile Module поможет добавить KMM-модуль в проект, чтобы вы могли использовать код, написанный на Kotlin, и произвести рефакторинг для совместимости с iOS.

Ознакомьтесь с руководством по интеграции KMM в проект, чтобы узнать, как спроектировать архитектуру мультиплатформенного проекта и организовать миграцию.

Пишите код для обеих платформ в одной IDE

Больше не нужно переключаться между разными IDE и запускать Xcode, чтобы проверить правильность работы вашего кода на обеих мобильных платформах. Новый плагин обеспечивает интеграцию с устройством iOS и симулятором прямо в Android Studio. Это позволяет вам:

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

Как для приложения, так и для тестов вы можете устанавливать точки останова и отлаживать код в iOS.

Интегрируйтесь с экосистемой iOS

Как уже было сказано, KMM легко интегрируется с вашим мобильным проектом. Разрабатывая под Android, вы можете использовать Kotlin для любой части вашего проекта. В то же время KMM обеспечивает тесную интеграцию с процессом разработки под iOS благодаря совместимости Kotlin/Native с Objective-C/Swift, интеграции с менеджером зависимостей CocoaPods и возможности использовать платформозависимые API с помощью механизма expect/actual.

Работайте с Kotlin из Swift-кода с помощью Kotlin/Native

Kotlin/Native обеспечивает двусторонюю совместимость с Objective-C/Swift. Kotlin-модули могут целиком использоваться в Swift/Objective-C. Вы можете использовать в Kotlin-коде фреймворки и библиотеки Objective-C, а также библиотеки Swift, если их API экспортируется в Objective-C с помощью @objc.

Подробнее о совместимости между Kotlin/Native и Swift/Objective-C.

Управляйте iOS-зависимостями легко

Kotlin/Native обеспечивает интеграцию с менеджером зависимостей CocoaPods. Вы можете добавлять зависимости от библиотек Pod, хранящихся в репозитории CocoaPods или локально, а также использовать мультиплатформенные проекты с нативными целями в качестве зависимости CocoaPods (Kotlin Pod). Управляйте зависимостями Pod прямо в Android Studio, пользуясь подсветкой кода, автодополнением и другими возможностями IDE.

Вот как выглядит типичная конфигурация KMM-библиотеки:

Подключите библиотеку к своему iOS-проекту в качестве Kotlin Pod, добавив ее имя и путь в Podfile:

Подробнее об интеграции с CocoaPods.

Узнайте, как создавать мультиплатформенные приложения на новом портале для разработчиков

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

Раздел документации — главный источник информации при работе с KMM. Здесь мы собрали самый разный контент: от руководств, которые помогут вам начать, до материалов на более сложные темы. Вы найдете информацию об общих вещах, таких как организация уровней сети и хранения данных, и даже о том, как построить процесс разработки вокруг KMM.

Хотите узнать больше о преимуществах KMM? Зайдите в раздел Сase studies — там вы найдете информацию о том, как разные команды используют KMM в своих продуктах, из первых рук.

Сила сообщества

Мы благодарим всех, кто принял участие в подготовке этого релиза и поделился с нами опытом и знаниями. Важный вклад внесли Kevin Galligan, Alec Strong, Аркадий Иванов, Ben Asher, John O’Reilly, Louis CAD, Kris Wong, Алексей Михайлов и многие другие разработчики. Спасибо, что сообщали о проблемах в YouTrack, участвовали в опросах и интервью, делились опытом использования KMM и разрабатывали невероятные мультиплатформенные библиотеки!

Мы также благодарны командам, которые помогли нам с материалами для портала: Touchlab, IceRock и Kodein Koders. Ваш вклад позволит тысячам разработчиков ближе познакомиться с Kotlin Multiplatform Mobile и использовать ее возможности на 100%.

Спасибо!

Попробуйте уже сегодня

На данный момент KMM доступна режиме альфа-тестирования. Команда Kotlin максимально заинтересована в совершенствовании технологии и ее дальнейшем развитии. Это значит, что продукт будет развиваться быстро. Нам очень важна обратная связь, чтобы вносить исправления как можно скорее. Для повышения стабильности KMM сообщайте нам об обнаруженных ошибках через баг-трекер — мы очень ценим вашу помощь.

Переход на этап альфа-тестирования означает, что вы уже можете начинать работать с KMM и использовать общую бизнес-логику для разных мобильных платформ. Можно создать новый проект или интегрировать KMM-модуль в существующий. В обоих случаях потребуется минимум затрат и вы всегда сможете вернуться к полностью нативной разработке. Сообщество KMM быстро растет, и мы приглашаем вас присоединиться — вы тоже сможете влиять на развитие экосистемы.

Начните использовать KMM уже сегодня!

Чтобы погрузиться в KMM и обсудить функциональность, которую вы планируете изучить, присоединяйтесь к нашему сообществу в Slack (получить приглашение можно здесь) и подписывайтесь на тег kotlin-multiplatform на Stack Overflow.

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

Что думаете?

Мы находимся в самом начале пути, и нам очень пригодится ваша помощь. Мы очень ждем ваших отзывов — хороших и не очень. Расскажите о своем опыте использования Kotlin Multiplatform Mobile и поделитесь с нами идеями о том, что нам стоит улучшить.

Let’s Kotlin!