AppFiles - Mobile Development
2.16K subscribers
3.04K photos
41 videos
12 files
4K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Как настроить сериализацию Kotlin Any с поддержкой Parcelable и Serializable в Android

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Как Swift работает с памятью: подробный гайд для разработчиков. Часть 1

В этой статье последовательно разберем, как Swift управляет памятью: от базовых понятий вроде ARC, Copy‑on‑Write, экзистенциальных контейнеров до нетипичных задач с «зомби»-объектами и non-frozen типами. Материал основан на документации Swift, докладах WWDC и практических примерах. Статья рассчитана на middle- iOS‑разработчиков, которые хотят лучше понимать, что происходит с их кодом на уровне памяти и почему одни решения оказываются дороже других.

Эта статья выйдет в двух частях: в первой разберем теорию, а во второй — практические примеры с кодом.

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

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

Я пишу код на Swift ежедневно уже почти 10 лет. Синдром самозванца меня не пугает. Я всё повидал.

Но иногда… не знаю.

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

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

Статья: https://apptractor.ru/info/articles/zapretnaya-storona-swift-kotoruyu-my-kak-pravilo-voobsche-ne-vidim.html
Платформа: iOS/Swift

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

AdaEngine — это игровой движок, полностью написанный на Swift. Предлагает полный набор функций для 2D-графики, основан на data-oriented парадигме и использует собственную ECS-инфраструктуру, вдохновлен фреймворком RealityKit от Apple.

AdaEngine прост в использовании, и главная цель — обеспечить быстрый старт и быстрый результат.

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

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

Я хочу поделиться историей о том, как обычное желание разобраться в корутинах привело к детальному аудиту проекта Марчином Москалой, по итогам которого архитектурные решения в GeminiAI были отмечены как качественный пример реализации Structured Concurrency.

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

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

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

В данной статье мы собрали наиболее распространённые ошибки, которые снижают производительность Flutter-приложений, и показали, как их избежать на практике.

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

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

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

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

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

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

ArchiveTune — это не просто очередная стандартная оболочка для YouTube Music. Это полностью разработанный с нуля плеер, потому что ваша музыка должна оставаться конфиденциальной, выглядеть безупречно и работать именно так, как вы ожидаете. Если для вас важна качество звука и вы хотите что-то, что действительно удобно в использовании, то это именно то, что вам нужно.

ArchiveTune на GitHub: https://github.com/koiverse/ArchiveTune
Платформа: Android
⭐️: 1.1K

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

Сегодня Google представил Gemma 4 — самые интеллектуальные открытые модели на сегодняшний день. Разработанная специально для решения задач сложного логического вывода и создания агентных рабочих процессов, Gemma 4 обеспечивает беспрецедентный уровень «интеллекта на параметр».

Gemma 4, созданная на базе тех же передовых исследований и технологий, что и Gemini 3, является самым мощным семейством моделей, которое вы можете запустить на собственном оборудовании. Они дополняют модели Gemini, предоставляя разработчикам мощнейшее в индустрии сочетание открытых и проприетарных инструментов.

Все семейство выходит за рамки простого чата и способно обрабатывать сложную логику. Крупные модели демонстрируют флагманскую производительность для своих размеров: модель 31B на данный момент занимает 3-е место среди открытых моделей в мире в текстовом рейтинге Arena AI, а модель 26B — 6-е место. Там Gemma 4 успешно конкурирует с моделями, которые в 20 раз больше её по размеру. На периферийных устройствах (Edge) модели E2B и E4B переопределяют полезность ИИ на устройстве, отдавая приоритет мультимодальности, низкой задержке и бесшовной интеграции в экосистему.

Размеры моделей Gemma 4 подобрали специально для эффективного запуска и дообучения (fine-tuning) на различном оборудовании — от миллиардов Android-устройств и ноутбуков с GPU до рабочих станций и мощных ускорителей.

Что делает Gemma 4 лучшим семейством открытых моделей:

• Продвинутое мышление: Способность к многошаговому планированию и глубокой логике.
• Агентные рабочие процессы: Нативная поддержка вызова функций (function-calling), структурированного вывода JSON и системных инструкций позволяет создавать автономных агентов.
• Генерация кода: Поддержка высококачественного написания кода офлайн.
• Зрение и аудио: Все модели нативно обрабатывают видео и изображения. Модели E2B и E4B также поддерживают нативный аудиоввод для распознавания речи.
• Увеличенный контекст: Модели Edge имеют окно контекста 128K, а крупные модели — до 256K токенов.
• Более 140 языков: Нативно обучена для работы с глобальной аудиторией.

Gemma 4 уже можно применить для разработки под Android - модель была обучена специфике Android-разработки и поддержке агентного вызова инструментов (tool calling). Выбрав Gemma 4 в качестве локальной модели, вы можете использовать «Режим агента» для различных сценариев:

• Проектирование новых функций: Попросите агента создать новую функцию или целое приложение (например, «создай калькулятор»). Агент не только сгенерирует UI-код, но и применит лучшие практики Android, такие как написание кода на Kotlin и использование Jetpack Compose.
• Рефакторинг: Вы можете давать высокоуровневые команды, такие как «Извлеки все захардкоженные строки и перенеси их в strings.xml». Агент просканирует кодовую базу, найдет нужные места и внесет правки сразу в несколько файлов.
• Исправление багов и ошибок сборки: Если проект не собирается или есть ошибки линтера (lint errors), просто скажите: «Собери проект и исправь ошибки». Агент найдет проблемный код и будет итеративно применять исправления, пока сборка не завершится успешно.
📺 Видео и подкасты за неделю

(iOS En) Don't make this mistake with a Spacer in SwiftUI
(iOS En) macOS OnBoarding Animation Using SwiftUI
(iOS En) Apple Style 2D Slider Interaction Using SwiftUI
(And Ru) Сколько стоит BDUI?
(And En) How to build on-device AI with Gemma 4
(And En) Claude Code & Cursor built the same app. There's a clear winner.
(And En) What are Gradle Dependency Configurations?
(And En) My first Plugin is LIVE on Jetbrains Marketplace! 
(Crs En) How KMP Helped a 378-Year-Old Company
(Dev Ru) 7 грехов тимлида
(Dev Ru) Зачем нужны Vim и NeoVim в 2026 — Своя среда разработки вместо готовой IDE
(Dev En) What’s new in Gemma 4
(Dev En) AIventure: Learning about vibe-coding, agents and Gen AI with Gemma 4
(Dev En) AI-Assisted Coding Tutorial – OpenClaw, GitHub Copilot, Claude Code, CodeRabbit, Gemini CLI

Прошлые видео:

(iOS Ru) Одна билд-система, чтоб править всеми
(iOS Ru) Влияние Swift Runtime на производительность приложения
(iOS Ru) Разрабатываем CLI-инструменты на Swift
(iOS Ru) Как мы разработали свой фреймворк SingleState-навигации на Android
(And Ru) Танцы вокруг дерева семантики: UI-тесты Compose-экранов
(And Ru) Многомодульность — ответы на вопросы с экспертами
(And Ru) Как работает Android Work Profile
(And Ru) Разбор кода магазина приложений
(And Ru) Опыт, Java vs Kotlin и работа со списками
(Crs Ru) Как я перестал бояться и полюбил компилятор Dart
(Crs Ru) Как Compose Multiplatform for iOS может убить Flutter?
(Alg Ru) Открытое алгоритмическое собеседование

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

Я более десяти лет пишу приложения под Android, около пяти лет под IOS, и сейчас переношу свои наработки под десктопы. Приложения мои предназначены для сисадминов, это SSH клиент, сетевые сканеры, утилиты. В общем, самое сложное — не сам интерфейс, а то, что спрятано под капотом. Все мои приложения состоят из двух частей: общего для всех систем ядра на С++ и платформозависимого интерфейса, написанного на Java/Swift/C++ в зависимости от системы.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как Swift работает с памятью: подробный гайд для разработчиков. Часть 2

В первой части мы разобрали теоретическую базу того, как устроена память в Swift. Это вторая часть — здесь больше про код, типовые задачи и ошибки, а также способы их исправления. Если хотите подробнее разобрать память по полочкам, читайте далее.

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

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Apple хочет чтобы я купил Mac за 200к. У меня два приложения в App Store и ни одного макбука

У меня нет макбука. Но два моих приложения лежат в App Store. Рассказываю весь путь: регистрация Apple Developer из России, сертификаты без Xcode, автоматическая сборка через GitHub Actions. Три варианта: для вайбкодеров, программистов без мака и хардкорщиков.

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

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

Cascade Editor - первый нативный блочный редактор для Compose Multiplatform.

Редактирование в стиле Notion/Craft, реализованное в виде общего ядра редактора Kotlin для Android и iOS: перетаскиваемые блоки, слэш-команды, span-элементы с форматированным текстом, пользовательские типы блоков и сериализация документов с версионированием — всё без WebView, HTML/contentEditable или встроенных редакторов JavaScript.

Cascade Editor на GitHub: https://github.com/linreal/cascade-editor
Платформа: Android/кроссплатформа
⭐️: 67
AppFiles - Mobile Development
Cascade Editor - блочный редактор текста для Compose Multiplatform Cascade Editor - первый нативный блочный редактор для Compose Multiplatform. Редактирование в стиле Notion/Craft, реализованное в виде общего ядра редактора Kotlin для Android и iOS: перетаскиваемые…
Blitz - ИИ-агенты для работы с App Store Connect

Blitz — это нативное приложение для macOS, позволяющее отправлять iOS-приложения в App Store Connect с помощью ИИ-агентов. Оно предоставляет Claude Code (или любому другому клиенту MCP) полный контроль над жизненным циклом разработки iOS-приложений: запуск симуляторов, настройка встроенных покупок, загрузка скриншотов и отправку на проверку в App Store — всё это из единого нативного графического интерфейса macOS.

Если вы страдаете от работы с App Store Connect, Blitz автоматизирует самые сложные этапы.

Blitz на GitHub: https://github.com/blitzdotdev/blitz-mac
Платформа: iOS
⭐️: 1.2K

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