AppFiles - Mobile Development
2.15K subscribers
2.92K photos
40 videos
11 files
3.87K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
51 правил Detekt для Koin: выявляйте антипаттерны, которые пропускает ваш компилятор

Если вы используете Koin в своих Kotlin-проектах, то знаете, как легко пропустить ошибку в описании модулей, которая «выстрелит» только в рантайме. Новая библиотека detekt-rules-koin переносит проверку архитектуры на этап статического анализа. Теперь вместо того, чтобы вручную выискивать циклические зависимости или неправильно объявленные параметры, вы можете делегировать это detekt. Правила помогают автоматически находить потенциальные утечки памяти и следить за тем, чтобы ваши модули оставались лаконичными и предсказуемыми.

Переход на автоматизированный контроль — это не просто вопрос «красивого кода», а реальный способ сократить время на отладку. В статье подробно разбирается, как подключить кастомные правила, какие именно проверки уже доступны «из коробки» и как интегрировать их в ваш CI/CD пайплайн. Если вы хотите, чтобы ваш Dependency Injection был под надежным присмотром линтера, а код-ревью проходили быстрее, этот инструмент определенно стоит вашего внимания.

Статья: https://blog.insert-koin.io/detekt-rules-koin-c0b6330fc37b 🇬🇧
Платформа: Android

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

FuzzyMatch - высокопроизводительная библиотека для нечеткого сопоставления строк в Swift.

FuzzyMatch был разработан для поиска в базах данных финансовых инструментов — тикерах акций, названиях фондов, ISIN — где важны допустимые опечатки, ранжирование с учетом префиксов и задержка менее миллисекунды. Эти же качества делают его хорошо подходящим для любой области с большим, разнородным набором данных: идентификаторы кодов, имена файлов, каталоги продукции, списки контактов или что-либо еще, что пользователь может искать с неточным вводом.

FuzzyMatch на GitHub: https://github.com/ordo-one/FuzzyMatch
Платформа: iOS
⭐️: 113

Вот еще одна библиотека для нечеткого поиска на Swift.

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

Dejavu преобразует поведение рекомпозиции в тестовые утверждения. Никаких изменений в производственном коде, кроме Modifier.testTag() (который вы, вероятно, уже используете).

Статья: https://apptractor.ru/info/articles/dejavu-testirovanie-rekompozitsiy-dlya-jetpack-compose.html
Платформа: Android

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

Snappy Swipe - "упругий" способ удаления компонента из списка с помощью свайпа, вдохновленный выразительными уведомлениями Material 3.

Snappy Swipe на GitHub: https://github.com/KlassenKonstantin/SnappySwipe
Платформа: Android
⭐️: 31

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Пишем декларативный Package.swift: DSL для модульной архитектуры iOS проекта

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

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

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

В статье покажу:

• как запускать тесты для нескольких мобильных приложений в одном Appium-проекте
• как выбирать приложение через аннотацию
• как сделать потокобезопасный фреймворк
• как избежать дублирования кода

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

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

Встроенный фото-пикер — это не «кастомный интерфейс галереи». Это системный инструмент выбора фотографий, отображаемый внутри вашей иерархии UI, обладающий теми же свойствами безопасности и конфиденциальности, что и классический инструмент выбора, поскольку система отрисовывает его в выделенном SurfaceView (внутренне подключаемом через SurfaceView.setChildSurfacePackage). Именно это архитектурное решение открывает ключевой сдвиг в продукте: пользователь остается на вашем экране во время просмотра и выбора, а ваше приложение может реагировать на обновления выбора в реальном времени, поскольку ваша активити остается рабочей.

Статья: https://apptractor.ru/info/articles/vstroennyy-foto-piker.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Внедряем Yandex MapKit SDK в SwiftUI приложение. Пишем Demo проект

Сегодня я поделюсь с вами пошаговым планом создания демо приложения на SwiftUI с использованием Yandex MapKit SDK.

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

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

(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