AppFiles - Mobile Development
2.15K subscribers
2.9K photos
39 videos
11 files
3.84K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
PassThroughWindow в iOS 26: наложенное окно, которое не перехватывает жесты

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

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

PassThroughWindow решает эту проблему. Он позволяет вашему наложению быть видимым и интерактивным там, где это важно (само всплывающее уведомление), но все остальное передается вниз, в окна под ним.

Это особенно полезно, когда вы отображаете всплывающие уведомления в отдельном окне: всплывающему уведомлению нужны касания (закрытие, кнопка действия), но остальная часть экрана должна оставаться полностью работоспособной.

Статья: https://apptractor.ru/info/articles/passthroughwindow-v-ios-26-nalozhennoe-okno-kotoroe-ne-perehvatyvaet-zhesty.html
Платформа: iOS

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

ChipTextField - редактируемые и настраиваемые чипы для Compose Multiplatform. Есть несколько видов дизайна, поддержка Material 3, аватаров, отмечаемых чипов. 

ChipTextField на GitHub: https://github.com/dokar3/ChipTextField
Платформа: Android/кроссплатформа
⭐️: 106

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Heavy Artillery: Как гарантированно разбудить Samsung и Xiaomi на Android 14 без Firebase (FCM)

ERRATA сегодня — это не сырой прототип, а система версии v1.0 Production Ready, готовая к реальной работе "в поле".

За интерфейсом приложения на Kotlin стоит надежная, хоть и невидимая пользователю инфраструктура:

• Свой сервер (Node.js + SQLite), который занимается только валидацией лицензий и не хранит пользовательские данные.
• Telegram-бот (Telegraf), через который реализован безопасный магазин и активация ключей. Это позволяет не зависеть от биллинга сторов и сохранять прямой контакт с пользователями.

Построен суверенный "цифровой сейф", который не зависит от Google, зарубежных облаков и капризов вендоров телефонов.

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

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

JavaScriptKit - Swift-фреймворк для взаимодействия с JavaScript через WebAssembly. Он предоставляет удобный способ взаимодействия с JavaScript из кода Swift, скомпилированного в WebAssembly. Он позволяет разработчикам Swift:

• Получать доступ к объектам и функциям JavaScript
• Создавать замыкания, которые можно вызывать из JavaScript
• Преобразовывать типы данных между Swift и JavaScript
• Использовать промисы JavaScript с async/await в Swift
• Работать с многопоточностью

JavaScriptKit на GitHub: https://github.com/swiftwasm/JavaScriptKit
Платформа: iOS
⭐️: 850

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

(iOS En) SwiftUI foundations: Build great apps with SwiftUI | Meet with Apple
(iOS En) Toolbar Header Scroll Animation Effects Using SwiftUI
(iOS En) Xcode 26.3 - Agentic Coding with Free OpenAI Account
(iOS En) Sharing App Data with Uniform Type Identifiers and ShareSheets
(iOS En) Complex UI Animation: New Xcode's OnBoarding Animation Effect Using SwiftUI
(And Ru) А это понадобится после собеседования?
(And En) What Really Is Structured Concurrency In Kotlin? - Android Coding Interview Q&A
(And En) Custom Video Player In Jetpack Compose On Android (Media3 Library)
(And En) API Design at Google: Building Android Libraries
(And En) Return... in Expression Bodies?!
(And En) No more get() calls in your Koin Module!
(Crs En) Apple authentication with Firebase - Kotlin Multiplatform (CMP) Android/iOS Tutorial
(Dev Ru) ИИ ломает высшее образование? Где учиться на программиста
(Mrk Ru) ASO в 2025–2026: алгоритмы, AI, UA vs ASO и Apple Search Ads

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

(iOS Ru) Переход с UIKit на SwiftUI — разработка трекера тренировок с нуля
(iOS Ru) Навигация в SwiftUI
(And Ru) Опасности в Android: уязвимости и защитные меры
(And Ru) Как мы создавали дизайн-систему на Jetpack Compose
(And Ru) Как мы автоматизировали генерацию Baseline Profile
(Dev Ru) Верхнеуровневый обзор архитектуры CI/CD мобильного приложения
(Dev Ru) Как затащить новую технологию
(Dev Ru) Как увольнять людей?

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

Сегодня мы с радостью объявляем о выпуске Flutter 3.41, что знаменует собой важную веху на нашем совместном пути! Это захватывающее время для разработчиков; этот релиз отражает наше стремление расширить возможности нашего сообщества в формировании направления развития Flutter. Благодаря 868 коммитам от 145 уникальных участников, Flutter 3.41 обеспечивает дополнительную прозрачность и модульность, что еще больше улучшает опыт внесения вклада в Flutter.

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

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

Часто можно увидеть такую картину: разработчик влюбляется в концепт из Dribbble, тратит два дня на реализацию сложнейшей цепочки переходов, а потом удивляется, почему его iPhone 15 Pro начинает греться через пять минут использования приложения. Анимация - это всегда сделка с дьяволом (железом). Вопрос лишь в том, насколько выгодный курс обмена вы сможете выторговать.

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

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

DevAnalyzer — это кроссплатформенное настольное приложение, созданное с использованием Compose Multiplatform и Kotlin Multiplatform (KMP).

• Анализатор проектов — анализирует модули проекта, конфигурации Gradle, примененные плагины, зависимости и связанные файлы сборки.
• Очистка сборки — сканирует проекты Android Studio на наличие папок сборки во всех модулях и позволяет выборочно удалять их для освобождения дискового пространства.
• Анализатор хранилища — сканирует SDK, данные IDE, кэши Gradle и каталоги библиотек для визуализации общего использования хранилища.
• Настройки — настраивает пользовательские пути для Android SDK, домашнего каталога Gradle, Kotlin Native и расположения IDE.

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

Разработанный как инструмент, ориентированный в первую очередь на настольные компьютеры, он бесперебойно работает на разных платформах и может быть легко расширен для работы с Android, KMP или бэкэндом на Kotlin.

DevAnalyzer на GitHub: https://github.com/Coding-Meet/DevAnalyzer
Платформа: Android/кроссплатформа
⭐️: 84

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

Этот опыт заставил меня иначе взглянуть на мобильную разработку.

Во-первых, мобильные приложения больше нельзя воспринимать как «тонкий UI-слой». В высокорисковых доменах вроде финансов клиент — это часть распределённой системы.

Во-вторых, управление состоянием — это не вопрос вкуса в архитектуре. Это требование корректности.

В-третьих, конкурентность — не продвинутая тема «на вырост». Это обязательная база.

В-четвёртых, производительность — это не про плавные анимации. Это про устойчивость под нагрузкой.

И наконец, точность имеет значение. В трейдинге ошибка округления — это не косметический баг. Это реальные деньги.

Статья: https://apptractor.ru/info/articles/sobesedovanie-v-zerodha-eti-voprosy-polnostyu-izmenili-moe-predstavlenie-o-mobilnoy-razrabotke.html
Платформа: iOS

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

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

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

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

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

Привет я Федотов Михаил, технический лидер по Android-разработке в Альфа-Банке. Сегодня хочу поговорить про performance (ускорение) unit-тестов.

Я работаю на проекте Android приложения Альфа-банка для физических лиц. Для нашего большого проекта это время — больная тема, так как у нас около 800 модулей и большая часть кода полностью покрыта unit тестами (за некоторыми исключениями, например, view классы). Сейчас у нас почти 6000 spec (тест-классов) в которых 37 000 тест-кейсов.

Общее время прогона всех тестов на CI превышало 3 часа. Локально все тесты прогнать вообще было утопией, так как вероятнее всего сборка просто падала от нехватки оперативной памяти.

Сейчас все тесты проекта мы научились прогонять за честные 12 минут и я расскажу что для этого потребовалось.

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

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

ИИ-помощники замечательно справляются с написанием кода на SwiftUI. Они понимают иерархию представлений, знают, когда лучше использовать LazyVStack вместо VStack, и могут создавать сложные макеты на основе текстового описания. Но у них есть фундаментальное ограничение: они не видят, что создают.

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

Claude XcodePreviews - набор скриптов для программной сборки и захвата предварительных просмотров SwiftUI. Разработан для работы с Claude Code для визуального анализа компонентов пользовательского интерфейса.

Особенности:

• Динамическое внедрение предварительного просмотра — создает минимальные цели PreviewHost вместо сборки полных приложений
• Поддержка пакетов SPM — работает с автономными пакетами Swift
• Поддержка проектов Xcode — работает с файлами xcodeproj (включая проекты, сгенерированные Tuist)
• Быстрая сборка — собирает только необходимые модули (~3-4 секунды для кэшированных сборок)
• Обнаружение пакетов ресурсов — автоматически включает пакеты ресурсов для тем/цветов.


Claude XcodePreviews на GitHub: https://github.com/Iron-Ham/Claude-XcodePreviews
Платформа: iOS
⭐️: 60

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

Инженерное дело сегодня — это уже не просто написание кода. Вот стратегия одного стартапа по созданию проектов в эпоху ИИ-агентов.

Статья: https://apptractor.ru/info/articles/nikakogo-programmirovaniya-do-10-utra.html
Платформа: разработка

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

За последние несколько лет мы построили инфраструктуру оптимизаций компилятора и рантайма на основе профилей для Android-приложений. Один из ключевых компонентов этой инфраструктуры — функция Baseline Profiles в Android Runtime, которую мы применяли, чтобы улучшить производительность.

В этой статье мы разберём несколько аспектов производительности, связанных с Android Runtime (ART). Я расскажу, с какими проблемами мы столкнулись и как Baseline Profiles помогли их преодолеть.

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

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

В отличие от модели анимации, управляемой представлениями в SwiftUI, Metal работает на уровне пикселей. Это позволяет создавать эффекты и анимации, управляемые временем, математическими функциями и данными, а не изменениями в иерархии представлений. Таким образом, работа с Metal требует изменения перспективы: от представлений и модификаторов к пикселям, параллельному выполнению и покадровому рендерингу, но зато такая работа обеспечивает гораздо более высокий уровень визуального контроля.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
ADB Device Manager - двойное управление Android для Windows

ADB Device Manager объедините Android и Windows в единую систему управления. Он позволяет, используя два режима (режим ADB и режим приложения), выполнять следующие действия:

• Зеркальное отображение экрана вашего Android-устройства на Windows
• Трансляция звука с устройства на ПК
• Управление приложениями, уведомлениями, звонками и SMS
• Запуск Android в режиме рабочего стола
• Передача файлов, просмотр фотографий, управление контактами
• Подключение через USB, Wi-Fi ADB или LAN в режиме приложения

Внутри ADB (Android Debug Bridge), scrcpy, nircmd_x64, Flutter, Kotlin, Python.

ADB Device Manager на GitHub: https://github.com/Shrey113/Adb-Device-Manager-2
Платформа: Android/кроссплатформа
⭐️: 140

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

В Android 17 Google полностью переосмыслил работу базового механизма обработки сообщений в приложениях: MessageQueue. Ранее эта очередь использовала один блокирующий lock для синхронизации, что могло приводить к блокировкам UI-потока (например, при одновременной работе фоновых задач) и вызывать задержки в работе интерфейса. Новая реализация под названием DeliQueue отказалась от традиционных блокировок и вместо них применяет lock-free структуры данных: производители сообщений пушат задачи в lock-free стек, а единственный поток UI (Looper) затем переносит их в собственную упорядоченную очередь (min-heap). Это позволяет значительно снизить конкуренцию за ресурсы, улучшить отзывчивость интерфейса и уменьшить количество пропущенных кадров.

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

Статья: https://android-developers.googleblog.com/2026/02/under-hood-android-17s-lock-free.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Ошибка на 12 миллиардов долларов: почему Apple отказалась от сторибордов (и почему большинство команд до сих пор их используют)

Если вам это знакомо — ночные конфликты слияния, загадочные сбои Interface Builder, кошмары в онбординге — вы не одиноки. Apple тихо признала эти проблемы и уже много лет отговаривает разработчиков от использования сторибордов (Вы когда-нибудь замечали, как в недавних примерах кода WWDC используется SwiftUI или программный пользовательский интерфейс, без файла .storyboard? В стандартном шаблоне приложения SwiftUI даже нет файла сториборда). В этом подробном обзоре мы рассмотрим реальные затраты на использование сторибордов с помощью реальных цифр, сравним код до и после и изучим современные альтернативы, такие как SwiftUI, которые спасают команды от проблем с конфликтами слияния в Xcode. В конце вы получите конкретные шаги по модернизации вашей iOS-архитектуры — и, возможно, пару историй из практики, которыми сможете поделиться.

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

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

ListKit - быстрый, написанный на чистом Swift источник данных с возможностью сравнения изменений (diffable data source) для UICollectionView. Полная замена UICollectionViewDiffableDataSource от Apple с алгоритмом сравнения изменений Хекеля со сложностью O(n) и высокоуровневым декларативным API (совместим с NSDiffableDataSourceSnapshot). В тестах эта библиотека от 2 до 1000 раз превосходит по скорости встроенное решение Apple.

ListKit на GitHub: https://github.com/Iron-Ham/Lists
Статья: https://sundayswift.com/posts/building-a-high-performance-list-framework/
Платформа: iOS
⭐️: 13

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Не убий: Гайд по UI/UX в Android Automotive, за который вас не посадят

В прошлой серии мы научились вытаскивать из машины данные. Мы знаем скорость, обороты двигателя и даже какая дверь открыта. Руки чешутся вывести всё это на огромный экран в 4K, добавить анимаций, графиков и запустить YouTube на фоне, да?

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

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

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

Начните с простого. Когда возникнут проблемы, добавляйте уровни. И помните, что отзывы о вашем приложении в Play Store пишут пользователи, а не ваш граф внедрения зависимостей.

Статья: https://apptractor.ru/info/articles/rastsvet-dostatochno-horoshey-arhitektury-v-android.html
Платформа: Android

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