AppFiles - Mobile Development
前往频道在 Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
显示更多2 169
订阅者
+224 小时
无数据7 天
+830 天
帖子存档
Dayflow - таймлайн вашего дня за компьютером
Dayflow — это нативное приложение для macOS (SwiftUI), которое записывает данные с экрана с частотой 1 кадр/с, анализирует их каждые 15 минут с помощью ИИ и формирует временную шкалу ваших действий с отчётами. Оно лёгкое (размер приложения — 25 МБ), использует около 100 МБ оперативной памяти и менее 1% загрузки процессора.
Dayflow по умолчанию означает владение и конфиденциальность. Вы контролируете данные, выбираете поставщика ИИ и можете хранить всё локально, если вам это удобно. Приложение лицензировано MIT и имеет полностью открытый исходный код, поскольку всё, что смотрит на ваш экран весь день, должно быть абсолютно прозрачно о том, что оно делает с этой информацией. Приложение должно ощущаться как тихий помощник: уважать ваше внимание, честно сообщать о том, что оно фиксирует, и легко отключаться.
Функции:
• Автоматическая хронология вашего дня с краткими сводками
• Запись с частотой 1 кадр/с — минимальное воздействие на процессор и хранилище
• 15-минутные интервалы анализа для своевременных обновлений
• Смотрите таймлапсы вашего дня
• Автоматическая очистка хранилища — удаляет старые записи через 3 дня
• Выделение отвлекающих моментов, чтобы видеть, что отвлекало вас от задачи
• Нативный пользовательский интерфейс, созданный на SwiftUI
• Автоматические обновления с помощью Sparkle (ежедневная проверка + фоновая загрузка)
Dayflow на GitHub: https://github.com/JerryZLiu/Dayflow
Платформа: macOS
⭐️: 4.5K
Понимаем «буфер с разрывом» в Jetpack Compose: 60-летний алгоритм, лежащий в основе современного UI
Представьте, что тот же алгоритмический трюк, который обеспечивал быстродействие текстовых редакторов в 1960-х, скрытно делает ваши современные Android-приложения плавными сегодня. Звучит дико? Но это правда!
Jetpack Compose, современный инструментарий Google для разработки пользовательского интерфейса для Android, использует проверенную временем концепцию Gap Buffer («буфер с разрывом» или «разрывной буфер» или «буфер с промежутком») для молниеносного обновления пользовательского интерфейса. Давайте разберём это так понятно, чтобы даже пятилетний ребёнок понял.
Статья: https://apptractor.ru/info/articles/gap-buffer.html
Платформа: Android
Как мы в Saby эмоции добавляли
В Тензоре я middle+ разработчик, но недавно мне доверили задачу уровня senior — обратились с просьбой добавить реакции в мобильные приложения. «Хорошая точка роста», — подумал я и согласился. В статье расскажу, как мне вместе с командой удалось реализовать новый функционал.
Статья: https://habr.com/ru/companies/tensor/articles/965194/
Платформа: разработка
Любовь, смерть и жизненный цикл: считаем, сколько люди проводят времени в вашем Android-приложении
Помните, как вы готовились к первым собеседованиям на должность Android-разработчика? Жизненный цикл, пересоздание Activity, коллбеки ЖЦ: все эти понятия хорошо знакомы каждому молодому специалисту в нашей с вами области. Однако одна из прилетевших от аналитиков задач на отправку событий, связанных с длительностью нахождения пользователя в приложении, ввела меня в ступор, заставила провести небольшое исследование, проявить чудеса ведения переговоров и узнать много интересных нюансов.
Статья: https://habr.com/ru/companies/wildberries/articles/963618/
Платформа: Android
Актуальные практики работы в фоне Android-приложений
Сегодня рассказывают, какие инструменты реально работают на последних версиях системы и как их правильно использовать. Везде также будут примеры кода и ссылки на документацию.
Статья: https://habr.com/ru/companies/vk/articles/965220/
Платформа: Android
Compose Stability Analyzer - аналитика стабильности композабл в Android Studio
Compose Stability Analyzer анализирует стабильность ваших композабл функций Jetpack Compose в режиме реального времени непосредственно в Android Studio или IntelliJ. Он помогает понять, почему компонуемая функция стабильна или нестабильна, и предоставляет подробную информацию благодаря трассировке и журналированию рекомпозиции.
Кроме того, вы можете отслеживать причину, по которой ваша компонуемая функция запускает рекомпозицию, с помощью аннотации
TraceRecomposition и экспортировать отчёты о стабильности и совместимости с помощью тасков Gradle для просмотра изменений.
Compose Stability Analyzer на GitHub: https://github.com/skydoves/compose-stability-analyzer
Платформа: Android
⭐️: 915Создание эффекта ЭЛТ-экрана в Jetpack Compose
В статьеавтор показывает, как с помощью API Jetpack Compose и модуля GraphicsLayer воспроизвести визуальные особенности старых ЭЛТ-мониторов — размытие, цветовые «тени», горизонтальные и вертикальные линии сканирования. Для этого сначала выводится содержимое в off-screen-буфер, затем этот буфер несколько раз отрисовывается с разными уровнями blur, масштабом и прозрачностью, а поверх накладываются линии через градиент с tileMode=Repeated.
Кроме того, добавляется «дрожание сигнала» — небольшое случайное смещение по X и Y с задержкой (~32 мс) через LaunchedEffect, чтобы усилить ощущение старого CRT-экрана. Итоговый компонент, например CRTBox, упакован как полноценный Composable, готовый к использованию в приложении.
Статья: https://www.sinasamaki.com/creating-a-crt-screen-effect-in-jetpack-compose/
Платформа: Android
7 ключевых слов Swift, которые вы не используете (а следовало бы)
Swift мощнее, чем вы думаете. Большинство разработчиков используют лишь около 60% его потенциала, и есть много функций, которые вы не использовали или о которых даже не слышали.
В этой статье мы рассмотрим 7 ключевых слов Swift, которые вас поразят.
Статья: https://apptractor.ru/info/articles/7-klyuchevyh-slov-swift-kotorye-vy-ne-ispolzuete-a-sledovalo-by.html
Платформа: iOS
Tantivy Full Text Search for iOS - полнотекстовый поиск для iOS
Этот проект предоставляет возможность использовать Tantivy, библиотеку полнотекстового поиска, написанную на Rust, в iOS и macOS приложениях. Он использует UniFFI для генерации биндингов Swift.
Фичи:
• Создание и управление индексами Tantivy, сохраняемыми на диске
• Безопасный параллелизм с помощью Swift actor
• Документы в формате Swift Codable
• Результаты полнотекстового поиска с оценками
• По умолчанию настроен кастомный токенизатор с поддержкой Unicode (работает для всех языков без настройки)
Tantivy Full Text Search for iOS на GitHub: https://github.com/botisan-ai/tantivy.swift
Платформа: iOS
⭐️: 5
Эффекты с GPU-ускорением: глитч в масштабе
Несколько недель назад я увидел отличную статью Сины Самаки о создании эффекта глитча с помощью Compose. Как человек, любящий заниматься низкоуровневыми вещами, я увидел отличную возможность воссоздать этот эффект с помощью шейдеров Android AGSL и сравнить реализации.
Когда дело доходит до графики, очень важно выбрать правильный инструмент для работы, поскольку очень легко достичь потолка производительности и сложности в масштабировании решение. Так ли это в данном случае? Давайте посмотрим!
Приготовьтесь, мы будем заниматься низкоуровневыми вещами.
Статья: https://apptractor.ru/info/articles/effekty-s-gpu-uskoreniem-glitch-v-masshtabe.html
Платформа: Android
Собираем и публикуем Flutter-апп в AppStor
В этой статье рассмотрим настройку автоматической сборки Flutter-приложения для iOS с использованием Fastlane на macOS.
Статья: https://habr.com/ru/articles/964304/
Платформа: кроссплатформа
Превращение меню SwiftUI в мини-панель настроек
Меню в SwiftUI часто используются для быстрых одноразовых команд: выберите пункт, выполните действие — и всё готово. Но что, если вы хотите, чтобы меню функционировало не как простой селектор, а как мини-панель настроек, где пользователи могут последовательно переключать несколько пунктов, прежде чем сделать окончательный выбор? По умолчанию меню закрывается, как только пользователь нажимает на пункт, но с помощью подходящего API это поведение можно изменить.
Статья: https://apptractor.ru/info/articles/prevraschenie-menyu-swiftui-v-mini-panel-nastroek.html
Платформа: iOS
Valdi - кроссплатформенный UI фреймворк от Snap
Valdi — это кроссплатформенный UI фреймворк, обеспечивающий нативную производительность без ущерба для скорости разработки. Один раз напишите свой пользовательский интерфейс на декларативном TypeScript, и он сразу же скомпилируется в нативные (Kotlin, Objective-C и Swift ) представления на iOS, Android и macOS — без веб-представлений и JavaScript-бриджей.
Пример:
import { Component } from 'valdi_core/src/Component';
class HelloWorld extends Component {
onRender() {
const message = 'Hello World! 👻';
<view backgroundColor='#FFFC00' padding={30}>
<label color='black' value={message} />
</view>;
}
}
Настоящая нативная производительность
В отличие от фреймворков, использующих веб-представления или JavaScript-мосты, Valdi компилирует декларативно отрисованные компоненты TypeScript в платформенно-зависимые представления. Valdi также обладает рядом других преимуществ в плане производительности:
• Автоматическое переиспользование представлений — глобальная система пула представлений повторно использует нативные представления на всех экранах, значительно сокращая задержки.
• Оптимизированный рендеринг компонентов — компоненты перерисовываются независимо, не запуская повторную визуализацию родительских элементов, что обеспечивает быстрые инкрементальные обновления.
• Оптимизированный движок компоновки — движок компоновки C++ работает в основном потоке с минимальными затратами на преобразование данных из одного представления в другое.
• Рендеринг с учётом области просмотра — он выполняется только видимых представлений, что делает бесконечную прокрутку производительной по умолчанию.
Valdi широко используется в приложениях Snap уже 8 лет. В компании называют это бета-версией, поскольку инструменты и документация требуют более тщательного тестирования в среде открытого исходного кода. Valdi выйдет из стадии бета-тестирования, когда в компании будут довольны опытом разработчиков.
Valdi на GitHub: https://github.com/Snapchat/Valdi
Платформа: кроссплатформа
⭐️: 4K📺 Видео и подкасты за неделю @AppFiles
•
(iOS En) Perplexity App's Animated Bottom Bar Using SwiftUI
• (iOS En) Press Start: Game development on Apple platforms
• (iOS En) SwiftLeeds Evening Talkshow 2025
• (iOS En) PencilKit: From simple drawings to custom creative tools
• (iOS En) Practical Guide to Shipping Fast
• (iOS En) Side Effects as Behavior
• (iOS En) Tuning your app using Xcode's Instruments
• (iOS En) Guided Generation with Foundation Models in Swift
• (iOS En) Hero Confirmation Dialogs Using SwiftUI
• (And Ru) Swift на Android — ход отчаяния Apple или стратегический манёвр?
• (And En) All Material3 Expressive Loading Indicators Explained (+ When to Use Which)
• (Crs Ru) Как адаптировать свой KMP код под Аврору
• (Crs Ru) Flutter Aurora UI Kit
• (Crs Ru) Наша навигация и её эволюция
• (Crs Ru) Выбираем DI для Kotlin Multiplatform
• (Dev Ru) ИИ в кармане: как встроить ИИ в мобильное приложение
• (Dev Ru) ИИ в серьёзной разработке: революция в IT или переоценённый хайп?
• (Dev Ru) Как с нуля создать ферму мобильных устройств
• (Dev Ru) Всё про новый найм в Яндексе — честный разбор
• (Tcn Ru) Криптофинансы — блокчейн, криптовалюты, DeFi, web3
• (Dsg Ru) Когнитивная нагрузка в интерфейсах и как с ней бороться
Прошлогодние видео:
• (iOS Ru) SDK и BDUI в Яндекс Пэй и Яндекс Банке
• (And Ru) 5 СЕКРЕТНЫХ преимуществ Android эмулятора которые вы не знали!DroidRun - управление смартфоном с помощью ИИ
DroidRun — это мощный фреймворк для управления устройствами Android и iOS через LLM-агенты. Он позволяет автоматизировать взаимодействие с устройствами с помощью команд на естественном языке. Для работы нужен Python 3.10+, устройство и приложение на нем для отслеживания работы LLM-агентов.
DroidRun на GitHub: https://github.com/droidrun/droidrun
Платформа: iOS/Android
⭐️: 5.5K
Страна, которая сломала Kotlin
Статья посвящена одной из самых удивительных и трудноуловимых ошибок языка Kotlin. В 2016 году турецкий инженер заметил, что его сборка не проходит: компилятор выдаёт загадочную ошибку «
Unknown compiler message tag: INFO». При этом причина оказалась не в коде, а в… настройки локали! Оказалось, что на турецкой локали метод строкового преобразования toLowerCase() превращает «INFO» в «ınfo» (с безточечной «i») — и словарь мапы не находит соответствия.
Дальше — ещё интереснее: спустя годы, с выходом корутин в Kotlin 1.3, ошибка проявилась снова при вызове функции boxInt() — но машиной она была сгенерирована как boxİnt() (заглавная «İ») на машинах с турецкой локалью.
И всё благодаря тому же проблемному capitalize() без указания локали. В финале автор показывает, как разработчики Kotlin заменили все такие вызовы на версии с явно заданной локалью (Locale.US или аналог) и отключили использование старых функций toLowerCase()/toUpperCase().
Основная мысль: даже языковые конструкции вроде преобразования регистра строк, считавшиеся банальными, могут таить в себе серьёзные баги в глобальной среде. Это напоминание: при разработке — не игнорируйте культурно-языковые аспекты и локали. И да — турецкая локаль почти сломала Kotlin.
Статья: https://sam-cooper.medium.com/the-country-that-broke-kotlin-84bdd0afb237
Платформа: Android/KotlinСделайте приложение более персонализированным с помощью Language Discovery
Новый
Locale.preferredLocales API представляет собой не просто постепенное улучшение, а полное переосмысление того, как iOS работает с многоязычными пользователями.
В то время как старый API был основан на строках и требовал обширной ручной обработки, вынуждая разработчиков поддерживать жёстко заданные соответствия для культурных особенностей, новый API предоставляет всё необходимое для приложений, учитывающих культурные особенности (identifier, displayName, languageCode и т.д.).
Эта расширенная структура данных исключает необходимость догадываться и обеспечивает точный культурный контекст для каждого пользовательского предпочтения.
Статья: https://apptractor.ru/info/articles/language-discovery.html
Платформа: iOSПишем свою мобильную ОС с нуля на Rust
Сегодня я хотел бы поделиться с вами результатами своего эксперимента по написанию ядра мобильной ОС с нуля.
Для чего? Главным образом — просто ради развлечения. Мне попадалось много статей по разработке десктопных ОС для x86. Да и сам я когда-то этим увлекался. Попытка разобраться с мобильной операционкой может стать довольно интересным опытом.
Статья: https://habr.com/ru/articles/962680/
Платформа: разработка
Tachikoma - современный SDK для работы с ИИ-провайдерами
Tachikoma - современный Swift AI SDK, который делает интеграцию с ИИ простой и естественной. Tachikoma предоставляет интеллектуальный, адаптивный интерфейс для ИИ-сервисов с полностью современным API на Swift.
Tachikoma на GitHub: https://github.com/steipete/Tachikoma
Платформа: iOS
⭐️: 135
Руководство по промпт-инжинирингу для программистов
В статье автор рассказывает, как превратить инструменты на основе ИИ для программирования (автодополнение, ассистенты, генерация кода) в действительно полезных партнёров по разработке — если грамотно составлять запросы (промпты). Он подчёркивает: качество ответа ИИ сильно зависит от того, какой запрос мы ему задаём — контекст, цель, детали имеют решающее значение.
📌 Ключевые принципы, которые стоит взять на заметку
Вот некоторые из наиболее важных рекомендаций из статьи:
• Предоставляйте богатый контекст: язык, фреймворк, используемые библиотеки, специфика проекта.
• Чётко сформулируйте цель или вопрос: вместо «почему не работает» задайте: «эта функция возвращает undefined вместо ожидаемого результата X при входе Y».
• Разделяйте сложные задачи на части: не просите сразу реализовать весь большой модуль, начните с генерации скелета, затем добавьте шаг за шагом.
• Приводите пример входа/выхода, желаемого поведения — это помогает ИИ „понять“ задачу.
• Используйте роли или персону: «действуй как старший разработчик React» или «ты эксперт по безопасности кода». Это формирует нужный тон и глубину ответа.
• Итерации: рассмотрите первый ответ, корректируйте запрос, задавайте уточняющие вопросы. Работа с ИИ — не одноразовый промпт, а диалог.
Применение этих принципов может серьёзно повысить вашу эффективность. Впрочем, в статье упоминается, что промпт-инженерия это скорее ремесло, чем строгий набор правил.
Статья: https://addyo.substack.com/p/the-prompt-engineering-playbook-for
Платформа: разработка
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
