ru
Feedback
AppFiles - Mobile Development

AppFiles - Mobile Development

Открыть в Telegram

Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.

Больше
2 176
Подписчики
Нет данных24 часа
+47 дней
+930 день
Архив постов
SwiftyChat - интерфейс чата на SwiftUI SwiftyChat - готовый интерфейс чата со встроенными ячейками сообщений для быстрого ста
SwiftyChat - интерфейс чата на SwiftUI SwiftyChat - готовый интерфейс чата со встроенными ячейками сообщений для быстрого старта.  Фичи: • Поддержка строк с атрибутами • Поддержка альбомной ориентации (автоматически масштабирует ячейки сообщений с заданным свойством cellWidth, если оно задано) • Аватар пользователя (с различными вариантами расположения, использование необязательно) • Сокрытие клавиатуры (при касании за ее пределами) • Многострочная панель ввода • Прокрутка в самый вниз • Воспроизведение видео в фоновом режиме «Картинка в картинке» • Скругление определённых углов текстовых сообщений. • Реализация кастомных ячеек сообщений • Свайп для скрытия клавиатуры SwiftyChat на GitHub: https://github.com/EnesKaraosman/SwiftyChat Платформа: iOS ⭐️: 312

Преодолевая барьер скорости: как неблокирующие заставки сокращают время запуска приложений Android на 90% В статье показано,
Преодолевая барьер скорости: как неблокирующие заставки сокращают время запуска приложений Android на 90% В статье показано, что классический SplashActivity тормозит старт, ведь пока экран с логотипом не закроется, контент не рендерится. Вместо этого автор предлагает неблокирующий splash screen — накладывать анимацию поверх основной активити и управлять показом через OnPreDrawListener, чтобы UI подгружался параллельно. Результаты впечатляют: по данным тестов, время до первого отображения контента сокращается до 90%, а при сложных Lottie-анимациях — до 95%. Приложение визуально стартует почти мгновенно, а splash становится не тормозом, а маской загрузки. Минусы тоже есть — повышенное потребление памяти и нагрузка на слабых устройствах. Поэтому автор советует адаптивный подход: лёгкий splash для low-end девайсов и анимированный для мощных. Полный разбор с кодом и графиками — в оригинальной статье. Статья: https://sankalpchauhan.com/breaking-the-speed-barrier-how-non-blocking-splash-screens-cut-android-app-launch-time-by-90 Платформа: Android

Compose Exploded Layers - слои Compose в 3D Compose Exploded Layers позволяет визуально разделить пользовательский интерфейс на слои, расположенные вдоль вектора смещения, визуализируя компонуемое дерево в трёхмерном пространстве. Используйте библиотеку для: • Показа структуры или иерархии в сложных макетах • Создания динамических визуализаций для карточек, списков или фотографий • Добавления глубины переходам, вступлениям или интерфейсам редактора Compose Exploded Layers на GitHub: https://github.com/pingpongboss/compose-exploded-layers Платформа: Android ⭐️: 38

Делаем анимацию отрисовки для SF Symbols в SwiftUI В отличие от традиционной анимации с плавным изменением масштаба, плавным изменением направления движения или эффектом подпрыгивания, анимация рисования имитирует естественный процесс рисования символа пером, создавая более привлекательные и выразительные пользовательские интерфейсы. В результате получается более выразительный и продуманный эффект, который ощущается как созданный вручную, динамичный и реалистичный. Статья: https://apptractor.ru/info/articles/delaem-animatsiyu-otrisovki-dlya-sf-symbols-v-swiftui.html Платформа: iOS

Как я писал свою звонилку для видеозвонков После запуска VK MAX звонков все мы ощутили «улучшение качества связи»: WhatsApp и
Как я писал свою звонилку для видеозвонков После запуска VK MAX звонков все мы ощутили «улучшение качества связи»: WhatsApp и Telegram-звонки внезапно стали то заикаться, то просто падать. На парковке созвониться? Забудьте. Через VPN по мобильной сети? Тоже боль. Добавим к этому ещё и порезанную сотовую связь «из-за дронов» — и получаем настоящий ад для тех, кто привык общаться через привычные мессенджеры. Решение? Сделать свою звонилку. Так родился проект JOPA Call — Just One Peer App (или, если по-русски: «Просто одно приложение для звонков»). Статья: https://habr.com/ru/articles/953222/ Платформа: Android

Swift Codable На этой неделе мы поговорим ещё об одном встроенном типе Swift - Codable. Думаю, все, кто писал клиент-серверны
Swift Codable На этой неделе мы поговорим ещё об одном встроенном типе Swift - Codable. Думаю, все, кто писал клиент-серверные приложения, сталкивались с этим протоколом: он позволяет преобразовывать наши структуры в бинарные данные и обратно. Однако, полагаю, немногие задумывались, как этот привычный механизм работает под капотом. Сегодня я постараюсь рассказать об этом. Статья: https://habr.com/ru/articles/953560/ Платформа: iOS/Swift

SwiftUI-Adapter - поддержка новых модификаторов SwiftUI на старых версиях iOS Библиотека от читателя: SwiftUI-Adapter избавит
SwiftUI-Adapter - поддержка новых модификаторов SwiftUI на старых версиях iOS Библиотека от читателя: SwiftUI-Adapter избавит вас от головной боли при работе с новыми модификаторами SwiftUI. Недавно я наткнулся на удобную Android-библиотеку, которая упрощает работу с разными версиями API и подумал: «Почему бы не сделать что-то подобное для SwiftUI?». После этого родилась идея разработать инструмент, который избавит вас от бесконечных проверок available и сделает код чище. Установка библиотеки выполняется через Swift Package Manager. Зачем это нужно? Каждый раз, когда Apple выпускает новый модификатор в SwiftUI, нам приходится писать такие конструкции:
if #available(iOS 15.0, macOS 12.0, *) {
  YourView()
    .badge(5)
} else {
  YourView()
}
SwiftUI-Adapter делает эту рутину за вас! Просто используйте единый синтаксис – проверки версий останутся под капотом:
YourView()
  .adapter.badge(5)
Преимущества • Не влияет на производительность: все проверки производятся на этапе компиляции • Чистая кодовая база: больше никаких available в каждом втором файле • Простота интеграции: добавляется за пару минут через SPM • Открытый исходный код: полная прозрачность, возможность вносить правки и участвовать в развитии • Библиотека поддерживает модификаторы доступные с iOS 15 и выше, а так же macOS 12 и выше • SwiftUI-Adapter поддерживает большое количество модификаторов, включая новые модификаторы, которые были добавлены в iOS 26 и macOS 26. Описание каждого из модификаторов доступно на странице в GitHub. SwiftUI-Adapter на GitHub: https://github.com/Wolfaks/SwiftUI-Adapter Платформа: iOS ⭐️: 10

SwiftUI-Adapter - поддержка новых модификаторов SwiftUI на старых версиях iOS Библиотека от читателя: SwiftUI-Adapter избавит вас от головной боли при работе с новыми модификаторами SwiftUI. Недавно я наткнулся на удобную Android-библиотеку, которая упрощает работу с разными версиями API и подумал: «Почему бы не сделать что-то подобное для SwiftUI?». После этого родилась идея разработать инструмент, который избавит вас от бесконечных проверок available и сделает код чище. Установка библиотеки выполняется через Swift Package Manager. Зачем это нужно? Каждый раз, когда Apple выпускает новый модификатор в SwiftUI, нам приходится писать такие конструкции:
if #available(iOS 15.0, macOS 12.0, *) {
  YourView()
    .badge(5)
} else {
  YourView()
}
SwiftUI-Adapter делает эту рутину за вас! Просто используйте единый синтаксис – проверки версий останутся под капотом:
YourView()
  .adapter.badge(5)
ПреимуществаНе влияет на производительность: все проверки производятся на этапе компиляции Xистая кодовая база: больше никаких available в каждом втором файле Простота интеграции: добавляется за пару минут через SPM Открытый исходный код: полная прозрачность, возможность вносить правки и участвовать в развитии Библиотека поддерживает модификаторы доступные с iOS 15 и выше, а так же macOS 12 и выше SwiftUI-Adapter поддерживает большое количество модификаторов, включая новые модификаторы, которые были добавлены в iOS 26 и macOS 26. Описание каждого из модификаторов доступно на странице в GitHub. SwiftUI-Adapter на GitHub: https://github.com/Wolfaks/SwiftUI-Adapter

Отделяем мух от Kotlett. Динамические обновления без релизов и BDUI Kotlett — это внутренняя платформа VK, которая реализует
Отделяем мух от Kotlett. Динамические обновления без релизов и BDUI Kotlett — это внутренняя платформа VK, которая реализует паттерн code-push, то есть динамическую доставку фич для Android- и iOS-приложений без использования BDUI и релиза приложения в магазине. В этой статье автор подробно рассказывает, как устроен Kotlett, как он решает проблемы BDUI, обеспечивает офлайн-работу и почему в компании считают его перспективным фреймворком «динамики для народа». Статья: https://habr.com/ru/companies/vktech/articles/950588/ Платформа: разработка

📺 Видео и подкасты за неделю @AppFiles(iOS Ru) Переезд на Swift 6: строим графы для успешной миграции(iOS En) Code along with the Foundation Models framework(iOS En) iOS 26 Custom Tab Bar With Action Button Using SwiftUI(iOS En) SwiftUI WebView (URL Argument) – Features, Validation & More(And Ru) Android добрался до ноутбуков(And Ru) Как убрать Activity context из ViewModel и написать Unit-test(And En) Under the hood with Google AI on Android(And En) Android developer verification(And En) The New Material3 Expressive Explained In 7 Minutes(And En) Avoid this App Crash Issue in a Production(And En) Mobile System Design Interview With Lead Android Engineer(Crs En) Is Kotlin Multiplatform Right for Your App?(Dev Ru) Docs as Code. Когда документация становится частью кода, а не пыткой(Dev Ru) Архитектура LLM — BERT, трансформеры, attentions(Dev En) AWS CloudOps Engineer Associate (SOA-C03) Certification Course – Pass the Exam Прошлогодние видео: • (iOS Ru) Как мы запекали 3D-пиццу(iOS Ru) Есть ли ORM круче SwiftData(iOS Ru) Макросы спустя полгода: не все так гладко(iOS Ru) DriverKit: гоняем данные по проводу без мам, пап и MFi(Dev Ru) Уволить нельзя терпеть(Dev Ru) Lua – идеальный встраиваемый язык

QuickBall - быстрый доступ к системным настройкам QuickBall - плавающее меню, обеспечивающее быстрый доступ к системным функц
QuickBall - быстрый доступ к системным настройкам QuickBall  - плавающее меню, обеспечивающее быстрый доступ к системным функциям, таким как регулировка громкости, яркости и блокировка экрана. Шар остаётся видимым поверх всех приложений и автоматически скрывается на экране блокировки. QuickBall на GitHub: https://github.com/chayanforyou/QuickBall Платформа: Android ⭐️: 9

Скрытые угрозы Room: почему база тормозит и как это исправить Вам говорят добавить офлайн кэширование в приложение для Androi
Скрытые угрозы Room: почему база тормозит и как это исправить Вам говорят добавить офлайн кэширование в приложение для Android. «Просто используйте Room, всё будет просто». Несколько запросов, пара сущностей, и всё готово за полдня. Три дня спустя ваше приложение зависает, запросы еле ползают, а в консоли Play накапливаются ANR-ошибки. Знакомо? Вот что происходит, когда база данных Room сталкивается с реальными масштабами. А хорошая новость? У большинства этих проблем есть проверенные решения. Статья: https://apptractor.ru/info/articles/skrytye-ugrozy-room-pochemu-baza-tormozit-i-kak-eto-ispravit.html Платформа: Android

Погружаемся в недра Retrofit Думаю, многие задумывались о том, что происходит с функциями в интерфейсе Retrofit сервиса, когд
Погружаемся в недра Retrofit Думаю, многие задумывались о том, что происходит с функциями в интерфейсе Retrofit сервиса, когда мы помечаем их ключевым словом suspend? У некоторых даже есть заблуждение, что для сетевых запросов в таком случае используется корутиновский Dispatchers.IO. Спойлер — это не совсем так. В этой статье мы как раз разберёмся, как всё работает на самом деле. Статья: https://habr.com/ru/companies/alfa/articles/947908/ Платформа: Android

Swift Configuration - чтение конфигураций Swift Configuration - библиотека от Apple для чтения конфигураций в приложениях. Sw
Swift Configuration - чтение конфигураций Swift Configuration - библиотека от Apple для чтения конфигураций в приложениях. Swift Configuration задает уровень абстракции между читателями конфигурации и провайдерами. Приложения и библиотеки считывают конфигурацию через согласованный API, в то время как фактический поставщик настраивается один раз в точке входа приложения. Библиотека позволяет объединять нескольких поставщиков в иерархию, где значения из источников с более высоким приоритетом переопределяют значения из источников с более низким приоритетом. Поддерживает множество встроенных провайдеров - переменные окружения, аргументы командной строки, JSON или YAML файлы, директории файлов, значения в памяти и т.п. Swift Configuration на GitHub: https://github.com/apple/swift-configuration Платформа: iOS ⭐️: 393

Что произойдет, если заменить каждый цикл For в Swift на map, filter и reduce? Каждый разработчик Swift обожает хороший цикл
Что произойдет, если заменить каждый цикл For в Swift на map, filter и reduce? Каждый разработчик Swift обожает хороший цикл for. Это наш хлеб насущный. Нужно перебрать числа? Цикл for. Собрать данные? Цикл for. Изменить состояние? Да, снова цикл for. Но я всё время слышал из «лагеря функционального программирования» шепоток о том, что map, filter и reduce могут заменить большинство циклов for — и не просто заменить их, а сделать их чище, быстрее и выразительнее. Поэтому я задал себе простой вопрос: а что, если я полностью откажусь от циклов for в своей кодовой базе Swift и заменю их функциональными конструкциями? Я решил попробовать. И результаты оказались… удивительными. Статья: https://apptractor.ru/info/articles/for-map-filter-reduce.html Платформа: iOS/Swift

Укрощаем Android UI-тесты на Compose: как Page Object спас нас от рутины Вы когда-нибудь тратили слишком много драгоценного в
Укрощаем Android UI-тесты на Compose: как Page Object спас нас от рутины Вы когда-нибудь тратили слишком много драгоценного времени на поиск нужного testTag в иерархии Compose Screen? А потом еще полдня чинили тесты после каждого чиха в UI? Или, может быть, несколько недель ждали, пока в дизайн-систему добавят недостающий тег или семантику, чтобы вообще начать писать свой UI-тест? Если вы хоть на один вопрос ответили «Да», эта статья для вас. Давайте навсегда покончим с этой рутиной и займемся более креативными задачами! Статья: https://habr.com/ru/companies/raiffeisenbank/articles/950474/ Платформа: Android

ShadowGlow - улучшенные тени для Jetpack Compose ShadowGlow — это библиотека Jetpack Compose с широкими возможностями настрой
ShadowGlow - улучшенные тени для Jetpack Compose ShadowGlow — это библиотека Jetpack Compose с широкими возможностями настройки, разработанная для отображения теней у элементов. Создавайте потрясающие визуальные эффекты глубины, свечения и динамики с помощью таких функций, как параллакс, управляемый гироскопом, и плавная анимация дыхания. Фичи: 🎨 Сплошные и градиентные тени 📐 Настройка форм 🎭 Различные стили размытия 🌌 Эффект параллакса с гироскопом 🌬 Эффект пульсирующей анимации 🚀 Простота использования 📱 Совместимость со светлыми и темными темами ShadowGlow на GitHub: https://github.com/StarkDroid/compose-ShadowGlow Платформа: Android ⭐️: 17

Derived Data: 5 ошибок iOS-разработчиков Папка Derived Data (производные данные) — один из важнейших каталогов, используемых
Derived Data: 5 ошибок iOS-разработчиков Папка Derived Data (производные данные) — один из важнейших каталогов, используемых iOS-разработчиком. Хотя вы не работаете с ней напрямую, Xcode активно использует её для кэширования информации и оптимизации разработки. Тем не менее, у iOS-разработчиков есть множество возможностей максимально эффективно использовать Derived Data. Будь то удаление файлов для оптимизации сборки или просмотр информации о каталоге, все эти действия могут улучшить работу разработчиков. Давайте рассмотрим 5 ошибок, которые совершают iOS-разработчики. Статья: https://apptractor.ru/info/articles/derived-data.html Платформа: iOS

Почему loadKoinModules и unloadKoinModules в Koin могут ломать ваши зависимости и как этого избежать В Android-проектах Koin
Почему loadKoinModules и unloadKoinModules в Koin могут ломать ваши зависимости и как этого избежать В Android-проектах Koin остаётся одной из самых популярных DI-библиотек, особенно в MVP/MVI и Compose-приложениях. Она проста в настройке, гибкая и хорошо работает в больших кодовых базах. Но многие команды, стремясь к модульности и тестопригодности, начинают активно использовать функции loadKoinModules() и unloadKoinModules(). И здесь разработчики часто натыкаются на странную ошибку:
org.koin.core.error.NoBeanDefFoundException: No definition found for …
Статья: https://habr.com/ru/articles/951778/ Платформа: Android

Мой iPhone 8 отказывается умирать: теперь это OCR-сервер на солнечном питании Большинство людей после апгрейда закидывают сво
Мой iPhone 8 отказывается умирать: теперь это OCR-сервер на солнечном питании Большинство людей после апгрейда закидывают свои старые iPhone в ящик. А вот автор статьи превратил свой старый iPhone 8 в OCR-сервер на солнечных батареях, используя фреймворк Apple и зарядную станцию EcoFlow River 2 Pro. Он месяцами напролёт работает в режиме 24/7, обрабатывая тысячи изображений на полностью автономном питании. За год с лишним сервер обработал 83 418 запросов на распознавание текста (OCR) и 48 ГБ изображений, используя только фреймворк Apple Vision и возобновляемую энергию. Статья: https://habr.com/ru/companies/ruvds/articles/950814/ Платформа: iOS