AppFiles - Mobile Development
2.17K subscribers
3.24K photos
46 videos
13 files
4.24K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Почему спидтест говорит «всё хорошо», а игра лагает: как я построил Latency Dashboard и научил пинг не врать

Это третья статья про NetDiag+ — iOS-утилиту сетевой диагностики, которую я пишу один. В первой было про ICMP-сокеты без entitlements и traceroute, во второй — про MTR, Path MTU и детект блокировок по SNI. Сегодня — про инструмент, который отвечает на вопрос «почему лагает», и про баг в самом пинге, который я нашёл только потому, что положил рядом с телефоном ноутбук.

Спойлер: правильно измерить RTT на телефоне сложнее, чем отправить. Отправить — это sendto(). Измерить — семь раундов на устройстве, пять дефектов и один латентный баг, живший в приложении с версии 1.0.

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

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

9 сентября 2026 года Apple показала iPhone Duo — свой первый складной iPhone. Внешний экран 5.4″, внутренний 7.6″ в раскрытом виде, поставка с iOS 27.1, старт продаж 23 октября. Для пользователя история про железо и «самый тонкий iPhone». Для нас с вами история в другом: часть допущений, зашитых в iPhone-приложения с 2007 года, перестала быть правдой.

Экранов теперь больше одного. Экран может менять форму прямо во время работы приложения. Safe area больше не симметрична. А «только портрет» означает совсем не то, что вы привыкли под этим понимать.

Хорошая новость: если вы уже делали адаптивную вёрстку по-человечески ради iPad, здесь работы на один вечер. Если приложение хардкодит размеры экрана и ветвится по ориентации — придётся засучить рукава.

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

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

SwiftTUI — это фреймворк для создания пользовательских интерфейсов в терминале на macOS, Linux и Windows. Вы описываете представления (View) с использованием @State, стеков, контролов, фокуса, жестов и анимации — применяя декларативную модель, доказавшую свою эффективность в SwiftUI, — а фреймворк берет на себя задачи по компоновке, обработке ввода, отрисовке и взаимодействию с самим терминалом.

SwiftTUI на GitHub: https://github.com/SwiftTUI/swift-tui
Платформа: iOS
⭐️: 178

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

Сегодня широко используют cmake add_subdirectory и сборку через Gradle для кросс-компиляции сишных библиотек под андроид. Мы же рассмотрим более продвинутый и универсальный способ, который работает со множеством систем сборки и позволяет любым проектам найти свои зависимости без написания отдельных костылей под каждый проект.

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

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

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

Мы разрабатывали другой проект, и поначалу для него был написан минимальный чат на CodeIgniter 4 с Vanilla JS и CSS плюс WebSocket‑сервер на Go. Затем стало очевидно, что такой чат слабоват, а для проекта, ориентированного на бизнес‑среду (B2B), еще и недостаточно безопасен. Тогда мы начали внедрять шифрование. Постепенно улучшали код, дорабатывали архитектуру и в какой‑то момент решили выделить мессенджер в самостоятельный проект — заодно хотелось получить реальный опыт в мобильной разработке. А потом просто увлеклись.

Статья: https://habr.com/ru/articles/1085446/
Платформа: кроссплатформа

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

Адаптивная разработка — это естественный способ, с помощью которого современные Android-приложения масштабируются под большие дисплеи, новые положения устройств и появляющиеся форм-факторы. Если ваше приложение уже использует адаптивные макеты, оно практически готово к Googlebook. Опираясь на существующую базу адаптивного UI, классы размеров окон и поддержку нескольких способов ввода, можно предоставить полностью оптимизированный опыт.

Статья: https://apptractor.ru/info/articles/perenesite-svoi-prilozheniya-na-googlebook-s-pomoschyu-adaptivnoy-razrabotki.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
AppFiles - Mobile Development
Перенесите свои приложения на Googlebook с помощью адаптивной разработки Адаптивная разработка — это естественный способ, с помощью которого современные Android-приложения масштабируются под большие дисплеи, новые положения устройств и появляющиеся форм-факторы.…
LastWave - клиент YouTube Music нового поколения

LastWave — это современное нативное Android-приложение для прослушивания музыки, использующее обширный каталог YouTube Music и созданное для тех, кто ценит умные рекомендации, динамичную визуализацию и удобное отслеживание истории прослушиваний. Приложение, разработанное с использованием дизайна Material 3 Expressive, предлагает комфортное воспроизведение музыки без рекламы, генератор умных плейлистов на базе ИИ, синхронизированные тексты песен (караоке) в реальном времени и встроенный скробблер Last.fm, отслеживающий прослушивание треков в ваших любимых музыкальных сервисах.

Технологический стек и архитектура:

• Язык и UI: 100% Kotlin + Jetpack Compose (Material 3 Expressive)
• Аудиодвижок: AndroidX Media3 ExoPlayer с элементами управления воспроизведением на экране блокировки и интеграцией с Android Auto
• Каталог потокового вещания: движок YouTube Music с использованием высокоэффективного аудиокодека Opus
• Скробблинг и отслеживание: API Last.fm и нативное отслеживание медиасессий ОС
• Система отображения текстов: синхронизация текста с точностью до миллисекунд (LRCLIB)
• Архитектура: MVVM + Clean Architecture, Room DB, Jetpack DataStore, Dagger Hilt, Coroutines и Flow

LastWave на GitHub: https://github.com/Clash-Projects/LastWave-Native
Платформа: Android
⭐️: 735

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

• (iOS En) Vertical Segmented Control Like iPhone Duo Using SwiftUI
• (iOS En) New SwiftUI APIs for iPhone Duo
• (iOS En) SwiftUI Alerts & Confirmation Dialogs in iOS 27
• (And En) My Local AI Coding Workflow (Hardware, Setup, Implementation)
• (And En) Kotlin's Name-Based Destructuring
• (Crs En) Swift Export: Where We Stand
• (Crs En) Building AI‑Powered Web Apps in Kotlin/Wasm
• (Dev Ru) Математики останутся без работы? — AI, Навье–Стокс, Lean, OpenAI
• (Dev Ru) Сопротивление ИИ: как сеньор-разработчик внедрил то, против чего был сам
• (Dev En) Jev in Action: AI Matched My Resume to 747 Jobs in 10 Seconds
• (Dev En) TimescaleDB Course – PostgreSQL for Time-Series Data

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

• (iOS Ru) Ускоряем SwiftUI с Observable
• (iOS Ru) Как укротить виджеты в супераппе?
• (iOS Ru) UICollectionViewLayout с самого начала
• (iOS Ru) UITableView с различными типами ячеек
• (And Ru) Роболектрик-скриншот-тесты на платформе Android
• (And Ru) Поймай меня, если сможешь: как обнаружить Root и Frida
• (And Ru) Размер имеет значение: как измерить и уменьшить вес Android-приложения
• (And Ru) Установка Android-приложений от доисторических времен до наших дней
• (Crs Ru) React Native перевернул игру
• (Crs Ru) Темная сторона изолятов в Dart

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

Когда я только начала разбираться, как опубликовать приложение в Google Play из России, у меня довольно быстро появилось ощущение, что я занимаюсь чем‑то если не запрещённым, то как минимум подозрительным. Почти везде логика была примерно одинаковой: из России вроде бы можно, но желательно иметь иностранную карту, иностранный адрес, иностранный номер телефона, жить где‑нибудь в Сербии, Грузии или Казахстане и, по возможности, вообще перестать быть российским разработчиком.

Очень обнадёживающе.

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

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

Apple Shipkit - готовая инфраструктура для выпуска приложений под iOS и macOS. Все процессы уже настроены: подпись кода, CI на базе GitHub Actions для обработки пулл-реквестов, создание свежих сертификатов для каждой сборки, загрузка в TestFlight и отправка в App Store. При этом намеренно не навязываются конкретные UI-фреймворк, сетевой стек или слой работы с данными.

Apple Shipkit на GitHub: https://github.com/indiagrams/apple-shipkit
Платформа: iOS
⭐️: 18

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

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

Статья: https://apptractor.ru/info/articles/arrangementview.html
Платформа: iOS

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

Премиальная Android-библиотека для знакомства пользователей с функциями приложения — без внешних зависимостей. Большинство библиотек для знакомства пользователей с функциями приложения предлагают лишь простой прожектор и текстовый блок либо добавляют в проект тяжёлые зависимости. Focora создана с упором на минимальный размер, максимальную производительность и премиальный внешний вид.

Возможности:

• Прожектор с плавным изменением формы — при переходе между шагами плавно превращается из скруглённого прямоугольника в круг, капсулу или обычный прямоугольник
• Радарное пульсирующее свечение — эффектные расширяющиеся кольца вокруг выделенной области сразу привлекают внимание
• Переход по нажатию на целевой элемент — пользователь может перейти дальше, нажав непосредственно на выделенный элемент интерфейса или кнопку Next
• Выделение по виртуальным координатам — можно подсвечивать элементы Canvas, иконки Toolbar или произвольные координаты на экране без экземпляра View
• 4 стиля анимации — Expand, Fade, Pulse, Slide или None для режима с уменьшенным количеством анимаций
• Полностью программная подсказка — никаких XML-макетов и конфликтов ресурсов с вашим приложением
• Глубокая настройка темы — цвета, радиус углов, высота, размеры текста, шрифты, стили кнопок, стрелка, индикаторы шагов — всё настраивается
• Настройка каждого шага отдельно — каждый шаг может независимо переопределять форму, стиль анимации, положение подсказки и радиус углов
• Собственное представление подсказки — встроенную подсказку можно заменить любым View для конкретного шага
• Одноразовое обучение и умное продолжение — состояние «уже просмотрено» автоматически сохраняется через tutorialKey, а при добавлении новых шагов можно показывать только их
• Учитывает жизненный цикл — автоматически удаляет себя при уничтожении Activity с помощью Application.ActivityLifecycleCallbacks
• Передача касаний — нажатия внутри области прожектора попадают в настоящее представление под ним
• Обработка кнопки «Назад» — можно настроить закрытие по нажатию Back
• Закрытие по нажатию за пределами области — настраивается как для всей сессии, так и для отдельных шагов
• Индикаторы шагов — анимированный ряд точек или автоматически увеличивающийся текст вроде «1 из 3»
• Кнопка пропуска — необязательная, с полностью настраиваемым текстом
• Стрелка-указатель — треугольная стрелка, соединяющая подсказку с выделенной областью
• Задержка запуска — можно задать паузу перед появлением оверлея
• Поддержка уменьшенного количества анимаций — учитывает системную настройку «Отключить анимации»
• Поддержка RTL — стрелка и компоновка автоматически зеркалятся
• TalkBack / Accessibility — содержимое шага озвучивается через announceForAccessibility
• Ноль зависимостей — без Material, Kotlin, Hilt и сторонних библиотек
• API 23+ — поддерживается Android 6.0 и новее
• Безопасно для ProGuard/R8 — необходимые consumer rules уже включены

Focora на GitHub: https://github.com/cocodestudio/Focora
Платформа: Android
⭐️: 6

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🔥1
Анимация iPhone Duo на Galaxy Fold: от красивой демки до работающего приложения

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

Так начался Hinge Lab, в котором анимация поверх приложений в итоге заработала, хотя системное мигание осталось, а некоторые приложения до сих пор не дают пригодный внешний кадр. Пришлось разбираться, как при очередном складывании получать свежий угол, включать нужную панель и находить изображение, которое на ней вообще можно нарисовать.

Видео: https://youtu.be/hjuiHh_GrL0?si=9wY0RVm_drCoXxF_
Статья: https://habr.com/ru/articles/1087304/
Платформа: Android

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

При широком распространении REST подхода для клиент‑серверного взаимодействия всегда существовали и существуют альтернативные решения, иногда незаслуженно обделенные вниманием. Об одном из них речь пойдет в сегодняшней статье. В ней будут даны некоторые теоретические основы, необходимые для работы и создан небольшой проект, который можно использовать для перехода на gRPC.

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

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

HomeClaw предоставляет доступ к вашим аксессуарам HomeKit через утилиту командной строки, MCP-сервер (работающий через stdio) и плагины для Claude Code и OpenClaw. Приложение работает в фоновом режиме и отображается в строке меню macOS.

У Apple HomeKit нет публичного API, интерфейса командной строки (CLI) и встроенных средств интеграции с ИИ-ассистентами или системами автоматизации. HomeClaw решает эту проблему с помощью приложения на базе Mac Catalyst, которое взаимодействует с HomeKit от вашего имени и предоставляет удобный API.

HomeClaw на GitHub: https://github.com/omarshahine/HomeClaw
Платформа: iOS
⭐️: 174

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

Готовые решения закрывали задачу по кусочкам. Poweramp отлично играет, но только на одном телефоне. Plex и Plexamp умеют стриминг, но требуют аккаунт, а часть функций у них за подпиской. Связка Navidrome и Symfonium хороша, но это два разных продукта от разных авторов, и половина того, что мне было нужно, не входила ни в один из них.

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

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

Добро пожаловать обратно в серию публикаций «Интеллектуальные приложения для Android», где мы берём базовое Android-приложение и постепенно превращаем его в персонализированный, интеллектуальный и агентный продукт. В предыдущей статье вы узнали, как подключаться к системе интеллектуальных функций с помощью AppFunctions.

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

Статья: https://apptractor.ru/info/articles/intellektualnye-prilozheniya-dlya-android-agentskie-rabochie-protsessy-vnutri.html
Платформа: Android

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

ComposeBridge — это набор инструментов, который связывает запущенное на физическом устройстве Android-приложение с вашей IDE через локальный WebSocket. В результате получается визуальный редактор для Jetpack Compose, работающий непосредственно на устройстве в реальном времени, и MCP-сервер для ИИ-агентов. Настройка интерфейса «на лету», точечная модификация исходного кода на основе анализа AST и автономное редактирование кода с помощью ИИ — без необходимости подключения к телефону.

Вы можете:

• Нажать на любой Composable-компонент на телефоне, чтобы исследовать его в реальном времени
• Настраивать цвета, размеры и отступы «на лету» с частотой 60 кадров в секунду — без пересборки через Gradle
• Сохранять изменения непосредственно в исходный код на Kotlin (например, в AppDimens.kt или AppColors.kt) благодаря точечной модификации байт-кода, сохраняющей форматирование файла
• Генерировать полноценные экраны Compose на основе декларативной JSON-схемы
• Перемещаться по дереву компонентов в рантайме — выбирать родительский элемент и переходить к дочерним

ComposeBridge на GitHub: https://github.com/JALAL591/compose-bridge
Платформа: Android
⭐️: 10

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Даем ИИ видеть SwiftUI: Xcode Preview MCP на практике — проблемы и надежды

Xcode 26.3 стал первой версией, в которой Apple открыла собственные фичи внешним агентам через MCP. Многие из этих возможностей и раньше были доступны через CLI, но рендеринг Preview был совершенно новым. В Xcode 27 Apple пошла ещё дальше и добавила headless MCP-сервер, сделав эти инструменты ещё удобнее для вызова, поэтому я глубоко встроил рендеринг Preview в свои сценарии ИИ-разработки. По пути я столкнулся с несколькими проблемами, а также сформулировал несколько наблюдений и надежд.

Статья: https://apptractor.ru/info/articles/daem-ii-videt-swiftui-xcode-preview-mcp-na-praktike-problemy-i-nadezhdy.html
Платформа: iOS

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

К концу этого руководства вы полностью поймёте:

• почему ИИ-агентам вообще нужен протокол UI;
• что такое A2UI и какие пять понятий лежат в его основе;
• какие четыре сообщения может отправлять агент и как работает data binding;
• как устроен Jetpack Compose renderer и как пошагово его подключить;
• как создавать собственные компоненты и собственный каталог дизайн-системы;
• как A2UI сохраняет высокую производительность, справляется с ошибками ИИ и переживает обновления приложения.

Эта статья задумана как единственный материал про A2UI, который вам понадобится. Берите кофе.

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

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

Floe Agent превращает разговор с моделью в долгоживущую задачу. Каждое новое сообщение продолжает ту же задачу, а каждый отдельный запуск модели становится самостоятельным запуском со своим прогрессом, журналом использования инструментов, подтверждениями, контрольными точками и состоянием для восстановления.

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

Floe Agent на GitHub: https://github.com/JiangNanGenius/floe-agent
Платформа: iOS
⭐️: 177

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