AppFiles - Mobile Development
2.11K subscribers
2.71K photos
38 videos
10 files
3.64K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Когда обновил небольшую зависимость
😢4
🏝Еще один проект нашего читателя. FlowMVI - это архитектурный фреймворк Kotlin Multiplatform на основе корутинов с обширным набором функций, мощной системой плагинов и богатым DSL.

Преимущества:

• Мощная система плагинов для автоматизации процессов и повторного использования любой бизнес-логики по вашему желанию
• Создавайте полностью асинхронные, реактивные и параллельные приложения - без необходимости ручной синхронизации потоков
• Создавайте кроссплатформенные компоненты бизнес-логики без использования кода платформ, с подключаемым пользовательским интерфейсом
• Автоматическое восстановление после любых ошибок и предотвращение сбоев
• Автоматическая обработка жизненного цикла многоплатформенной системы
• Встроенная поддержка отладки, протоколирования, тестирования, отмены/повтора, кэширования и длительного выполнения задач
• Автоматическое сжатие, сохранение и восстановление состояния на любой платформе
• Никаких базовых классов, сложных интерфейсов или фабрик фабрик - логика декларативна и строится с помощью DSL
• Перезапускаемые, многократно используемые компоненты бизнес-логики без внешних зависимостей и выделенных жизненных циклов
• Создавайте безопасные машины состояний во время компиляции с помощью понятного DSL
• Первоклассная поддержка Compose Multiplatform, оптимизированная для производительности и простоты использования
• Используйте как MVVM+ (функциональный), так и MVI (model-driven) стиль программирования
• Основная библиотека зависит только от корутинов Kotlin, больше зависимостей нет
• Основная библиотека полностью покрыта тестами

FlowMVI на GitHub
: https://github.com/respawn-app/FlowMVI
Платформа: Android/кроссплатформа
⭐️: 249

Если у вас есть библиотеки, открытые или просто интересные пет-проекты, делитесь. Будем публиковать.
Please open Telegram to view this post
VIEW IN TELEGRAM
Kotlin Coroutines под капотом

Вероятнее всего у вас спрашивали на собесе «как работают корутины под капотом?», вы не долго думая выбрасывали что‑то в стиле «там под капотом стейт‑машина, она определяет какая suspend функция будет выполняться», но понимали ли вы на самом деле всё о чем говорили? Возможно, только вам это известно, но если честно я очень плохо понимал собственные ответы на такие вопросы как бы это парадоксально не звучало и даже после десятка пройденных собесов у меня не было полноценной картины как работает внутрянка этой поистине невероятной библиотеки «сладкой асинхронщины».

Статья: https://habr.com/ru/articles/827866/
Платформа: Android
Видео и подкасты за неделю @AppFiles

(iOS Ru) Что нового в Swift 6?
(iOS En) Zoom Transitions - SwiftUI
(iOS En) AI Features in Xcode 16: is it Good or Bad?
(iOS En) Laying out views with ContainerRelativeFrame in SwiftUI
(iOS En) Animated Scroll Wheel Picker - SwiftUI
(iOS En) Removing More Button from Tab bar - SwiftUI
(iOS En) Create Interactive In-App Polls With SwiftUI
(And Ru) Как обойти множественное наследование в Kotlin и Java. Агрегация и композиция
(And En) The Top 5 Practices That Make My Android Architecture More Scalable
(And En) Generating Kotlin SDKs with Smithy
(And En) Kotlin/Native BigDecimal: A drop-in replacement for java.math.BigDecimal
(And En) K2: How to Make a Better Compiler but Keep Kotlin the Same
(And En) It's Compose O'Clock, Draw on My Watch!
(And En) Crashlytics for your Android apps
(And En) Kotlin Code Reuse: Composing like you're Inheriting
(Crs En) HTTP Requests in Kotlin Multiplatform With Ktor - KMP for Beginners
(Crs En) Compose Multiplatform performance on iOS
(Crs En) Code push for Flutter
(Dev Ru) System Design-интервью для практиков
(Dev Ru) 10 тупых вопросов на собеседовании (и как на них отвечать) + все собеседования
(Dev Ru) Локальная разработка в Авито
(Dev En) AI on Mac Made Easy: How to run LLMs locally with OLLAMA in Swift/SwiftUI
(Dev En) Learn TypeScript - Full Course for Beginners

Делитесь в комментариях тем, что вы смотрели!
#ios #android #mobile #video
👎1
Добавляем в приложение SwiftUI холст Freeform, чат и видеозвонки

В этом руководстве мы научимся внедрять в приложения SwiftUI холст Freeform, обмен сообщениями в чате, голосовые вызовы и видеозвонки. Воспользуемся фреймворком PencilKit от Apple с легким в освоении холстом для рисования и разнообразным инструментарием для создания рукописных заметок и набросков.

Статья: https://nuancesprog.ru/p/22560/
Платформа: iOS
Библиотека нашего читателя, Александра, ведущего SwiftUI Dev. SwipeActions - библиотека для создания свайпов на любом представлении SwiftUI, аналогичных Apple swipeActions(edge:allowsFullSwipe:content:), которые доступны с iOS 15 и только в List. Вы можете использовать SwipeActions в проекте, ориентированном на iOS 13, с любым представлением (например, Text или VStack).

SwipeActions на GitHub
: https://github.com/c-villain/SwipeActions
Платформа: iOS
⭐️: 197
Расширяем возможности мобильного приложения на WebView. Опыт Ozon Банк

Часто разработчики используют только встроенный API взаимодействия JavaScript c нативными кодом, например Web API, но нам этого оказалось мало, и мы расширили спектр возможностей подхода web-native. Внутри статьи я расскажу, какой подход выбрал, как к этому пришёл, и, как обошёл возникшие проблемы. Подчеркну плюсы и минусы использования своего решения и в конце предложу несколько идей дальнейшего развития выбранного пути.

Статья: https://habr.com/ru/companies/ozontech/articles/828186/
Платформа: iOS
Видео с прозрачностью на Jetpack Compose – запросто

В статье я хочу показать простой способ решения известной в Android-разработке проблемы – проигрывания видео-файла с полноценной прозрачностью. В Compose для этого пока нет готовых компонентов, поэтому разработчику приходится придумывать разные хитрости. Какая может быть польза от этого решения? Ответ очевиден – любая сложная анимация в приложении с минимальным размером.

Статья: https://habr.com/ru/companies/finam_broker/articles/828322/
Платформа: Android
Проверяем, есть ли новая версия приложения в App Store

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

Однако у многих пользователей на устройствах не включены автоматические обновления, и если они не открывают сам App Store и не ищут доступные обновления, они могут так и не узнать, что вышла новая версия вашего приложения.

Статья: https://apptractor.ru/info/articles/proveryaem-est-li-novaya-versiya-prilozheniya-v-app-store.html
Платформа: iOS
Film Time - очередное учебное приложение с фильмами. Сделано на основе MVVM, Kotlin, Jetpack Compose, корутин, Hilt, Retrofit и Room с применением ktlint.

Film Time на GitHub: https://github.com/moallemi/Film-Time
Платформа: Android
⭐️: 249
Кастомные макеты в Compose — стопка карточек с кошками

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

Статья: https://apptractor.ru/info/articles/kastomnye-makety-v-compose-stopka-kartochek-s-koshkami.html
Платформа: Android
Парсим данные из Google Sheets с помощью Kotlin и Retrofit в Android

В этой статье был рассмотрен процесс преобразования данных Google Sheets из JSON формата в классы Kotlin. Более того, в статье фигурировала suspend функция — «Best wishes, coroutines» — с расчётом на то, что читатель имеет минимальные представления о том, как работать с этими функциями.

Статья: https://habr.com/ru/articles/828812/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Еще одна библиотека нашего читателя. Animatable - модификатор анимации для кнопок, скелетов и других представлений на чистом SwiftUI. Есть с десяток предопределенных анимаций, можно их комбинировать.

Animatable на GitHub: https://github.com/c-villain/Animatable
Платформа: iOS
⭐️: 48

Если у вас есть библиотеки, открытые или просто интересные пет-проекты, делитесь. Будем публиковать.
Как запустить нативный код из WKWebView

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

Статья: https://apptractor.ru/info/news/kak-zapustit-nativnyy-kod-iz-wkwebview.html
Платформа: iOS
Video-to-GIF-Converter.gif
17.7 MB
Overscroll анимация в Jetpack Compose

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

Но прежде чем я начну, позвольте мне пояснить, что это немного обходной путь. В Jetpack Compose уже есть OverscrollEffect, который мы можем использовать для создания собственных overscroll анимаций. Проблема в том, что мы можем применять его только к прокручиваемым спискам, которые мы создаем с помощью Modifier.scrollable.

Это не очень удобно, так как большинство списков, которые мы создаем в Compose, являются LazyLists (HorizontalPager, LazyColumn и т.д.). В этих Composables нет параметра overscrollEffect, который мы могли бы настроить.

Статья: https://www.sinasamaki.com/overscroll-animations-in-jetpack-compose/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Пет-проект нашего читателя. Finch - отладочное меню для Android-приложений с поддержкой логирования сетевой активности и множеством других полезных функций. Оно не влияет на рабочий код, только помогает понимать, что в нем происходит. Разработчики могут легко добавить свои собственные функции отладки с помощью простых шагов.

Finch на GitHub: https://github.com/kernel0x/finch
Платформа: Android
⭐️: 249

Если у вас есть библиотеки, открытые или просто интересные пет-проекты, делитесь. Будем публиковать.
👍3
Скрытая (на виду) сила KeyPath'ов

Меня зовут Максим Черноусов, и я занимаюсь iOS-разработкой в Райфе. Я обожаю использовать и дизайнить классные API. А один из самых часто используемых строительных блоков для хороших API в Swift — это KeyPath'ы. Сегодня о них и поговорим.

KeyPath`ы сегодня используются повсеместно. Давайте узнаем, как с их помощью проектировать лучшие API.

Статья: https://habr.com/ru/companies/raiffeisenbank/articles/828896/
Платформа: iOS
Сериализация в Kotlin - ошибки, которые я допустил с полиморфизмом и не только

Приходилось ли вам сталкиваться с ошибками полиморфной сериализации в ваших проектах на Kotlin? Если да, то вы не одиноки. Полиморфная сериализация, хотя и невероятно мощная, может быть сложной для правильной работы. От неожиданных несоответствий типов до тонких проблем с конфигурацией - многие подводные камни могут привести к досадным ошибкам и недоразумениям.

В этой статье мы рассмотрим сериализацию Kotlin, сосредоточившись на объекте Json. Я дам практические рекомендации по ее эффективному использованию, особенно при работе с полиморфными сериализованными классами. К концу этого руководства вы будете обладать знаниями, позволяющими использовать возможности сериализации Kotlin.

Статья: https://medium.com/@kerry.bisset/kotlin-serialization-json-mistakes-i-made-with-polymorphism-and-more-e8ae367dc90a
Платформа: Android
👍2
Компонентная архитектура приложений на Flutter: почему выбрать BLoC недостаточно

Меня зовут Никита Королев, я тимлид Flutter‑команды в компании IBS. Уже год я работаю на проекте компании «Атом» — разработчика российского электромобиля. На данный момент наша команда занимается разработкой приложений для направления «Такси». В этой статье расскажу о подходе к архитектуре приложений, который мы разработали и используем в наших проектах, а также почему нам недостаточно одного только BLoC.

Статья: https://habr.com/ru/companies/ibs/articles/828428/
Платформа: Flutter/кроссплатформа