AppFiles - Mobile Development
Відкрити в Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Показати більше2 175
Підписники
-124 години
+37 днів
+830 день
Архів дописів
Аутентификация через биометрию в Kotlin Multiplatform или Koncierge
Наконец-то неплохо продвинувшись в написании своего мультиплатформенного приложения Modern Money мне понадобилась аутентификация для Kotlin Multiplatform.
Хотелось иметь один API для PIN-кода и биометрии, а под капотом использовать Android Biometric Prompt, Windows Hello, Touch ID.
Так появился Koncierge — набор KMP-модулей
biometric, auth и auth-compose.
Казалось бы, задача довольно стандартная: объявить expect-класс и написать несколько actual-реализаций. На Android это примерно так и получилось. А вот Windows Hello, JVM-модуль и публикация всех артефактов заставили немного разобраться в том, как Kotlin Multiplatform работает с нативным кодом.
Статья: https://habr.com/ru/articles/1059174/
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность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 — это высококачественный музыкальный плеер, поддерживающий синхронизацию с 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 под капотом: как перестать мучиться и заставить свой компьютер работать на полную мощность?
Сегодня я хочу разобрать инструмент, который мы все используем десятки раз в день, но часто по-прежнему воспринимаем как «черный ящик».
Без этого мы бы до сих пор собирали проекты вручную, писали бы скрипты Bash для каждой команды и каждой машины, и боролись бы со старой проблемой, когда проект собирается у одного разработчика, но не собирается у другого.
Gradle предоставляет нам единый источник достоверной информации, возможность воспроизводимых сборок и способ масштабирования одного и того же подхода к сборке от небольшого проекта до крупного многомодульного монорепозитория.
Давайте заглянем под капот, чтобы настройка сборки перестала быть проблемой.
Статья: https://habr.com/ru/articles/1058260/
Платформа: архитектура
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Аннотации в Kotlin: от @Deprecated до своего KSP-процессора
Аннотации легко воспринимать как декоративную часть языка. Поставили
@Deprecated, добавили @Suppress, пометили DTO через @JsonClass - и пошли дальше. Но в большом Android-проекте аннотации быстро перестают быть просто подсказками для IDE. Они становятся контрактом между кодом и инструментами: компилятором, статическим анализатором, генератором кода, DI-фреймворком, сериализатором или внутренней платформенной инфраструктурой.
В этой статье разберем, что на самом деле происходит вокруг аннотаций в Kotlin, чем отличаются SOURCE, BINARY и RUNTIME, почему @Composable - это не просто красивая метка, чем kapt отличается от KSP, и на каких практических задачах annotation processing может быть полезен в Android-разработке.
Статья: https://habr.com/ru/companies/uzum/articles/1056652/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность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: как план объявляется один раз и привязывается при каждой отрисовке, чем различаются типы
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 в нативные фигуры 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
Эта статья открывает серию из пятидесяти вопросов по системному проектированию и архитектуре, которые часто встречаются на собеседованиях Senior iOS-разработчиков. Вместо заучивания готовых ответов вы узнаете, как опытные инженеры рассуждают при решении таких задач.
Статья: https://apptractor.ru/info/articles/50-ios-system-design-1.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Мне надоело писать один и тот же код. Поэтому я сделал Featuregen
Я уже не тот беззаботный парнишка, что собирал 486-й компьютер. Время бежит, я скуф успел поработать с C++, C#, Java и Kotlin, последние 10 лет занимаюсь мобильной разработкой. Программирование я до сих пор люблю потому что больше ничего не умею. Но чем дольше работаешь, тем чаще ловишь себя на мысли, что от некоторых вещей начинает подгорать. Сегодня я расскажу, как я попытался избавиться хотя бы от части таких вещей.
Статья: https://habr.com/ru/articles/1056776/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
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 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 и глубокое понимание 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, написал на них бенчмарки, прогнал на релизном тулчейне и полез в сгенерированный ассемблер. Вопрос меня занимал не «что это делает», а куда более практичный: дают ли эти фичи реальный выигрыш в цифрах - и в каких случаях оптимизатор Swift давно делает то же самое за вас, бесплатно и молча. Ответ оказался менее очевидным, чем их маркетинг.
Статью я старался написать так, чтобы её читал не только стафф. Поэтому по ходу я коротко объясняю базовые вещи - стек и кучу, ARC, copy-on-write. Если вы это и так знаете, просто пролистывайте врезки «на полях».
Статья: https://habr.com/ru/articles/1056552/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
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 к вашим услугам - просто и приятно. Кооперативный пул эффективно переключает потоки между задачами, а компилятор проверяет типы на потокобезопасность. И даже можно подсоединять старые части кода, написанные ещё на GCD! Вот только приложение на проде почему-то начало виснуть…
Статья: https://habr.com/ru/articles/1055810/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность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: код, инструменты, практики, производительность
