TGViewer
Channel Public Channel
AppFiles - Mobile Development

AppFiles - Mobile Development

@applib

Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Subscribers
2.18K
Photos
3.3K
Videos
48
Links
4.3K

Showing posts older than #4102 · Back to latest

Older Posts 20 shown
Post #4101 362
Kaspresso: cравниваем скриншоты и упрощаем проверку дизайна

Это наш фреймворк для тестирования пользовательских интерфейсов на Android, основанный на Kakao, Espresso и UI Automator.

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

Статья: https://habr.com/ru/companies/kaspersky/articles/1015854/
Платформа: Android/тестирование

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
  • 👍 1
Post #4100 357
Felicity - функциональный музыкальный плеер для Android

Felicity - многофункциональный премиальный аудиофильский музыкальный плеер для Android с встроенным DSP, визуализатором, 10-полосным эквалайзером с предусилителем и поддержкой Milkdrop.

Felicity на GitHub: https://github.com/Hamza417/Felicity
Платформа: Android
⭐️: 82

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4099 379
Наконец-то нашел Android Service своей мечты после того, как потерял его 13 лет назад

Изучая недра Android, я наткнулся на один Service, который привлек моё внимание. Класс, который я обнаружил, не только заинтриговал меня своим названием, но и снова удивил интересными возможностями, скрытыми внутри Android.

Ещё в 2012 году команда Android System UI представила в Android 4.2 новую функцию Daydream, которая позволяет показывать контент пользователю, пока телефон находится в спящем режиме. Вы можете просто отрисовать любой UI или анимацию для пользователя, пока его телефон заряжается. UI-элементы также могут содержать кнопки, так что в целом можно создать полноценный экран для продакшена. К сожалению, эту функцию нельзя включить автоматически. Пользователь должен включить её в настройках дисплея.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4098 370
Monzo повысил производительность на 35% благодаря простому обновлению R8

Полностью включив оптимизацию R8, Monzo добился огромного снижения на 35% показателя «Приложение не отвечает» (ANR). Это простое изменение доказало, что для эффективной оптимизации не всегда требуются сложные инженерные решения.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
  • ❤ 1
Post #4097 390
Amgi - Anki-карточки

Amgi - открытый offline-first iOS-клиент с карточками для запоминания.

Amgi использует C FFI в качестве обертки над официальным бэкендом ankitects/anki на Rust, обеспечивая нативный интерфейс SwiftUI, работающий на том же проверенном движке, что и Anki Desktop и AnkiDroid. Синхронизируйте свои колоды с любым совместимым сервером синхронизации (включая собственный), занимайтесь с помощью интервального планирования FSRS и поддерживайте идеальную синхронизацию истории повторения на всех ваших устройствах.

Архитектура:
SwiftUI Views
|
@DependencyClient structs
|
AnkiBackend (Swift wrapper)
|
C FFI (4 functions)
|
Rust static library (ankitects/anki)


Amgi на GitHub: https://github.com/antigluten/amgi
Платформа: iOS
⭐️: 67

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4096 398
Почему вашим следующим приложением, вероятно, не будут пользоваться

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

Это тот же сдвиг, который уже заметен на примере Google и Stack Overflow. Если уловить паттерн, то идею headless-приложений представить намного проще.

Статья: https://apptractor.ru/info/articles/pochemu-vashim-sleduyuschim-prilozheniem-veroyatno-ne-budut-polzovatsya.html
Платформа: разработка

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4095 386
Как настроить сериализацию Kotlin Any с поддержкой Parcelable и Serializable в Android

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

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

Поскольку Parcelable не является общим механизмом сериализации (нельзя использовать для сохранения данных на диск или сетевых запросов), он не может полностью заменить Serializable, но остается более эффективным для Android среды. Два решения сериализации остаются в проекте с нами надолго, а это значит нам нужно уметь работать с ними правильно.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4094 354
iOS network frameworks и HTTP TCP Server внутри приложения

В iOS разработке работа с сетью является одной из ключевых задач. Для этого существует целый арсенал инструментов: от высокоуровневого URLSession до работы с низкоуровневыми BSD сокетами.

В этой статье мы разберем список доступных инструментов, напишем и запустим сервер внутри iOS приложения, используя самый низкоуровневых инструмент (BSD sockets). И закрепим это небольшим проектом, который будет использовать наш сервер. Им будет небольшая админка, с помощью которой можно будет загружать файлы из файловой директории приложения через веб браузер (с других устройств в локальной сети).

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4093 421
Presently - дневник благодарности

Presently - открытый и бесплатный дневник благодарности с более чем 1 миллионом установок. 

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

• MVVM с архитектурными компонентами
• ViewModel
• Room (с FTS и Paging v3)
• Mavericks
• CircleCI
• Отчеты о покрытии кода Jacoco (интегрированы с CI)
• Отчеты о сбоях Firebase Crashlytics
• Dagger + Hilt
• Espresso
• Firebase Test Lab
• WorkManager
• Dropbox Java SDK

Presently на GitHub: https://github.com/alisonthemonster/Presently
Платформа: Android
⭐️: 412

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
  • 😁 2
Post #4092 484
Я купил самый дешёвый MacBook от Apple и попробовал заняться настоящей разработкой

У меня уже есть MacBook Pro M3 Pro. Это просто зверь. Но мне хотелось посмотреть, что получится, если попробовать настоящую разработку на самом дешевом Mac от Apple.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
  • 💩 3
  • ❤ 1
Post #4091 3.05K
📺 Видео и подкасты за неделю

• (iOS En) Accelerate your machine learning workloads with the M5 and A19 GPUs
• (iOS En) Boost your graphics performance with the M5 and A19 GPUs
• (iOS En) SwiftUI Telegram Resizable Header | Scroll Effects | Animations
• (And En) Explicit Backing Fields are experimental in Kotlin 2.3
• (And En) Kotlin 2.3.20, Android Bench, and more
• (Crs Ru) Flutter — Dart, Impeller и реальные юзкейсы
• (Dev Ru) Путь инди-хакера
• (Dev En) How to build a full-stack app with Supabase and Stripe on Google AI Studio
• (Dev En) 1h Claude Code Crash Course For App Developers (Beginner Level)

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

• (iOS Ru) Исследуем мир фото и видео редакторов
• (iOS Ru) Найди и исправь ошибки в коде — Задачи с собеседования
• (iOS Ru) Запускаем приложения на своем iOS-симуляторе
• (iOS Ru) Осторожно, Combine!
• (iOS Ru) Позаботимся о памяти при использовании value-типов
• (iOS Ru) Swift – больше, чем язык для iOS
• (And Ru) Почему вам стоит включить Gradle Configuration Cache
• (And Ru) Интеграция GeckoView в Dynamic Feature
• (And Ru) Последнее слово в Android-навигации
• (Dev Ru) Kotlin не для Android
• (Dev Ru) Пишем рекомендательную систему музыки на Java
Post #4090 375
Swift Service - инъекция зависимостей для современного Swift

Swift Service - легковесный фреймворк внедрения зависимостей, созданный для Swift 6 Concurrency — с явными API для Sendable и MainActor, без внешних зависимостей и с изоляцией среды на основе TaskLocal.

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

• Дизайн, ориентированный на параллелизм — параллелизм в Swift является первоклассным элементом. Ограничения Sendable и MainActor являются частью API и обеспечиваются компилятором на каждом этапе вызова — они не скрыты за @unchecked Sendable.
• Нативная поддержка MainActor — выделенные функции registerMain() / @MainService / @MainProvider для типов, изолированных MainActor. Соответствует требованиям Swift 6.2 Approachable Concurrency.
• Нулевые зависимости — полностью построен на основе примитивов стандартной библиотеки Swift (Synchronization.Mutex, @TaskLocal).
• Изоляция среды TaskLocal — переключение среды для каждой задачи для параллельно-безопасного тестирования. Не требуется изменение глобального состояния.
• Гибкие области видимости — сколупы для синглтонов, временных объектов, графов и пользовательских имен для точного управления жизненным циклом.
• Знакомые шаблоны — API регистрации/разрешения, вдохновленный Swinject. Внедрение оберток свойств с модульной поддержкой Assembly.

Swift Service на GitHub: https://github.com/nslogmeng/swift-service
Платформа: iOS
⭐️: 22

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4089 407
10 ошибок, которые Android-разработчики до сих пор допускают при работе с Jetpack Compose

Как человек, который за последние два года проанализировал сотни кодовых баз Jetpack Compose, могу сказать, что одни и те же ошибки повторяются снова и снова, что и побудило меня написать этот пост. Даже опытные Android-разработчики, привыкшие к традиционным View-системам, сталкиваются с ними при переходе на Compose.

Статья: https://apptractor.ru/info/articles/10-oshibok-kotorye-android-razrabotchiki-do-sih-por-dopuskayut-pri-rabote-s-jetpack-compose.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Post #4088 381
Конвейер подготовки джунов сломан, и ни у кого нет плана по его исправлению

Средний срок работы разработчика в крупной tech-компании — 2–3 года. Среднее время, чтобы вырастить junior-а в надёжного самостоятельного middle-инженера — 2–4 года. Среднее время от middle до senior — ещё 3–5 лет. Эти цифры могут гулять, но порядок величин стабилен: чтобы вырастить senior-инженера из нового выпускника, нужно примерно 5–9 лет.

Если индустрия заметно сокращает junior-найм на протяжении трёх лет подряд — 2024, 2025 и 2026 годов, а именно это сейчас и происходит, — эффект проявится не сразу. Он проявится в 2029–2033 годах, когда истончится конвейер middle-инженеров, и в 2032–2036 годах, когда истончится конвейер senior-инженеров.

К тому моменту компании, которые сегодня режут junior-найм, будут конкурировать за ещё меньший пул опытных инженеров и жаловаться на «дефицит талантов». CEO будут винить кого угодно, кроме самих себя, за проблему, которую сами и создали тремя годами квартальной оптимизации.

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

Прямо сейчас ответ такой: нет. Ни у кого нет плана.

Статья: https://apptractor.ru/info/articles/konveyer-podgotovki-dzhunov-sloman-i-ni-u-kogo-net-plana-po-ego-ispravleniyu.html
Платформа: разработка/карьера
  • 😭 3
  • 😁 1
Post #4087 323
Компилятор 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: код, инструменты, практики, производительность
Post #4086 320
Не начинают ли мобильные разработчики сожалеть о выборе профессии в 2026?

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

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

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

Статья: https://apptractor.ru/info/articles/ne-nachinayut-li-mobilnye-razrabotchiki-sozhalet-o-vybore-professii-v-2026.html
Платформа: разработка/карьера
Post #4085 338
CatPawSwitch - переключатель с кошачьей лапкой

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

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
  • ❤ 1
Post #4084 351
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: код, инструменты, практики, производительность
Post #4083 403
Как 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: код, инструменты, практики, производительность
Post #4082 341
Миллисекунды стоят миллионы: как и зачем ускорить работу вашего приложения

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

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →