Как стать автором
Обновить

Комментарии 21

А возможно ли вместо котлина на Java писать подобным образом, чтобы кроссплатформенно было?
Насколько я понимаю нет, потому что Java компилируется только в байт-код для JVM.
А Kotlin/Native, как раз фича которая позволяет компилировать kotlin-код в бинарники под разные платформы.
Интересно, как тогда компилируются проекты на LibGDX, которые позволяют писать на Java под iOS?..
Если я правильно понял то, что написано по этой ссылке, то у LibGDX есть своя виртуальная машина для java которую они запускают при старте приложения на iOS
Раньше под iOS собирали с помощью RoboVM, но его перестали поддерживать и теперь есть два варианта: опенсорсный форк RoboVM от MobiDevelop (инструкция на гитхабе) или некая Multi-OS Engine.

Google говорит, что есть примеры запуска java кода на iOS с помощью RoboVM. По идее можно это связать с flutter+dart2. Зависит от RoboVM насколько он работает со свежими релизами iOS
А разве не логичнее платформонезависимый код писать на dart, а реализацию платформенных фишек на kotlin/swift? Ведь kotlin native ровно же также не даст пользовать фишки платформы как и dart.
Почему не даст? Если эти фишки можно использовать из Си, то и из Котлина можно.
Си? А не слишком ли?
Насколько я знаю, Kotlin/Native интероперабелен с Си. Насколько с Objective-C и Swift, к сожалению, не знаю.
Со Swift и Objective-C тоже интероперабелен.
Основные причины, почему я выбрал kotlin
  • Есть ktor для сетевых запросов, который можно положить в общую бибилиотеку
  • Для меня очень важно что есть LiveData, написанная на Kotlin, это значит, что я могу даже в общей библиотеке использовать reactive-подход
Если я правильно понял, единственная причина по которой в проекте есть Kotlin/Native это то, что автор знаком с котлином. По хорошему, тут все должно быть на дарте, но все хотят писать на котлине, а не на дарте и как результат — «вот это вот все».
Интересно, спасибо.
Но уж слишком муторно выглядит со стороны пока.
Подскажите, пожалуйста, итоговый размер полученных бинарых файлов, для установки в android и iOS для debug и release конфигураций.
Android
  • app-debug.apk = 26M
  • app-release-unsigned.apk = 6.6 Mb


Очень интересно! Что вы использовали вместо java-библиотек? Откуда брали контейнеры, таймера и прочее?
Добрый день. Про какие именно библиотеки идёт речь? Например для сети ktor, для ReactiveX -> LiveData
Насколько читал про kotlin/native, он не может использовать инфраструктуру JVM и, соответственно, все классы java. Остаётся либо чисто котлиновские библиотеки, либо котлиновские порты на нативные библиотеки. Вот и интересуюсь, насколько комфортно использовать Native вне JVM.
Сейчас передо мной стоит задача на котлине, и пока в раздумьях — то ли под JVM продолжать, то ли на Native перейти для интереса
Всегда можно сделать expected fun и определить её отдельно для ios/Android
Советую попробовать в маленьком проекте и посмотреть, насколько будет удобно

В сентябре 2018 была так же публикация "Fast Prototypes with Flutter + Kotlin/Native":
https://tech.olx.com/fast-prototypes-with-flutter-kotlin-native-d7ce5cfeb5f1
Было разработано реальное приложение для конференций, но к сожалению исходный код не был выложен (приватная разработка), но автор достаточно подробно рассказал про архитектуру.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории