ru
Feedback
AppFiles - Mobile Development

AppFiles - Mobile Development

Открыть в Telegram

Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.

Больше
2 175
Подписчики
-124 часа
+37 дней
+830 день
Архив постов
Аутентификация через биометрию в Kotlin Multiplatform или Koncierge Наконец-то неплохо продвинувшись в написании своего мульт
Аутентификация через биометрию в Kotlin Multiplatform или Koncierge Наконец-то неплохо продвинувшись в написании своего мультиплатформенного приложения Modern Money мне понадобилась аутентификация для Kotlin Multiplatform. Хотелось иметь один API для PIN-кода и биометрии, а под капотом использовать Android Biometric Prompt, Windows Hello, Touch ID. Так появился Koncierge — набор KMP-модулей biometricauth и auth-compose. Казалось бы, задача довольно стандартная: объявить expect-класс и написать несколько actual-реализаций. На Android это примерно так и получилось. А вот Windows Hello, JVM-модуль и публикация всех артефактов заставили немного разобраться в том, как Kotlin Multiplatform работает с нативным кодом. Статья: https://habr.com/ru/articles/1059174/ Платформа: кроссплатформа 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

50 вопросов о System Design, ответы на которые должен знать каждый Senior iOS-разработчик: часть 2 Разработка сетевого слоя:
50 вопросов о System Design, ответы на которые должен знать каждый Senior iOS-разработчик: часть 2 Разработка сетевого слоя: • Как бы вы спроектировали переиспользуемый сетевой слой? • Как реализовать автоматическое обновление токена? • Как повторять неудачные запросы к API? • Как отменять запросы к API? • Как предотвратить дублирующиеся запросы к API? Статья: https://apptractor.ru/info/articles/50-voprosov-o-system-design-otvety-na-kotorye-dolzhen-znat-kazhdyy-senior-ios-razrabotchik-chast-2.html Платформа: iOS 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Cosmos Music Player - премиальный музыкальный плеер для iOS Cosmos Music Player — это высококачественный музыкальный плеер, п
Cosmos Music Player - премиальный музыкальный плеер для iOS Cosmos Music Player — это высококачественный музыкальный плеер, поддерживающий синхронизацию с iCloud Drive и локальное хранилище, что обеспечивает пользователям гибкость в управлении музыкой. Приложение разработано для экосистемы iOS и Apple с полной интеграцией с CarPlay. Премиальный аудиофильский музыкальный плеер для iOS, поддерживающий форматы FLAC, WAV, M4A, MP3, Opus, OGG, DSD и DSF, с расширенными функциями, включая Apple CarPlay, воспроизведение DSD (преобразование DoP и PCM), двойное хранилище (iCloud/локальное), управление плейлистами, интеграцию информации об исполнителях, графический эквалайзер и многоязычную поддержку. Cosmos Music Player на GitHub: https://github.com/clquwu/Cosmos-Music-Player Платформа: iOS ⭐️: 113   👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Gradle под капотом: как перестать мучиться и заставить свой компьютер работать на полную мощность? Сегодня я хочу разобрать и
Gradle под капотом: как перестать мучиться и заставить свой компьютер работать на полную мощность? Сегодня я хочу разобрать инструмент, который мы все используем десятки раз в день, но часто по-прежнему воспринимаем как «черный ящик». Без этого мы бы до сих пор собирали проекты вручную, писали бы скрипты Bash для каждой команды и каждой машины, и боролись бы со старой проблемой, когда проект собирается у одного разработчика, но не собирается у другого. Gradle предоставляет нам единый источник достоверной информации, возможность воспроизводимых сборок и способ масштабирования одного и того же подхода к сборке от небольшого проекта до крупного многомодульного монорепозитория. Давайте заглянем под капот, чтобы настройка сборки перестала быть проблемой. Статья: https://habr.com/ru/articles/1058260/ Платформа: архитектура 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Аннотации в Kotlin: от @Deprecated до своего KSP-процессора Аннотации легко воспринимать как декоративную часть языка. Постав
Аннотации в Kotlin: от @Deprecated до своего KSP-процессора Аннотации легко воспринимать как декоративную часть языка. Поставили @Deprecated, добавили @Suppress, пометили DTO через @JsonClass - и пошли дальше. Но в большом Android-проекте аннотации быстро перестают быть просто подсказками для IDE. Они становятся контрактом между кодом и инструментами: компилятором, статическим анализатором, генератором кода, DI-фреймворком, сериализатором или внутренней платформенной инфраструктурой. В этой статье разберем, что на самом деле происходит вокруг аннотаций в Kotlin, чем отличаются SOURCEBINARY и RUNTIME, почему @Composable - это не просто красивая метка, чем kapt отличается от KSP, и на каких практических задачах annotation processing может быть полезен в Android-разработке. Статья: https://habr.com/ru/companies/uzum/articles/1056652/ Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

System Design: как бы вы отправили 1 миллион уведомлений? Чёрная пятница. Маркетинговая команда подготовила рекламную кампани
System Design: как бы вы отправили 1 миллион уведомлений? Чёрная пятница. Маркетинговая команда подготовила рекламную кампанию. Ровно в полночь она хочет отправить уведомления одному миллиону пользователей. Задача кажется простой. Пока вы не понимаете, что мгновенная отправка миллиона уведомлений может перегрузить серверы приложения, поставщиков уведомлений, базы данных и даже внешние API. Большинство инженеров сразу скажут:
Используйте Kafka.
Это хорошая отправная точка. Но что произойдёт, если: • потребители Kafka не будут успевать обрабатывать сообщения; • Firebase начнёт ограничивать частоту запросов; • рабочий процесс завершится с ошибкой посреди обработки; • уведомления нужно персонализировать; • следующая кампания будет рассчитана не на миллион, а на 100 миллионов пользователей; • маркетингу внезапно понадобится отслеживание статусов доставки. Разберём собеседование по системному проектированию, в ходе которого рассматриваются все эти вопросы. Статья: https://apptractor.ru/info/articles/system-design-kak-by-vy-otpravili-1-million-uvedomleniy.html Платформа: архитектура 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Mirage: как Cloudy превращается из библиотеки размытия в библиотеку эффектов В этой статье мы разберём архитектуру Mirage: ка
Mirage: как Cloudy превращается из библиотеки размытия в библиотеку эффектов В этой статье мы разберём архитектуру Mirage: как план объявляется один раз и привязывается при каждой отрисовке, чем различаются типы Optic и почему вместо одного универсального типа используется несколько отдельных, а также как внутренние компоненты — компилятор, общий для всего процесса кэш программ и цепочка фильтров для последовательной обработки слоёв — превращают план в готовое изображение. Статья: https://apptractor.ru/info/articles/mirage-kak-cloudy-prevraschaetsya-iz-biblioteki-razmytiya-v-biblioteku-effektov.html Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Использование mise для установки зависимостей при андроид-разработке Есть большая и сложная система сборки Gradle и андроид-плагин AGP для установки большей части компонентов Android SDK, необходимых для вашего приложения. Но что, если вам не хочется руками устанавливать Android Studio, Android SDK, cmake, scrcpy и прочие нужные вещи? Здесь на помощь приходит инструмент mise — при кажущейся простоте он умеет все, что нам нужно. Статья: Есть большая и сложная система сборки Gradle и андроид-плагин AGP для установки большей части компонентов Android SDK, необходимых для вашего приложения. Но что, если вам не хочется руками устанавливать Android Studio, Android SDK, cmake, scrcpy и прочие нужные вещи? Здесь на помощь приходит инструмент mise — при кажущейся простоте он умеет все, что нам нужно. Статья: https://habr.com/ru/articles/1058494/ Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

SVG to SwiftUI Converter - конвертер SVG в SwiftUI Shape SVG to SwiftUI Converter - инструмент для преобразования SVG в натив
SVG to SwiftUI Converter - конвертер SVG в SwiftUI Shape SVG to SwiftUI Converter - инструмент для преобразования SVG в нативные фигуры SwiftUI. Многоцветные SVG-изображения генерируются как многослойные представления SwiftUI, поэтому их исходные цвета сохраняются. SVG to SwiftUI Converter на GitHub: https://github.com/bring-shrubbery/SVG-to-SwiftUI Платформа: iOS ⭐️: 1.1K   👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

50 вопросов о System Design, ответы на которые должен знать каждый Senior iOS-разработчик: часть 1 Эта статья открывает серию
50 вопросов о System Design, ответы на которые должен знать каждый Senior iOS-разработчик: часть 1 Эта статья открывает серию из пятидесяти вопросов по системному проектированию и архитектуре, которые часто встречаются на собеседованиях Senior iOS-разработчиков. Вместо заучивания готовых ответов вы узнаете, как опытные инженеры рассуждают при решении таких задач. Статья: https://apptractor.ru/info/articles/50-ios-system-design-1.html Платформа: iOS 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Мне надоело писать один и тот же код. Поэтому я сделал Featuregen Я уже не тот беззаботный парнишка, что собирал 486-й компью
Мне надоело писать один и тот же код. Поэтому я сделал Featuregen Я уже не тот беззаботный парнишка, что собирал 486-й компьютер. Время бежит, я скуф успел поработать с C++, C#, Java и Kotlin, последние 10 лет занимаюсь мобильной разработкой. Программирование я до сих пор люблю потому что больше ничего не умею. Но чем дольше работаешь, тем чаще ловишь себя на мысли, что от некоторых вещей начинает подгорать. Сегодня я расскажу, как я попытался избавиться хотя бы от части таких вещей. Статья: https://habr.com/ru/articles/1056776/ Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Renetik Android - Kotlin-фреймворк для реактивных Android-приложений в MVC-стиле Renetik Android - практичная библиотека Kotl
Renetik Android - Kotlin-фреймворк для реактивных Android-приложений в MVC-стиле Renetik Android - практичная библиотека Kotlin для разработки Android-приложений: реактивные события и свойства, JSON, постоянные хранилища и пресеты, слой контроллера представления поверх одной Activity, а также набор виджетов и расширений пользовательского интерфейса. Renetik Android на GitHub: https://github.com/renetik/renetik-android Платформа: Android ⭐️: 7 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

📺 Видео и подкасты за неделю • (iOS En) Deploying to iOS 27: Here are the 3 Major Requirements • (iOS En) SwiftUI Adaptable
📺 Видео и подкасты за неделю(iOS En) Deploying to iOS 27: Here are the 3 Major Requirements(iOS En) SwiftUI Adaptable Sheet's - Landscape Pinned Sheet's(iOS En) Reorder Lists & Grids in SwiftUI and Save with SwiftData(iOS En) Complex Scroll Interaction: Infinite Scrollable Calendar(And En) Create agent skills for on-device generative AI (I/O Connect ‘26)(And En) Dynamic Callbacks on Android for Google Pay(And En) Build creative apps with the GenMedia suite (I/O Connect ‘26)(And En) TestBalloon: Kotlin testing is easier (and more fun) than you think(And En) Deconstructing OkHttp(And En) A First Look at the Kotlin Ecosystem Plugin for Declarative Gradle(Dev Ru) System Design на собеседовании: ошибки, которые тебя топят(Dev Ru) Электрические автомобили: на пороге технологической сингулярности(Dev En) Bootiful Kotlin Прошлогодние видео: • (iOS Ru) Перерисовки в SwiftUI(And Ru) Мок-собеседование Android-разработчика: middle и выше (+ все собеседования) • (And Ru) Как обойти множественное наследование в Kotlin и Java. Агрегация и композиция(Dev Ru) Как сделать любую задачу интересной(Dev Ru) System Design-интервью для практиков 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

10 советов, как получить максимум от Claude Code в iOS-разработке Claude Code не заменяет знание Swift и глубокое понимание U
10 советов, как получить максимум от Claude Code в iOS-разработке Claude Code не заменяет знание Swift и глубокое понимание UIKit и SwiftUI. На самом деле всё наоборот: чем лучше вы понимаете платформу, тем точнее можете направлять Claude Code и тем быстрее он работает.  Думайте о нём не как о junior-разработчике, который пишет код за вас, а скорее как о senior-разработчике, который уже познал весь Apple SDK и ждёт, когда сможет помочь вам продумать задачу. Эта статья о том, как действительно эффективно использовать Claude Code в iOS-разработке. Статья: https://apptractor.ru/info/articles/10-sovetov-kak-poluchit-maksimum-ot-claude-code-v-ios-razrabotke.html Платформа: iOS/ИИ 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Swift 6.2 против вашего оптимизатора: разбираемся с InlineArray, Span и strict memory safety на замерах Я взял три «памятных»
Swift 6.2 против вашего оптимизатора: разбираемся с InlineArray, Span и strict memory safety на замерах Я взял три «памятных» нововведения Swift 6.2, написал на них бенчмарки, прогнал на релизном тулчейне и полез в сгенерированный ассемблер. Вопрос меня занимал не «что это делает», а куда более практичный: дают ли эти фичи реальный выигрыш в цифрах - и в каких случаях оптимизатор Swift давно делает то же самое за вас, бесплатно и молча. Ответ оказался менее очевидным, чем их маркетинг. Статью я старался написать так, чтобы её читал не только стафф. Поэтому по ходу я коротко объясняю базовые вещи - стек и кучу, ARC, copy-on-write. Если вы это и так знаете, просто пролистывайте врезки «на полях». Статья: https://habr.com/ru/articles/1056552/ Платформа: iOS 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Relux - UDF архитектура на основе Swift 6 Concurrency Relux — это пакет Swift, который переосмысливает популярный шаблон Redu
Relux - UDF архитектура на основе Swift 6 Concurrency Relux — это пакет Swift, который переосмысливает популярный шаблон Redux, используя Swift Concurrency. Библиотека использует стиль однонаправленного потока данных (UDF), одновременно задействуя акторы и структурированный параллелизм для обеспечения безопасного и предсказуемого управления состоянием. Её можно постепенно внедрять в существующие проекты, она бесперебойно работает со SwiftUI и масштабируется от простых приложений до сложных модульных архитектур. Relux на GitHub: https://github.com/relux-works/swift-relux Платформа: iOS ⭐️: 19   👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Как сломать Swift Concurrency Нужно выполнять асинхронные операции, поддерживать многозадачность в приложении? Async/await к
Как сломать Swift Concurrency Нужно выполнять асинхронные операции, поддерживать многозадачность в приложении? Async/await к вашим услугам - просто и приятно. Кооперативный пул эффективно переключает потоки между задачами, а компилятор проверяет типы на потокобезопасность. И даже можно подсоединять старые части кода, написанные ещё на GCD! Вот только приложение на проде почему-то начало виснуть… Статья: https://habr.com/ru/articles/1055810/ Платформа: iOS 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

ShizuCallRecorder - запись телефонных звонков без root-прав ShizuCallRecorder - первое приложение с открытым исходным кодом д
ShizuCallRecorder - запись телефонных звонков без root-прав ShizuCallRecorder - первое приложение с открытым исходным кодом для записи звонков на Android 11 и новее, не требующее прав суперпользователя. ShizuCallRecorder использует Shizuku, чтобы предоставить ADB расширенный набор разрешений, доступных системному приложению. Его также можно рассматривать как оболочку для scrcpy-сервера на устройстве. Фичи: • Записывает входящие и исходящие разговоры • Должно работать даже при использовании Bluetooth или удаленной гарнитуры • Переключатели безопасности для управления состоянием включения/выключения Shizuku • Функция автоматической записи звонков с базовыми правилами исключения • Сохраняет записи с кодеками Opus или AAC • Приложение работает только при изменении событий на телефоне, не имеет постоянных фоновых процессов и уведомлений ShizuCallRecorder на GitHub: https://github.com/kitsumed/ShizuCallRecorder Платформа: Android ⭐️: 794 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

У вас осталось всего несколько недель на вайб-кодинг Да, очень скоро качественный искусственный интеллект станет для вас слиш
У вас осталось всего несколько недель на вайб-кодинг Да, очень скоро качественный искусственный интеллект станет для вас слишком дорогим. Этот бизнес не является устойчивым, и никакого очевидного пути к самоокупаемости пока не видно. Компании лишь создают страх упустить возможность и запускают новые волны ажиотажа, чтобы привлечь очередные инвестиции. Затем они сжигают эти деньги, так и не достигая реального прогресса, который позволил бы выйти хотя бы в ноль. Китайские компании, которые заимствуют веса моделей и выпускают открытые решения за долю стоимости, лишь ускоряют общий спад. GLM 5.2 выглядит интересно, но сейчас он лишь примерно вдвое дешевле, а создавшая его компания тоже теряет деньги. Поэтому пора сокращать использование искусственного интеллекта. Примерно до уровня двухлетней давности. Вы по-прежнему сможете создать простой лендинг или получить помощь с кодом приложения. Но эпоха, в которой модель выполняет за вас всю работу, откладывается. Статья: https://apptractor.ru/info/articles/u-vas-ostalos-vsego-neskolko-nedel-na-vayb-koding.html Платформа: ИИ 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность