AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.12K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Видео и подкасты за неделю @AppFiles

(iOS Ru) Как побеждать в конкурсах от Telegram
(iOS En) SwiftUI Draggable Tab Bar
(iOS En) SwiftUI Re-Orderable Tab bar
(iOS En) SwiftUI Swipe to Hide Header
(iOS En) Mastering Swift Testing: Run Serialized Tests with One Line of Code
(iOS En) Explicit ViewBuilder
(iOS En) My Favorite SwiftUI Updates in iOS 18
(iOS En) Exploring Predictive Code Completion in Xcode 16
(iOS En) Pomodoro Timer App - SwiftUI
(And Ru) Переходишь на Compose? Не спеши!
(And Ru) Как работает ТВ в Android TV?
(And Ru) Нужны ли Android-разработчики на заводе?
(And Ru) Gradle DSL изнутри
(And Ru) Kotlin DSL как единый источник правды для решения многих задач
(And En) Lifecycles, Coroutines and Scopes
(And En) Developer first Gradle builds
(And En) DataFrame: Kotlin's Innovative Approach to Data Structures
(And En) Texts, dates, numbers, currencies, plurals, etc. App internationalization guide
(Crs Ru) Multiplatform UI с Compose
(Crs En) Unit & UI Testing With Compose Multiplatform
(Crs En) Full Guide to Dependency Injection With Koin for Compose Multiplatform
(Crs En) Kotlin Multiplatform Libraries Evolution
(Crs En) React Native & Expo Router Course – Build a Meditation App
(Dev Ru) Чистый код – не значит правильный: clean code, паттерны, лучшие практики
(Dev Ru) Менеджмент — ловушка или лучший карьерный путь для разработчика?
(Dev Ru) Разработка библиотек с использованием подхода Request for Comments
(Dev Ru) Пишем приложение на Ktor
(Dev Ru) Kotlin Script: для кого, зачем и как
(Dev En) AI and Kotlin: A Perfect Mix
(Dev En) Go for Absolute Beginners – Tutorial

Делитесь тем, что вы смотрели!
#ios #android #mobile #video
Адаптируем VoiceOver для людей

Меня зовут Женя Тютюев, я iOS-разработчик в компании 2ГИС. Хочу поделиться, как адаптировал наше приложение под VoiceOver:

• делюсь историей про сдвиг парадигмы и как перешёл из стадии «делать, потому что так Эпл советует» в совершенно новую — «делать для людей».
• как разработал новый вид snapshot-тестирования, чтобы ничего не ломалось при добавлении новых неадаптированных элементов.
• описал несколько нюансов, которые важно учесть в работе: escape, динамический расчёт accessibility, укрупнение элементов.

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

Статья: https://habr.com/ru/companies/2gis/articles/826360/
Платформа: iOS
👍1
DSFDropFilesView - простой класс представления NSView, через которое можно загружать файлы. Поддерживаются Swift, SwiftUI и Objective-C.

DSFDropFilesView на GitHub: https://github.com/dagronf/DSFDropFilesView
Платформа: iOS
⭐️: 24
Принципы SOLID на примере iOS-разработки

Привет, меня зовут Антон, я iOS-разработчик в компании Surf. Все программисты хотят писать красивый, масштабируемый и сопровождаемый код, и мобильщики – не исключение. Как в этом помогут принципы SOLID, и зачем они нужны?

Расскажем и покажем на примерах (куда без этого). Кейсы в статье относятся к iOS-разработке, но они будут полезны для всех разработчиков, независимо от стека.

Статья: https://habr.com/ru/companies/surfstudio/articles/826686/
Платформа: iOS
👍1
Unit-тесты в Android для начинающего разработчика

Меня зовут Александр Чекунков, я — Android‑разработчик в СБЕРе. Занимаюсь разработкой CSI‑опросов в мобильном приложении «Сбер». Я несу ответственность за функционал, который используют бизнес‑команды для оценки удовлетворённости клиентов.

Часто бывает так, что новый сотрудник, приходя на большой проект, совершенно не знаком с таким понятием как unit‑тестирование. Что это? Как это работает? С чего начать? Такие вопросы часто появляются у начинающих разработчиков.

Этой статьей я бы хотел ответить на эти вопросы, обсудить основы unit-тестирования, рассмотреть основные библиотеки, которые используются на нашем проекте, и привести практические примеры.

Статья: https://habr.com/ru/companies/sberbank/articles/825820/
Платформа: Android
Fig - используйте Google Таблицы в качестве удаленного конфига. Эта библиотека использует неофициальный API Google Таблиц для получения данных, который может перестать работать в любой момент. Лучше всего использовать эту библиотеку только для небольших проектов, где вам нужны быстрые, динамические значения без установки чего-то вроде Firebase.

Fig на GitHub: https://github.com/theapache64/fig
Платформа: Android
⭐️: 115
Поваренная книга SwiftUI: кнопки — Часть 1

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

Статья: https://apptractor.ru/info/articles/povarennaya-kniga-swiftui-knopki-chast-1.html
Платформа: iOS
This media is not supported in your browser
VIEW IN TELEGRAM
Библиотека нашего читателя. Valkyrie - плагин Intellij IDEA/Android Studio для генерации Compose ImageVector из SVG/XML. Удобное форматирование кода для сгенерированной иконки, поддержка перетаскивания внутри IDE.

Valkyrie на GitHub: https://github.com/ComposeGears/Valkyrie
Платформа: Android
⭐️: 16

Если у вас есть библиотеки, открытые или просто интересные пет-проекты, присылайте. Будем публиковать.
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
StreamUI - это библиотека, разработанная для SwiftUI, которая позволяет разработчикам программно создавать динамические видео. Она выходит за рамки традиционных инструментов генерации видео, таких как Remotion, предлагая рендеринг видео в реальном времени и возможности прямой трансляции. Идеально подходит для различных приложений - от безликих шорт-видео на Tiktok/Youtube до прямых трансляций событий и многого другого. StreamUI позволяет создавать видеошаблоны в SwiftUI и рендерить их с помощью динамических входных параметров.

StreamUI на GitHub: https://github.com/StreamUI/StreamUI
Платформа: iOS
⭐️: 119
Постепенный перенос проектов и пакетов на Swift 6

1. Определение изолированной части проекта
2. Поочередное включение новых возможностей Swift 6
3. Включение строгой проверки параллелизма
4. Смена версии языка на Swift 6

Статья: https://apptractor.ru/info/articles/postepennyy-perenos-proektov-i-paketov-na-swift-6.html
Платформа: iOS
Развенчиваем 6 мифов про современную Android-разработку

• Разработка под Android — это не Jetpack Compose
• Инъекция зависимостей — это не использование Hilt
• Jetpack ViewModel не является «ViewModel» MVVM
• Вы можете вызывать репозиторий непосредственно из ViewModel
• Рекомендации Google — это всего лишь «рекомендации Google»
• Вы не являетесь крупной компанией

Статья: https://apptractor.ru/info/articles/razvenchivaem-6-mifov-pro-sovremennuyu-android-razrabotku.html
Платформа: Android
Еще один проект нашего читателя. Colors AI - это бесплатный генератор цветовых схем с открытым исходным кодом и использующий глубокое обучение на основе Colormind и Huemint API. Приложение сделано в шаблоне BLoC с помощью Flutter SDK и доступно для всех основных операционных систем, включая мобильные.

Colors AI на GitHub: https://github.com/tsinis/colors_ai
Платформа: кроссплатформа
⭐️: 117

Если у вас есть библиотеки, открытые или просто интересные пет-проекты, присылайте. Будем публиковать.
3
Strong Skipping Mode — новый способ оптимизации стабильности в Jetpack Compose

Новый strong skipping mode для управления стабильностью классов в Jetpack Compose меняет рекомпозиции в вашем приложении. В этой статье мы расскажем о том, какие случаи он решает за вас, а какие необходимо контролировать вручную. Мы также ответим на часто возникающие вопросы, например, нужно ли по-прежнему помнить о лямбда-функциях, нужны ли неизменяемые коллекции Kotlinx или даже как стабилизировать все классы вашей доменной модели.

Статья: https://apptractor.ru/info/articles/strong-skipping-mode-compose.html
Платформа: Android
UI-киты iOS 18 и iPadOS 18 для Figma

Что нового:

• Переменные цвета для всех системных цветов с light, darkи dark elevated значениями
• Режим переключения между светлыми, темными и тонированными иконками приложений
• Обновленное оформление иконок приложений
• Страница примеров для большинства системных компонентов и опыта
• Новая плавающая панель вкладок iPadOS
• Улучшенная организация свойств экземпляров для более быстрой настройки
• Новые компоненты "Центр управления" и "Экран блокировки" с настраиваемыми элементами управления

Ссылка: https://www.figma.com/community/file/1385659531316001292/ios-18-and-ipados-18
Платформа: iOS
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