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

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

Персональный проект

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

Следующий шаг: развитие.

Выбор кроссплатформенного фреймворка

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

За последние пару лет я самостоятельно экспериментировал с React Native и Flutter в нескольких практических проектах. Не могу сказать, что я потратил на них много времени, но некоторые мнения у меня сложились.

React Native меня не устраивал. Все выглядело таким беспорядочным, наверное, потому, что я привык к объектно-ориентированному подходу к программированию, а здесь использовал Javascript. Я знаю Typescript, однако несколько библиотек написаны на Javascript, поэтому мне приходилось использовать много неопределенного типа «любой» при взаимодействии с ними в Typescript. Мне это показалось очень грязным, так как я пришел из среды Java и Kotlin. Кроме того, я не большой поклонник CSS.

Мне нравилось играть с Flutter. Особенно в первый раз, когда я экспериментировал с Dart. Это казалось большим улучшением по сравнению с проектом Java Android. Позже, когда я перешел на Kotlin, я увидел, что хотя Dart и казался лучше, чем Java, он все же не был так хорош, как Kotlin.

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

Мультиплатформа Котлин (КММ)

С другой стороны, есть мультиплатформенный фреймворк Kotlin, концепция которого немного отличается от React Native и Flutter. Это позволяет нам делиться всем, что не связано с уровнем пользовательского интерфейса, между несколькими платформами с помощью языка программирования Kotlin.

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

  1. Активность (пользовательский интерфейс),
  2. ViewModel,
  3. вариант использования,
  4. Репозиторий,
  5. Источник данных.

Используя KMM, мы можем совместно использовать четыре из пяти слоев на нескольких платформах. Тогда остается реализовать только макет пользовательского интерфейса в нативных Android и iOS. Лучшее в этом то, что мы можем делиться состояниями пользовательского интерфейса вместе с ViewModels. Таким образом, мы можем определить, что может быть динамически изменено на нашем экране в одном месте, а затем построить наш собственный пользовательский интерфейс вокруг этих определенных состояний пользовательского интерфейса.

Решение

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

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

Вот почему я решил использовать KMM в своем следующем проекте.

Следите за обновлениями

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

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

Если вы хотите общаться на более профессиональном уровне, вот мой LinkedIn.

Спасибо за ваше время!

Дополнительные инструменты и ресурсы ➡️ Посетите StartupStash
Zendesk дарит стартапам кредиты и привилегии на сумму 75 000 долларов США! ➡️ Подать заявку!