А из интересных кейсов вчера поднялась в kotlinlang.slack.com интересная тема - как включить в градле обе айос архитектуры так, чтобы IDE не ломалась.
Напомню что решение согласно документации котлина - активировать только одну из архитектур (x64 по умолчанию, а если передана переменная окружения SDK_NAME с значением iphoneos - то arm64) из-за чего компиляция под устройство доступна только из xcode и нет управления полноценного зависимостями (ведь зависимости то под конкретную архитектуру скомпилированы).
Были озвучены пара интересных хаков:
1. Создать iosX64 таргет с именем ios (таким образом получаем сорссет iosMain), а так же обычные iosX64 и iosArm64 с указанием dependsOn iosMain. Говорят так получаем единый код и корректную работу IDE
2. Хранить код в iosMain директории, а для Gradle и IDE создать две симлинки iosX64Main и iosArm64Main после чего IDE корректно видит actual классы и Gradle предоставляет отдельные таски сборки айос версии, без лишних тасок как в первом случае.
Подробнее можно ознакомиться тут https://kotlinlang.slack.com/archives/C3SGXARS6/p1568297037167500
#cases
Напомню что решение согласно документации котлина - активировать только одну из архитектур (x64 по умолчанию, а если передана переменная окружения SDK_NAME с значением iphoneos - то arm64) из-за чего компиляция под устройство доступна только из xcode и нет управления полноценного зависимостями (ведь зависимости то под конкретную архитектуру скомпилированы).
Были озвучены пара интересных хаков:
1. Создать iosX64 таргет с именем ios (таким образом получаем сорссет iosMain), а так же обычные iosX64 и iosArm64 с указанием dependsOn iosMain. Говорят так получаем единый код и корректную работу IDE
2. Хранить код в iosMain директории, а для Gradle и IDE создать две симлинки iosX64Main и iosArm64Main после чего IDE корректно видит actual классы и Gradle предоставляет отдельные таски сборки айос версии, без лишних тасок как в первом случае.
Подробнее можно ознакомиться тут https://kotlinlang.slack.com/archives/C3SGXARS6/p1568297037167500
#cases
Разработка приложений с общим кодом на обе платформы не нова, и среди популярных решений есть сейчас React Native (от которого некоторые большие компании начинают уходить), Flutter (к которому многие идут) и Kotlin Multiplatform (про который наш канал). И периодически слышен вопрос от некоторых разработчиков: вот на kotlin можно написать общую логику, но нельзя писать UI (точнее неудобно), а можно ли совместить общую логику на kotlin и общий UI на Flutter?
Ответ: да, можно. И это даже делали...На эту тему есть пара статей - Fast Prototypes with Flutter + Kotlin/Native (русский перевод) и Приложение для iOS и Android на Kotlin + Flutter UI. При чем у второй статьи есть и открытый код, а сама статья это пошаговая инструкция как сделать так же самому (первая же статья больше про сам принцип и немного про ограничения этого симбиоза).
Если задуматься над вопросом "а зачем?" то мысли есть такие:
1. Для разработки прототипа одним человеком (особенно если сделать автоматическую генерацию каналов для связи kotlin и flutter между собой) - нам нужен человек который и общую логику на kotlin напишет и ui сразу на обе платформы сделает, при чем с hot reload и действительно быстрой разработкой визуала;
2. Для дальнейшего развития этого прототипа в большое замудреное приложение, напичканное разными нативными штуками типа фоновых сервисов, интеграций разных экстеншенов и прочих платформенных штук. С заменой UI на нативный, привычный всем пользователям. То есть достигаем как можно быстрее состояния MVP для проверки гипотезы, а если ее ждет успех - тогда уже вкладываем ресурсы в нативную разработку (не выкидывая общую бизнеслогику написанную на kotlin).
Возможно и у вас есть свое мнение по поводу вопроса "зачем соединять flutter и kotlin mpp?" - заходите в чат и поделитесь.
#posts #cases
Ответ: да, можно. И это даже делали...На эту тему есть пара статей - Fast Prototypes with Flutter + Kotlin/Native (русский перевод) и Приложение для iOS и Android на Kotlin + Flutter UI. При чем у второй статьи есть и открытый код, а сама статья это пошаговая инструкция как сделать так же самому (первая же статья больше про сам принцип и немного про ограничения этого симбиоза).
Если задуматься над вопросом "а зачем?" то мысли есть такие:
1. Для разработки прототипа одним человеком (особенно если сделать автоматическую генерацию каналов для связи kotlin и flutter между собой) - нам нужен человек который и общую логику на kotlin напишет и ui сразу на обе платформы сделает, при чем с hot reload и действительно быстрой разработкой визуала;
2. Для дальнейшего развития этого прототипа в большое замудреное приложение, напичканное разными нативными штуками типа фоновых сервисов, интеграций разных экстеншенов и прочих платформенных штук. С заменой UI на нативный, привычный всем пользователям. То есть достигаем как можно быстрее состояния MVP для проверки гипотезы, а если ее ждет успех - тогда уже вкладываем ресурсы в нативную разработку (не выкидывая общую бизнеслогику написанную на kotlin).
Возможно и у вас есть свое мнение по поводу вопроса "зачем соединять flutter и kotlin mpp?" - заходите в чат и поделитесь.
#posts #cases
Medium
Sunsetting React Native
Due to a variety of technical and organizational issues, we will be sunsetting React Native and putting all of our efforts into making…
На одном из наших проектов, который мы делали с использованием kotlin multiplatform, нам нужно было сделать вывод чисел с множеством знаков после запятой. Баланс кошелька криптовалюты и суммы перевода могут быть очень маленьким числом, но требовалась точность, так как каждый 0.000000001 это реальные деньги, при чем совсем не копейки. Как оказалось в kotlin common-stdlib нет bigdecimal, но обе мобильные платформы такой тип имеют, поэтому мы довольно быстро и просто сделали expect/actual класс BigDecimal, передав эту специфику на платформы...сейчас же никому не потребуется делать кастомный expect/actual, так как уже доступна библиотека kotlin-multiplatform-bignum (с поддержкой kotlin 1.3.50), которая содержит и bigdecimal и biginteger, и математические операторы.
#libs #cases
#libs #cases
App Store
Apatris Mobile Wallet
Apatris is a convenient and safe Multi-Currency Wallet. Store, Invest and Exchange in one App!
Performance Capacity:
- Store 8 popular crypto assets (BTC, ETH, LTC, BCH, ETC, XRP, DAI, EURS)
- Use two stable coins in the Wallet (MakerDAO, Stasis)
- Perform…
Performance Capacity:
- Store 8 popular crypto assets (BTC, ETH, LTC, BCH, ETC, XRP, DAI, EURS)
- Use two stable coins in the Wallet (MakerDAO, Stasis)
- Perform…
Команда SuperAwesome разработала мобильное приложение Rukkaz для видео стримингового сервиса с использованием kotlin multiplatform. Про это они рассказали в своей статье – How we developed our new video platform Rukkaz as a cross-platform mobile app.
Само приложение можно скачать и посмотреть:
iOS
Android
Немного поглядев внутри apk, можно заметить, что используется как минимум ktor-client и coroutines, а это подсказывает что в общей библиотеке находится как минимум сетевой слой.
#cases #posts
Само приложение можно скачать и посмотреть:
iOS
Android
Немного поглядев внутри apk, можно заметить, что используется как минимум ktor-client и coroutines, а это подсказывает что в общей библиотеке находится как минимум сетевой слой.
#cases #posts
Medium
How we developed our new video platform Rukkaz as a cross-platform mobile app
While developing natively for iOS and Android we realised we were writing the same functionalities twice. So we stopped.