ar
Feedback
AppFiles - Mobile Development

AppFiles - Mobile Development

الذهاب إلى القناة على Telegram

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

إظهار المزيد
2 167
المشتركون
+124 ساعات
+17 أيام
+930 أيام
أرشيف المشاركات
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

SQLiteData - быстрая и легкая замена SwiftData с SQL и CloudKit SQLiteData — это быстрая и лёгкая замена SwiftData от Point-F
SQLiteData - быстрая и легкая замена SwiftData с SQL и CloudKit SQLiteData — это быстрая и лёгкая замена SwiftData от Point-Free, включающая SQL и синхронизацию с CloudKit (и даже шаринг CloudKit), построенная на основе популярной библиотеки GRDB. Пример:
@FetchAll
var items: [Item]

@Table
struct Item {
  let id: UUID
  var title = ""
  var isInStock = true
  var notes = ""
}
Этот пример извлекают элементы из внешнего хранилища данных с использованием типов данных Swift, и автоматически отслеживается SwiftUI, поэтому представления пересчитываются при изменении внешних данных. При этом SQLiteData работает непосредственно с SQLite и может использоваться откуда угодно, включая UIKit, модели @Observable и многое другое. SQLiteData на GitHub: https://github.com/pointfreeco/sqlite-data Платформа: iOS ⭐️: 1.1K

Kotlin QA: как перейти с Java и писать тесты в 2 раза быстрее С момента официального объявления Kotlin как предпочтительного
Kotlin QA: как перейти с Java и писать тесты в 2 раза быстрее С момента официального объявления Kotlin как предпочтительного языка для Android‑разработки в 2017 году, язык стремительно завоевал популярность не только в мобильной сфере, но и в автоматизации тестирования. Многие команды QA инженеров сталкиваются с выбором: остаться на привычном Java‑стеке или перейти на Kotlin. В этой статье мы рассмотрим некоторые ключевые различия, преимущества и практические аспекты перехода на Kotlin в контексте автоматизации тестирования. Статья: https://habr.com/ru/companies/otus/articles/950864/ Платформа: Android

Analytiks - события, пользователи и данные Analytiks — это мощная библиотека для Android, разработанная для упрощения интегра
Analytiks - события, пользователи и данные Analytiks — это мощная библиотека для Android, разработанная для упрощения интеграции аналитики путём централизации нескольких аналитических сервисов в едином унифицированном интерфейсе. Вместо управления несколькими SDK и их различными API, Analytiks предлагает единый способ отслеживания событий, идентификации пользователей и управления аналитикой во всём приложении. Analytiks на GitHub: https://github.com/aminekarimii/analytiks Платформа: Android ⭐️: 54

Загрузка данных во ViewModel: рекомендации и Flow-based архитектура Дискуссии об архитектуре Android часто перерастают в жарк
Загрузка данных во ViewModel: рекомендации и Flow-based архитектура Дискуссии об архитектуре Android часто перерастают в жаркие споры, вызывая и восторг, и резкую критику. Писать на такие темы непросто, и именно поэтому это стоит делать. Эта статья показывает мой субъективный взгляд на паттерны загрузки данных. Взгляд, отточенный опытом и восстановлением после недавних операций (одно из которых еще продолжается). Рассматривайте статью как снапшот моих навыков и знаний в 2025 году. Статья: https://habr.com/ru/articles/950494/ Платформа: Android

Миграция на SPM: что мы выиграли и что потеряли В этом году мы решили сменить менеджер зависимостей и мигрировать с CocoaPods
Миграция на SPM: что мы выиграли и что потеряли В этом году мы решили сменить менеджер зависимостей и мигрировать с CocoaPods на SPM. Результаты оправдали ожидания, хотя и сложности на этом пути, конечно, были. В статье расскажу про проблемы, с которыми мы столкнулись в процессе, и предупрежу, на что стоит обратить внимание, чтобы не повторить наши ошибки. Статья: https://habr.com/ru/companies/tuturu/articles/948276/ Платформа: iOS

📺 Видео и подкасты за неделю @AppFiles(iOS En) Code along with the Foundation Models framework(iOS En) SwiftUI Pro Components Collection - Build Amazing iOS Apps Faster!(iOS En) SwiftUI WebView reloaded: adding a "View Original" feature(iOS En) Convert SwiftUI Views into Multi-Page PDF File(iOS En) Is MVVM a bad architecture for SwiftUI?(iOS En) iOS 26 Custom Menu Using SwiftUI(And Ru) Роболектрик-скриншот-тесты на платформе Android(And En) Optimize your app battery drain using Android Vitals wake lock metric(And En) Threads vs. Kotlin Coroutines vs. Dispatchers(And En) Everything About Context Parameters In Kotlin (Super Cool New Feature!)(Crs En) Make your UI Beautiful and Adaptive on each platform (Compose Multiplatform(Dev Ru) Кто такой сеньор глазами тимлида(Dev Ru) Как нейросети обещали ускорить тестирование, а сделали только хуже(Dev Ru) Строим продукт на основе AI(Dev En) REST API Design for Mobile Apps: A Complete Guide(Dev En) Your First AI Agent in Kotlin(Dev En) How to Build Advanced AI Agents – Course for Beginners (LiveKit, Exa, LangChain) Прошлогодние видео: • (iOS Ru) Ускоряем SwiftUI с Observable(iOS Ru) Как укротить виджеты в супераппе?(iOS Ru) UICollectionViewLayout с самого начала(iOS Ru) UITableView с различными типами ячеек(And Ru) Размер имеет значение: как измерить и уменьшить вес Android-приложения(And Ru) Установка Android-приложений от доисторических времен до наших дней(Crs Ru) React Native перевернул игру(Crs Ru) Темная сторона изолятов в Dart(Dev Ru) Интероп – неизбежность в больших системах: C и C++, JNI, WinAPI

Swift Explorer - глубокий анализ кода Swift Swift Explorer - инструмент для быстрого исследования и анализа Swift Intermediat
Swift Explorer - глубокий анализ кода Swift Swift Explorer - инструмент для быстрого исследования и анализа Swift Intermediate Representation (IR), созданного компилятором LLVM, и сгенерированного ассемблерного кода. Что дает: • Глубокое понимание кода: Разработчики могут видеть, как код Swift преобразуется в LLVM IR и код ассемблера, что помогает им лучше понимать оптимизацию и низкоуровневое поведение. • Расширенная отладка: Просмотр LLVM IR и ассемблерного кода может помочь выявить проблемы производительности или трудноотслеживаемые ошибки в исходном коде. • Образование и обучение: Ценный образовательный инструмент для изучения компиляторов и того, как различные языковые конструкции преобразуются в промежуточное представление и код ассемблера. • Оптимизация: Помогает выявить и оптимизировать фрагменты кода, которые неэффективно компилируются, предоставляя информацию из LLVM IR и кода ассемблера. • Сравнительный анализ: Позволяет сравнить, как разные подходы или версии кода генерируют различный IR и ассемблерный код, облегчая выбор оптимальных практик программирования. Swift Explorer на GitHub: https://github.com/heroesofcode/swift-explorer Платформа: iOS ⭐️: 9