AppFiles - Mobile Development
2.15K subscribers
2.85K photos
38 videos
11 files
3.79K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Усталость от ИИ — это реальность, и никто об этом не говорит

Вы используете ИИ для повышения производительности. Так почему же вы чувствуете себя более измотанным, чем когда-либо? Парадокс, с которым приходится сталкиваться каждому инженеру.

Статья: https://apptractor.ru/info/articles/ustalost-ot-ii-eto-realnost-i-nikto-ob-etom-ne-govorit.html
Платформа: искусственный интеллект

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

Phonograph Plus - легкий, разработанный в соответствии с принципами Material Design, локальный музыкальный плеер для Android. В настоящее время является независимым форком Phonograph, поскольку его поддержка прекращена (он перестал быть активным после 2020 года и был заархивирован в 2023 году), и находится в разработке и поддержке с 2021 года.

Phonograph Plus на GitHub: https://github.com/chr56/Phonograph_Plus
Платформа: Android
⭐️: 627

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

Разбираться во внутренностях AirDrop - это как препарировать фокус иллюзиониста: на сцене всё бесшовно, а за кулисами - вспотевшие инженеры пытаются заставить два разных радиомодуля не конфликтовать за общую антенну. Прочитав этот текст, вы поймете, как Apple фактически создала свой стек протоколов на базе стандартного железа, почему Bluetooth Low Energy - это «швейцар», а Wi-Fi - «грузчик», и как индустрия наконец-то пришла к единому стандарту передачи данных, который не заставляет владельцев Android чувствовать себя лишними на этом празднике жизни.

Когда вы в сотый раз кидаете мем другу через AirDrop, вы вряд ли задумываетесь, что в этот момент ваш iPhone совершает сложнейший технологический пируэт. На бумаге всё просто: два устройства соединяются и передают файл. В реальности же мы имеем дело с кастомным стеком Apple Wireless Direct Link (AWDL), который годами был «вещью в себе». Но к 2026 году правила игры изменились: магия стала открытой.

Статья: https://habr.com/ru/articles/993750/
Платформа: разработка

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

Kotlin не замедляет работу вашего Android-приложения. Замедляете его вы сами. Не из-за больших ошибок. Не из-за неудачных архитектурных решений.

Из-за крошечных, элегантных, «лучших практик», которые незаметно расходуют ресурсы процессора, памяти и кадров.

Вот 10 из них.

Статья: https://apptractor.ru/info/articles/10-oshibok-v-kotlin-kotorye-nezametno-uhudshayut-proizvoditelnost.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣4👎2
TUIkit - UI-фреймворк для терминалов

TUIkit - фреймворк, похожий на SwiftUI, для создания пользовательских терминальных интерфейсов на Swift: без ncurses, без зависимостей от C, только чистый Swift.

TUIkit позволяет создавать приложения, используя тот же декларативный синтаксис, который вы уже знаете из SwiftUI. Определяйте свой пользовательский интерфейс с помощью View, создавайте представления с помощью VStack, HStack и ZStack, стилизуйте текст с помощью модификаторов, таких как .bold() и .foregroundColor(.red), и запускайте все это в терминале.

TUIkit на GitHub: https://github.com/phranck/TUIkit
Платформа: iOS
⭐️: 69

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