ch
Feedback
AppFiles - Mobile Development

AppFiles - Mobile Development

前往频道在 Telegram

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

显示更多
2 167
订阅者
+124 小时
+17
+930
帖子存档
Время запуска приложения: подборка статей 🔨 iOSОфициальное руководство AppleКак мы сократили время запуска нашего iOS-приложения на 60%Как 5 приложений для iOS могут сократить время запуска в среднем на 28%Измерение задержки старта iOS-приложений в масштабе UberFaultOrdering — открытый инструмент создания файлов компоновки для ускорения запуска iOS-приложенийИзмерение задержки старта iOS-приложений в масштабе Uber 🧰 Android • Официальное руководство GoogleКак мы снизили время запуска FullStory на Android на 75%Как мы сократили время запуска Android-приложения на 77%Как один Android-разработчик за месяц сократил время запуска приложения Lyft 21%Notion на Android теперь запускается в два раза быстрееПреодолевая барьер скорости: как неблокирующие заставки сокращают время запуска приложений Android на 90%Ускоряем запуск приложения - App Startup LibraryКак я сократил время загрузки Android-приложения на 70% с помощью параллельных сетевых вызововУлучшение времени запуска приложений на Android: уроки Facebook

Ускоряем запуск приложения - App Startup Library Цель этой статьи — подробно разобраться в том, почему появилась новая библио
Ускоряем запуск приложения - App Startup Library Цель этой статьи — подробно разобраться в том, почему появилась новая библиотека Android Jetpack App Startup Library, какие проблемы она решает в текущих шаблонах инициализации приложений и как она помогает сократить это критическое время запуска. Понимание необходимости этой библиотеки — ключ к её эффективному использованию. Статья: https://apptractor.ru/info/articles/app-startup-library.html Платформа: Android

OTP Helper - копирование кодов из SMS и уведомлений Приложение с открытым исходным кодом, которое позволяет автоматически коп
OTP Helper - копирование кодов из SMS и уведомлений Приложение с открытым исходным кодом, которое позволяет автоматически копировать одноразовые пароли и коды из SMS и уведомлений. Приложение работает полностью офлайн и без доступа к интернету. Поэтому вы можете быть уверены, что ваши данные не покинут ваше устройство. Приложение работает в двух режимах: 1. Уведомления Приложение настраивает прослушиватель уведомлений и считывает все уведомления, отправляемые любыми приложениями. Это позволяет приложению обнаруживать коды в электронных письмах и, возможно, в других приложениях, отправляющих уведомления. При получении уведомления приложение формирует одну строку из всего текста уведомления, а затем проверяет, следует ли его игнорировать. Если текст не игнорируется, он сопоставляется с регулярным выражением для обнаружения кода. Извлеченный код обрабатывается в соответствии с настройками. 2. SMS Приложение прослушивает все входящие SMS-сообщения и обрабатывает их так же, как в режиме уведомлений: проверяет, следует ли его игнорировать, и если нет, сопоставляет с регулярным выражением для обнаружения кода. Извлеченный код обрабатывается в соответствии с настройками. OTP Helper на GitHub: https://github.com/jd1378/otphelper Платформа: Android ⭐️: 695

Liquid - жидкое стекло на Jetpack Compose Liquid добавляет эффекты в стиле Liquid Glass в Jetpack Compose. Он позволяет преломлять, замораживать и искривлять содержимое за элементами пользовательского интерфейса, создавая динамические эффекты матового стекла, линз или жидкости. Работая с RuntimeShaders, Android Graphics Shading Language (AGSL) и API ModifierNodeElement, он обеспечивает GPU-ускоренные эффекты в вашем пользовательском интерфейсе на Compose. Liquid на GitHub: https://github.com/FletchMcKee/liquid Платформа: Android ⭐️: 79

Понимание Tasks и Back Stack в Android — история работы вашего приложения Статья отлично разбирает, как устроены таски (tasks
Понимание Tasks и Back Stack в Android — история работы вашего приложения Статья отлично разбирает, как устроены таски (tasks) и стек возврата (back stack) под капотом. Автор показывает, что активити — это «глава истории», а стек — это последовательность этих глав, которыми управляет Android по принципу LIFO (последний зашёл — первый вышел). Но самое интересное — как разработчики могут контролировать это поведение. В статье глубоко объясняются launch modes (standard, singleTop, singleTask, singleInstance) и intent flags (FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_CLEAR_TOP и др.), а также такие нюансы, как taskAffinity, атрибуты вроде clearTaskOnLaunch и поведение кнопки «назад» на Android 12+. Если вы пишете навигацию или сложные потоки переходов в Android-приложении — эта статья точно стоит внимания. Статья: https://medium.com/@chinazablossom7/understanding-tasks-and-the-back-stack-in-android-the-story-behind-your-apps-journey-fde477dd1fd0 Платформа: Android

«Ох, зря я туда полез…»: история о том, как мы переезжали на React Native Если кратко, то было интересно и иногда даже страшн
«Ох, зря я туда полез…»: история о том, как мы переезжали на React Native Если кратко, то было интересно и иногда даже страшно. Баги, сложности, неочевидные подводные камни… В общем, история получилась длинная, поехали. Статья: https://habr.com/ru/companies/profi_ru/articles/954888/ Платформа: кроссплатформа

📺 Видео и подкасты за неделю @AppFiles(iOS Ru) Неуловимый iOS-ботовод. Задетекти меня, если сможешь: автореги, боты, спамеры(iOS Ru) Разработка под Apple Vision Pro: исследуем возможности гарнитуры(iOS En) Secure your app with Memory Integrity Enforcement(iOS En) Interactive Map with Draggable Bottom Sheet - SwiftUI(iOS En) iOS App Development in 2025: How to Choose Your Tech Stack and Architecture(iOS En) Full-Screen Sheets Using SwiftUI(iOS En) Customized Animated Paywall using Native SwiftUI StoreKit APIs(And Ru) Автообновление Android: когда можно не бояться санкций сторов(And Ru) Доверяй, но проверяй: про корневые сертификаты в Android и не только(And Ru) Как правильно написать фичу. Часть 1(And Ru) Что ждёт Android-разработчика на собесе в Wildberries (+ все собеседования) • (Crs Ru) Миграция больших приложений на KMP: проблемы, подводные камни, решения(Crs En) Build Your First Compose Multiplatform Web App(Crs En) In-depth on Metro — with Zac Sweers(Dev Ru) Как мы сделали CI, которому можно доверять(Dev Ru) Почему текстовый поиск устарел — векторные базы, эмбеддинги, RAG(Dev En) How to build AI agents with memory(Dev En) You can write code faster. Can you deliver it faster? Прошлогодние видео: • (iOS Ru) Собеседование iOS-разработчика: проектирование и лайфкодинг(Crs Ru) Flutter Web глазами мобильного разработчика(Dev Ru) Мобильная разработка в Алисе и YaOS: как это работает(Dev Ru) Перформанс мобильных приложений

Elegant Emoji Picker - красивый пикер эмодзи Почему в UIKit нет встроенного инструмента для выбора эмодзи? По той же причине,
Elegant Emoji Picker - красивый пикер эмодзи Почему в UIKit нет встроенного инструмента для выбора эмодзи? По той же причине, по которой нет приложения-калькулятора в iPadOS? Возможно. Но стоит ли нам просто потакать лени Крейга? Не в этот раз. UIEmojiPicker — элегантный инструмент для выбора эмодзи. Elegant Emoji Picker — настраиваемый, простой в использовании, еще более простой в реализации и красивый (субъективно) пикер эмодзи для iOS, iPadOS и MacOS. Elegant Emoji Picker на GitHub: https://github.com/Finalet/Elegant-Emoji-Picker Платформа: iOS ⭐️: 90

Генерация изображений с использованием Foundation Models в SwiftUI Я хочу генерировать изображения с помощью Foundation Model
Генерация изображений с использованием Foundation Models в SwiftUI Я хочу генерировать изображения с помощью Foundation Models. Думаю, как только вы это увидели, основной подход тоже стал довольно очевиден. Определим инструмент для генерации изображений - ImageCreator из фреймворка Image Playground. Звучит очень просто, правда? Тогда зачем я вообще пишу эту статью? Потому что cуществует много вещей, которые мы не можем возвращать как выходные данные инструмента или определять как тип управляемого ответа модели. Конечно, можно просто предоставить несколько отдельных пользовательских интерфейсов для каждой цели, например: один для чата, один для генерации изображений, и использовать либо Foundation Models, либо Image Playground соответственно. Возможно, так было два года назад, но в конце 2025 года это точно не то, что нужно делать. Что, если вам нужно генерировать и другие типы артефактов, помимо изображений? Звуковые дорожки. Файлы кода. И бла-бла-бла. Вы собираетесь создавать отдельный пользовательский интерфейс для каждого из них и ожидать, что пользователь будет переключаться между ними? Статья: https://apptractor.ru/info/articles/generatsiya-izobrazheniy-s-ispolzovaniem-foundation-models-v-swiftui.html Платформа: iOS

JetCo Library - готовые UI-компоненты Compose JetCo — это готовая к использованию библиотека Compose с готовыми компонентами
JetCo Library - готовые UI-компоненты Compose JetCo — это готовая к использованию библиотека Compose с готовыми компонентами пользовательского интерфейса как для Android, так и для KMP. Разработанная специально для энтузиастов Jetpack Compose, библиотека JetCo сделает вашу жизнь проще, ваши приложения — красивее, а ваших пользователей — счастливее.  JetCo на GitHub: https://github.com/developerchunk/JetCo Платформа: Android ⭐️: 111

Почему моё Android-приложение крашится? Если вы Андроид-разработчик, думаю, вам часто приходилось сталкиваться с ситуациями,
Почему моё Android-приложение крашится? Если вы Андроид-разработчик, думаю, вам часто приходилось сталкиваться с ситуациями, когда код вашего приложения выбрасывает необрабатываемое исключение и ваше приложение закрывается. На сленге можно сказать, что «приложение крашится». В этой статье автор разберётся, почему это происходит и какие механизмы лежат в основе такого поведения. Статья: https://habr.com/ru/companies/alfa/articles/950280/ Платформа: Android

Rijksmuseum - музей на Kotlin Multiplatform Rijksmuseum — это многомодульное кроссплатформенное приложение на Kotlin и Compos
Rijksmuseum - музей на Kotlin Multiplatform Rijksmuseum — это многомодульное кроссплатформенное приложение на Kotlin и Compose, которое предлагает захватывающий способ изучения коллекции произведений искусства знаменитого Рейксмузеума в Амстердаме. Внутри: Kotlin Multiplatform, Compose Multiplatform, корутины, Koin, Coil, Ktor, Compose Navigation, Jetpack Lifecycle и Jetpack ViewModel. Rijksmuseum на GitHub: https://github.com/fethij/Rijksmuseum Платформа: Android/кроссплатформа ⭐️: 383

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