DroDev | Мобильная разработка: мысли вслух
464 subscribers
104 photos
229 links
Обсуждаю и рассказываю как сделать жизнь разработчика в команде интересной, легкой и продуктивной.

По всем вопросам @dilix90
Download Telegram
И снова немного про кросс-платформенную разработку.

В свободное время попробовал написать небольшое приложение на #Flutter
- это и правда классный инструмент, чтобы быстро сделать #MVP, но есть нюансы
- не надо думать, что "написал один раз и забыл". Например решил подключить Firebase. Пришлось открыть xcode и android studio, чтобы добавить нужные файлы и зависимости.
- некоторые фишки нужно дописать, даже если они есть в нативе. FirebaseUI Auth есть для #Web/#Android/#iOS. А чтобы подключить ее к flutter, не залезая в исходники - придется поискать библиотеку или писать самому.
- работает не всегда и не везде. Я, как Андроид разработчик, быстро завел приложение на эмуляторе. А вот iOS отказался работать, потому что конфигурация на первом этапе была сделана не совсем верно.

Итого - писать сразу под обе платформы - отличные подход, если вам нужно быстро приложение под 2+ платформы. Но надо быть готовым, что базовые знания для каждой платформы должны быть. Также, для сборки iOS нужна будет MacOS. И тут не только про flutter, часто в интернете натыкаюсь на вопросы про разные фреймворки из разряда "как заставить работать <фича> на <framework>".

Вот еще пара развернутых мыслей про кросс-платформ: https://tproger.ru/experts/native-or-crossplatform/
#Android, в плане архитектуры, со временем менялся. Тут и #MVP с #Moxy, и свои реализации #MVC и т.д.

С #Android #Jetpack и #Kotlin постепенно вырисовывается путь, который Google считает верным при построении приложения. А именно мультимодульные MVVM проекты.

#ViewModel отвечает за логику и жизненный цикл бизнес сущностей. UI как обычно может быть пересоздан, а через liveData все вернется как было.

На глаза попалась интересная статья с примерами от А до Тестов: https://proandroiddev.com/android-architecture-d7405db1361c

Но не забываем, что многомодульность сделана не для того, чтобы усложнить жизнь разработчику. Она может быть полезна например для dynamic features: https://developer.android.com/guide/app-bundle/dynamic-delivery
И снова пару слов про кросплатформенную разработку и #Flutter.

Ожидание:
- Написал код один раз, работает везде
- Нажал кнопочку, проект собрался под все платформы

Реальность:
- #Firebase авторизацию заставил работать только с бубном. На форумах писали про "магическую" комбинацию правильных версий библиотек самого Flutter и #firebase_auth.
- #Push уведомления, необходимые также для авторизации (silent push) на iOS получилось настроить только с N-ого раза, удаляя туда-обратно сертификаты в #appstoreConnect
- Библиотека #url_launcher не хотела запускать email клиент на iOS с русскими символами в интенте 😳
- Для того, чтобы собрать проект под #iOS необходим #xCode

Итого:
Разработка под 2 платформы - удобно для #MVP, когда нужно относительно быстро запустить проект под 2 платформы, но это не так просто как может показаться на первый взгляд.

Бонус:
Само приложение можно найти по ссылке: https://stroycash.page.link/appDynLink

Буду рад обсудить детали реализации, ответить на вопросы и услышать ваши отзывы!