AppFiles - Mobile Development
2.16K subscribers
3.04K photos
41 videos
12 files
4K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Copy-On-Write в Swift: семантика, заблуждения и кастомная реализация

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

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

Статья: https://apptractor.ru/info/articles/copy-on-write-v-swift-semantika-zabluzhdeniya-i-kastomnaya-realizatsiya.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
NVActivityIndicatorView - индиакторы загрузки

NVActivityIndicatorView - коллекция потрясающих анимаций загрузки. Больше 30 вариантов показать, что ваш контент загружается. 

NVActivityIndicatorView на GitHub: https://github.com/ninjaprox/NVActivityIndicatorView
Платформа: iOS
⭐️: 10.7K

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Ой, всё упало: 4+ способа достать креш-отчет с iOS-приложения

Если привести аналогии, то логи — это жалобная книга, а креш‑отчет — это заключение судмедэксперта. В нём написано точное время смерти, причина и состояние памяти устройства в последний момент жизни приложения.

Для тестировщиков поймать креш и не допустить его до прода — это как для сапёра обезвредить мину раньше, чем на неё наступят. Работу можно сделать и после взрыва, но цена вопроса уже совсем другая. Сегодня я расскажу о 4+ проверенных способах собрать информацию о креше: от уже знакомых нам способов из предыдущей статьи до продвинутых систем мониторинга.

Статья: https://habr.com/ru/articles/1011212/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как заставить Android Studio ругаться на код по вашим правилам: создаем пользовательские Lint и Detekt

Сегодня поговорим о том, как заставить Android Studio самостоятельно следить за порядком в коде – без ручных проверок и без вечных напоминаний в командном чате.

Статья: https://habr.com/ru/companies/sovcombank_technologies/articles/1005922/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Remote Compose: назад в будущее

«Дороги? Куда мы едем, дороги не нужны».

И, судя по всему, там, куда мы идем, нам не нужны обновления приложений для изменения пользовательского интерфейса. Давайте вернемся в будущее и посмотрим, что может предложить Remote Compose.

Статья: https://apptractor.ru/info/articles/remote-compose-nazad-v-buduschee.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Собеседование на должность iOS-разработчика в Experian: когда все пошло не по плану

Иногда собеседования проверяют ваши знания. Иногда они проверяют ваше терпение. Собеседование в Experian? Оно проверяло мою психику.

Если вам когда-нибудь доведется столкнуться с таким интервьюером, вот мой совет:

• Сохраняйте спокойствие. Сумасшедшие интервьюеры проверяют вашу реакцию под давлением.
• Думайте вслух. Даже если вопрос не имеет смысла, покажите свою логику.
• Помните, дело не в вас. Иногда дело просто в интервьюере.

И, по крайней мере, вы уйдете с собеседования с историей, которая рассмешит ваших друзей.

Статья: https://apptractor.ru/info/articles/sobesedovanie-na-dolzhnost-ios-razrabotchika-v-experian-kogda-vse-poshlo-ne-po-planu.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
Rebound - мониторинг рекомпозиций

Rebound — это плагин компилятора Kotlin, который инструментирует каждую функцию с аннотацией @Composable легковесными вызовами отслеживания. Во время выполнения он отслеживает частоту рекомпозиции в соответствии с бюджетами для каждого composable-объекта, обнаруживает нарушения и сообщает о них через окно инструментов Android Studio, CLI или logcat. Работает на Android и iOS (Compose Multiplatform). Настройка не требуется — просто примените плагин Gradle. Плагин IDE предоставляет панель мониторинга производительности с 5 вкладками, включающую мониторинг в реальном времени, ранжирование проблемных мест, тепловую карту временной шкалы, анализ стабильности и историю сессий с корреляцией с системами контроля версий.

Rebound на GitHub: https://github.com/aldefy/compose-rebound
Платформа: Android
⭐️: 41

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1😁1
Отладка iOS-приложений на практике: 3 реальных бага

Понимание того, как именно отлаживать приложение, а также знание инструментов, которые есть в вашем распоряжении, или хотя бы осведомлённость о них — это навык, который экономит массу времени и помогает быстрее переходить к следующей задаче. Для меня это стало особенно важно в работе над собственными независимыми приложениями, где ресурсы и время ограничены и нужно использовать их максимально эффективно, не жертвуя качеством пользовательского опыта.

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

Статья: https://habr.com/ru/companies/otus/articles/1011532/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Monkeyrun - хаос-тестирование Android и iOS приложений

Monkeyrun - готовый к использованию кроссплатформенный CLI для мобильного хаотического (обезьяньего) тестирования Android и iOS приложений. Легковесный, удобный для CI/CD, единый исполняемый файл — без Appium, без сложной настройки.

Запускайте хаотические тесты на основе жестов на уже работающих эмуляторах и симуляторах. Обнаруживайте сбои, регистрируйте каждое событие и генерируйте чистый HTML-отчет.

Фичи:

• CLI-first подход — devices, run, report, replay команды
• Нулевая настройка — работает с существующими устройствами ADB и загруженными симуляторами iOS
• 12 действий — касание, двойное касание, длительное нажатие, свайп, прокрутка, ввод текста, назад, масштабирование, «Домой», очистка текста, поворот
• Умные скриншоты — гибридный захват (интервал, обнаружение изменений пользовательского интерфейса, сбой) с асинхронным пулом рабочих процессов
• Обнаружение сбоев — Android (logcat) и iOS (поток логов simctl) с уровнями серьезности
• HTML-отчет — темная тема в стиле Playwright с временной шкалой, фильтрами, скриншотами, логами
• Воспроизведение — воспроизведение тестового запуска из записанных событий
• Единый исполняемый файл — нет зависимостей от среды выполнения, кросс-компиляция для macOS/Linux/Windows

Monkeyrun на GitHub: https://github.com/ABNclearroute/monkeyrun
Платформа: тестирование
⭐️: 6

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📺 Видео и подкасты за неделю

(iOS En) Threads App Swipe Up To Dismiss Interaction Using SwiftUI
(iOS En) Backporting iOS 26 Concentric Rectangle for Older iOS Versions
(iOS En) Build a Searchable, Sortable SwiftUI List with an Index Scrubber
(iOS En) AppleTV App Animated Carousel Using SwiftUI
(And Ru) Почему камера в Telegram Android снимает плохо
(And En) 6 Ways to Make Your Gradle Builds Super Fast
(Dev Ru) Зачем и как вам контрибьютить в open source
(Dev Ru) Внутренняя кухня SRE и информационной безопасности
(Dev Ru) Senior Android за 12 тысяч, рабство в IT и угрозы — Е*аное IT #1
(Dev Ru) Маленькие языковые модели — Open source, локальный ИИ, SLM
(Dev Ru) Рынок труда для джунов в 2026 году
(Dev En) We Don't Need Designers Anymore
(Dev En) Software Testing Course – Playwright, E2E, and AI Agents

Прошлогодние видео:

(iOS Ru) Дивный мир Swift Concurrency
(iOS Ru) Задачи с собеседований: Leetcode — Недостающее число
(iOS Ru) Как встроить в TextField индикатор загрузки и кастомную View
(And Ru) Кастомные лейауты в Jetpack Compose
(And Ru) Мапим данные из domain в ui модуль в многомодульном проекте
(Crs Ru) Рецепт приготовления кроссплатформенного мобильного видеоредактора
(Dev Ru) Собеседование по System Design: проектируем клон Авито

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
PoolChat - mesh чаты со сквозным шифрованием для iOS

PoolChat — это пакет Swift, обеспечивающий полностью зашифрованный, бессерверный обмен групповыми и личными сообщениями по локальной mesh сети. Он работает поверх ConnectionPool и добавляет согласование ключей Curve25519, шифрование сообщений AES-256-GCM, проверку подлинности по принципу Trust-On-First-Use, расширенные типы сообщений (голосовые, опросы, реакции), зашифрованное сохранение истории и готовые представления SwiftUI. Не требуется подключение к интернету, серверов или учетных записей — только устройства, напрямую взаимодействующие друг с другом с использованием сквозного шифрования.

PoolChat на GitHub: https://github.com/Olib-AI/PoolChat
Платформа: iOS
⭐️: 11

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как спроектировать сетевой слой в iOS (гайд для собеседования)

Разработка сетевого слоя — одна из самых распространенных тем в проектировании систем (system design) на собеседованиях для опытных iOS-разработчиков. На первый взгляд, задача кажется простой. Каждый iOS-разработчик писал сетевые запросы с использованием URLSession, анализировал JSON-ответы и отображал данные в пользовательском интерфейсе.

Но собеседования проверяют не умение вызывать API, а понимание того, как построить многоразовую, тестируемую, поддерживаемую и масштабируемую сетевую систему.

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

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

Статья: https://apptractor.ru/info/articles/networking-layer.html
Платформа: iOS/собеседования

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как безопасно хранить и открывать пользовательские файлы локально в Android

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

Статья: https://habr.com/ru/companies/alfa/articles/1010032/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему многие неверно реализуют MVVM или способы создания абстракций

Сегодня хочу поговорить про особенности реализации MVVM. Не с практической, а с теоретической стороны. С практической стороны этот архитектурный шаблон давно уже изучен вдоль и поперёк. А вот теоретических исследований, особенно применимых к Swift (и в общем, и к SwiftUI в частности), не так уж и много. Давайте вместе попробуем закрыть этот пробел и обосновать с теоретической точки зрения те или иные вариации реализаций в нашей ежедневной работе. Мобильным разработчикам на ObjC, Java и Kotlin данное исследование и обсуждение тоже будет полезно.

Статья: https://habr.com/ru/companies/psb/articles/1010690/
Платформа: архитектура

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Tracey - "черный ящик" для Compose-приложения

Tracey - Kotlin Multiplatform SDK для Android и iOS для записи жестов, просмотров экранов, навигационных цепочек и сбоев — с последующим воспроизведением их в виде таймлайна.

Фичи:

• Запись жестов. Фиксирует тапы, скроллы, свайпы, долгие нажатия и щипки без какой-либо дополнительной инструментализации.
• Экраны и переходы. Автоматически отслеживает все навигационные события через tracey-navigation или позволяет логировать их вручную.
• События. Логируйте произвольные события из любого места приложения — обновления корзины, API-ошибки, feature flags и не только.
• Повтор сбоя. При падении сохраняет снепшот буфера событий и воспроизводит его при следующем запуске.
• Маскирование приватных данных. Помечайте чувствительные composable-элементы — они отображаются как обычно, но в захватах автоматически скрываются.
• Кастомные репортеры. Отправляйте записанные сессии в Logcat, Crashlytics, Sentry, Slack или в собственный бэкенд.

Tracey на GitHub: https://github.com/hi-manshu/tracey/
Платформа: Android/кроссплатформа
⭐️: 35

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Миллисекунды стоят миллионы: как и зачем ускорить работу вашего приложения

inDrive выпустили подробную статью о том, как они ускоряли запуск приложения. Ребята разобрали, почему это вообще важно, как скорость запуска влияет на метрики и прибыль компании, объяснили теорию и показали реальные кейсы с инструментами и результатами. Получился практически полноценный гайд по оптимизации запуска: с конкретными цифрами, подходами и выводами. Если вы работаете с производительностью и ускорением запуска приложений - статья именно для вас.

Статья: https://hackernoon.com/milliseconds-make-millions-how-and-why-to-speed-up-your-app-from-indrives-playbook 🇺🇸
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как Compose Preview работает под капотом

Compose Preview в Android Studio кажется магией: поставил @Preview — и UI уже рендерится в IDE. Но под капотом там довольно сложный пайплайн. @Preview — это не поведение, а просто метаданные, которые Studio считывает из байткода. Дальше IDE собирает synthetic XML, прокидывает его в ComposeViewAdapter, поднимает фейковый lifecycle, а сам composable вызывается через reflection с учётом скрытых параметров, которые добавляет Compose compiler.

Самое интересное — почему preview иногда “ломается”. В preview-среде есть только имитация Android runtime: например, lifecycle переводится сразу в RESUMED, но попытка запустить ActivityResult специально падает с ошибкой, потому что реальной Activity нет. Ещё статья хорошо показывает, откуда берётся LocalInspectionMode.current == true и как Studio потом связывает отрисованные пиксели с конкретными строками исходников через ViewInfo.

Полезный разбор для тех, кто хочет не просто пользоваться Compose Preview, а понимать, почему он работает именно так — и почему иногда не работает.

Статья: https://doveletter.dev/preview/articles/compose-preview-internals 🇺🇸
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Engine - быстрые идиоматические API и представления SwiftUI

Engine - высокопроизводительный фреймворк для разработки фреймворков и приложений на SwiftUI. Engine упрощает создание идиоматических API и представлений, которые органично вписываются в SwiftUI без ущерба для производительности.

Главная идея Engine не в том, чтобы добавить еще десятки случайных helper-функций, а в том, чтобы закрыть реальные архитектурные пробелы SwiftUI. Пакет помогает строить собственные стилизуемые компоненты, работать с variadic view, организовывать совместимость между версиями SwiftUI и избегать некоторых дорогих по производительности решений вроде бездумного использования AnyView. Engine - фундамент для авторов UI-компонентов, дизайн-систем и внутренних фреймворков.

Engine на GitHub: https://github.com/nathantannar4/Engine
Платформа: iOS
⭐️: 507

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
CatPawSwitch - переключатель с кошачьей лапкой

Компонент MaterialSwitch, который проактивно пытается отключиться, используя анимацию кошачьей лапы.

CatPawSwitch на GitHub: https://github.com/hearsilent/CatPawSwitch
Платформа: Android
⭐️: 11

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Не начинают ли мобильные разработчики сожалеть о выборе профессии в 2026?

Впервые за всю свою карьеру я заколебался, прежде чем сказать: «Я — разработчик мобильных приложений».

Не потому, что мне стыдно за это, а потому, что я больше не уверен, что это значит в 2026 году.

Индустрия не рухнула. Мобильные приложения не исчезли. Люди по-прежнему разрабатывают приложения, компании по-прежнему выпускают продукты, и приложения по-прежнему приносят деньги. Но что-то изменилось. Уверенность, которая раньше приносила эта профессия, уже не так сильна, как прежде. И дело не в том, что работа стала сложнее. Дело в том, что ценность этой работы подвергается сомнению так, как никогда раньше.

Статья: https://apptractor.ru/info/articles/ne-nachinayut-li-mobilnye-razrabotchiki-sozhalet-o-vybore-professii-v-2026.html
Платформа: разработка/карьера
Компилятор Kotlin 2.3: ускорение работы с большими кодовыми базами более чем на 40%

По данным из свежего разбора, на больших кодовых базах прирост может доходить до 40%+ за счёт трёх вещей:

• нормальной incremental compilation без лишних пересборок
• более зрелого K2 compiler
• улучшенного кэширования артефактов, что особенно полезно для CI/CD

Что важно: для перехода не нужно переписывать код — достаточно обновить версию Kotlin и сравнить метрики сборки до и после.

Статья: https://medium.com/@androidlab/kotlin-2-3-compiler-speed-up-large-codebases-by-40-841227042946 🇺🇸
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM