AppFiles - Mobile Development
Відкрити в Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Показати більше2 176
Підписники
Немає даних24 години
+47 днів
+930 день
Архів дописів
UIComponent - декларативный UIKit
UIComponent — еще один декларативный современный фреймворк для создания пользовательских интерфейсов с использованием UIKit. Благодаря возможностям
@resultBuilder и @dynamicMemberLookup, ваш интерфейс UIKit можно легко построить с синтаксисом, аналогичным SwiftUI. UIComponent также поддерживает однонаправленный поток данных вместо двусторонней привязки и предлагает отличные возможности для повышения производительности и оптимизации.
В версии 5.0 UIComponent также может легко отображать представления SwiftUI вместе с UIView и другими компонентами.
UIComponent на GitHub: https://github.com/lkzhao/UIComponent
Платформа: iOS
⭐️: 420
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьУстройства Android плавно интегрируются с подключенными дисплеями.
Google официально объявила о выходе режима рабочего стола (desktop windowing) в общую доступность вместе с релизом Android 16 QPR3. Новая функция, разработанная в партнерстве с Samsung, позволяет пользователям подключать смартфоны Pixel и Samsung к внешним мониторам для создания полноценной рабочей среды. В этом режиме на внешнем экране появляется панель задач и поддержка многооконности, что позволяет запускать несколько приложений одновременно в свободно масштабируемых окнах, превращая мобильное устройство в подобие настольного ПК.
Для разработчиков это нововведение означает необходимость адаптации приложений под различные форм-факторы и способы ввода. Программы, созданные с использованием принципов адаптивного дизайна, автоматически подстраиваются под интерфейс рабочего стола, обеспечивая привычный пользовательский опыт. Google призывает девелоперов переходить от фиксированной портретной ориентации к поддержке многодисплейного режима и современных методов управления окнами, чтобы их продукты оставались актуальными и продуктивными на расширяющейся экосистеме устройств.
Статья: https://android-developers.googleblog.com/2026/03/android-devices-extend-seamlessly-to.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
👩💻 Открытый урок «Знакомство с Kotlin: пишем первый код»
🗓 5 марта в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Developer. Basic» от Otus.
Программа вебинара:
✔️Разберем три ключевых преимущества Kotlin: безопасность null, лаконичность и совместимость.
✔️Напишем небольшой, но полезный фрагмент, который решает понятную задачу.
✔️Ответим на главный вопрос: почему Kotlin — это не просто «улучшенная Java», а другой подход к разработке.
Вебинар будет полезен:
Начинающим разработчикам, разработчикам на Java, которые хотят писать современный, более безопасный и лаконичный код.
🔗 Ссылка на регистрацию: https://otus.pw/mBhz/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Промпт-контракты — от гадания к выпуску кода
Фреймворк промпт-контрактов не о том, чтобы писать больше кода. Он о том, чтобы думать 60 секунд, чтобы Claude Code не приходилось гадать 60 минут.
Я перешёл от азартных игр к поставке продуктов. Ваш ход.
Статья: https://apptractor.ru/info/articles/prompt-contracts.html
Платформа: разработка/ИИ
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Declarative Gradle - процесс сборки в ясной и понятной форме
В Gradle стремятся создать элегантный и расширяемый декларативный язык сборки, позволяющий выражать любую сборку ясным и понятным образом. И Declarative Gradle - часть этой концепции, декларативный способ описания сборки в системе Gradle, при котором вы описываете желаемый результат, а не пошаговые действия для его достижения.
Пока это экспериментальный проект.
Declarative Gradle на GitHub: https://github.com/gradle/declarative-gradle
Платформа: Android
⭐️: 171
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Экспериментальный Styles API в Jetpack Compose
Система модификаторов Jetpack Compose долгое время была основным способом применения визуальных свойств к компонуемым элементам. Вы объединяете модификаторы, такие как
background(), padding() и border(), для здания внешнего вида и поведения элементов пользовательского интерфейса. Несмотря на свою мощь, этот подход имеет ограничения при работе с интерактивными состояниями. Если вы хотите, чтобы кнопка меняла цвет при нажатии, вам необходимо вручную отслеживать состояние, создавать анимированные значения и условно применять различные модификаторы. Новый экспериментальный Styles API призван решить эту проблему, предоставляя декларативный способ определения зависимых от состояния стилей с автоматической анимацией.
Статья: https://apptractor.ru/info/articles/eksperimentalnyy-styles-api-v-jetpack-compose.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьПлан развития Flutter и Dart в 2026 год
Погружаясь в наши планы на год, помните, что эта дорожная карта — как и всегда — является нашей амбициозной стратегией на будущее. Как и любая другая дорожная карта, планы, как правило, меняются и адаптируются в течение года, поэтому не удивляйтесь, если произойдут какие-то изменения. Хотя она в основном отражает работу, на которой сосредоточены наши команды в Google, правда в том, что Flutterverse сейчас намного больше, чем любая отдельная компания.
Статья: https://apptractor.ru/info/articles/plan-razvitiya-flutter-i-dart-v-2026-godu.html
Платформа: Flutter
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Нет соединения — не значит нет UX. Как не потерять доверие пользователя вместе с интернетом
Большинство разработчиков думают об офлайн-режиме в последнюю очередь - когда приложение уже готово, дизайн согласован, а PM давит на дедлайн. В результате пользователь видит белый экран, зависший спиннер или, что хуже - молча потерянные данные. Эта статья про то, как выстроить честный UX для состояний без сети: от психологии тревоги до кода с экспоненциальным откатом, от визуального языка ошибок до стратегий разрешения конфликтов. Всё это пригодится при разработке любого мобильного или веб-приложения, которое работает в условиях нестабильного соединения - а таких большинство.
Статья: https://habr.com/ru/articles/1002388/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Между логином и 401: как устроена JWT-авторизация во Flutter
Сегодня я расскажу о веб-токенах JWT: как с их помощью безопасно передавать данные и реализовать авторизацию во Flutter. Разберем, чем JWT отличаются от классической схемы с сессиями, как работают Access- и Refresh-токены, зачем нужен Blacklist и как все это собрать в рабочее решение.
Статья: https://habr.com/ru/companies/friflex/articles/1005474/
Платформа: кроссплатформа/Flutter
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Construkt - декларативный и реактивный UIKit
Construkt позволяет создавать пользовательские интерфейсы на основе UIKit, используя современный декларативный синтаксис, идентичный SwiftUI.
Он переносит преимущества декларативной композиции и реактивного потока данных в устаревшие проекты UIKit, позволяя создавать динамические интерфейсы, управляемые состоянием, без сторибордов, NIB-файлов или шаблонного кода Auto Layout.
LabelView($title)
.color(.red)
.font(.title1)
Используя паттерн ResultBuilder из Swift, Construkt компонует нативные иерархии UIView. Вы получаете лаконичный, читаемый синтаксис SwiftUI, сохраняя при этом всю мощь, предсказуемость и бесконечные возможности настройки UIKit.
Construkt на GitHub: https://github.com/MainActorDev/Construkt
Платформа: iOS
⭐️: 11
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьКак мы написали React Native библиотеку для Яндекс Карт за два дня с Claude
В одном из проектов (российская сеть ресторанов по франшизе) нам нужно было прикрутить Яндекс Карты. Изначально хотели взять либу react-native-yamap (респект тем, кто ее делал) — но как выяснилось, она работает только на старой архитектуре RN.
После обновления до 0.76 версии, где Fabric стала использоваться по умолчанию, приложения на iOS начали падать: карта не рендерится, события не доходят до JS, приложение крашится при взаимодействии с картой и вот это вот всё. И судя по открытым тикетам, мы не одни, кто столкнулся с этой проблемой.
Полезли искать, написал ли кто-то уже библиотеку под новую архитектуру — но либо таких людей нет, либо ни с кем не делятся. Спойлер: мы пока тоже не будем, ещё обкатываем либу на своих проектах — но уже сейчас хотим рассказать, как собрали новый пакет с помощью Claude Code за два дня.
Статья: https://habr.com/ru/articles/1004576/
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Кастомная галерея на iOS: от лага на 60 000 фото до lazy-загрузки и Combine
Если вы когда-нибудь разрабатывали мессенджер, то наверняка сталкивались с задачей выбора фотографий и видео для отправки. На первый взгляд кажется, что Apple предоставляет всё необходимое:
UIImagePickerController, PHPickerViewController. Но стоит только копнуть чуть глубже, и оказывается, что стандартные компоненты не покрывают и половины того, что нужно в реальном продукте.
В этой статье я расскажу, как мы шаг за шагом построили кастомный пикер галереи для iOS-мессенджера. Пройдём путь от наивной реализации, которая зависала при открытии на устройствах с 60 000+ фотографий, до production-ready решения с lazy-загрузкой, отслеживанием прогресса скачивания из iCloud через Combine и встроенным превью камеры.
Статья: https://habr.com/ru/articles/1005060/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьProjectGuard - защита проекта от нежелательных зависимостей
ProjectGuard - плагин Gradle, который выступает в роли мощного привратника для зависимостей вашего проекта. Он помогает вам соблюдать архитектурные правила, предотвращать нежелательные зависимости и поддерживать чистоту и удобство сопровождения графа модулей по мере масштабирования проекта.
Ключевые фичи:
• Простой DSL: настройте все правила в одном блоке конфигурации Gradle.
• Управление внешними библиотеками: используйте каталоги версий Gradle (libs) для обеспечения безопасности на этапе компиляции и автозавершения кода в IDE.
• Отчеты об использовании зависимостей: сгенерируйте подробный HTML-отчет, который четко показывает все нарушения зависимостей, что упрощает их выявление и исправление.
• Интеграция с CI/CD: завершайте сборку с ошибкой при нарушении правила, гарантируя, что проблемные зависимости не попадут в вашу основную ветку.
• Поддержка базовых версий: не хотите исправлять все существующие нарушения сразу? Создайте базовый файл, чтобы игнорировать их и сосредоточиться на предотвращении новых проблем.
• Граф Mermaid для визуализации: проверьте граф зависимостей для каждого модуля вашего проекта.
ProjectGuard на GitHub: https://github.com/rubensousa/ProjectGuard
Платформа: Android
⭐️: 51
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
📺 Видео и подкасты за неделю
•
(iOS En) iOS Style Permission Animation Using SwiftUI
• (iOS En) Swift Autoclosures - From First Principles to Smarter SwiftUI Validation
• (And En) Android Developer fireside chat: Talking about Gemini in Android Studio
• (And En) Senior Developer Ranks Jetpack Compose State Management Approaches
• (And En) Intro to Kotlin's Flow API
• (And En) Automating governance from build to release with Gradle and JFrog
• (Crs En) How Major Metros Run on Kotlin Multiplatform
• (Crs En) Tap to Exit with Navigation 3 - Kotlin Multiplatform (Android/iOS)
• (Dev Ru) От языков программирования к Developer Experience
• (Dev Ru) Волновая архитектура на практике
• (Dev Ru) OCaml – лучший функциональный язык: OCaml vs Haskell vs TypeScript
• (Dev En) Learn Kubernetes in 6 Hours – Full Course with Real-World Project
Прошлогодние видео:
• (iOS Ru) Переходим на SwiftUI
• (And Ru) Производительность sequence, stream и collection в JVM
• (And Ru) Непростые вопросы про Kotlin Coroutines
• (And Ru) Наш опыт внедрения Compose в большой проект
• (And Ru) Многомодульность: что это такое?
• (And Ru) Жизнь инди в Google Play
• (Dev Ru) Архитектурный надзор и анализ трейсов в АвитоCalf - адаптивные пользовательские интерфейсы в Compose Multiplatform
Calf — это библиотека, которая позволяет легко создавать адаптивные пользовательские интерфейсы и получать доступ к API, специфичным для каждой платформы (UI-элементы, выбор файлов, WebView, разрешения, уведомления и т.п.), из ваших приложений Compose Multiplatform.
В настоящее время основное внимание уделяется Android и iOS, но в будущем появятся и другие компоненты для десктопов, позволяющие создавать адаптивные пользовательские интерфейсы и для этих платформ (Windows, macOS, Linux).
Calf на GitHub: https://github.com/MohamedRejeb/Calf
Платформа: Android/кроссплатформа
⭐️: 1.5K
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Payo - управление покупками и подписками в iOS-приложении
Самый простой способ добавить подписки в ваше iOS-приложение. Это легковесный iOS SDK, созданный на основе StoreKit 2, который обрабатывает управление подписками, контроль доступа и процессы покупок — так что вы можете сосредоточиться на разработке своего приложения.
Особенности:
• Автоматическое определение — Передавайте идентификаторы продуктов, Payo автоматически определяет типы подписок, периоды и цены из StoreKit
• Синхронные проверки доступа — Payo.hasAccess мгновенно возвращает Bool, await не требуется
• Реактивное состояние SwiftUI — Payo.state — это ObservableObject, который автоматически обновляется при покупках, восстановлении, продлении и истечении срока действия
• Ограничение доступа к представлениям в одну строку — .requiresAccess() добавляет наложение blur + lock к любому представлению SwiftUI или UIView
• Право на участие в вводном предложении — Проверьте, имеют ли пользователи право на бесплатные пробные периоды или скидки на первый период
• Управление и возврат средств — Откройте встроенные в Apple панели управления подписками и возвратами
• Многоуровневая поддержка — Ограничение доступа к функциям за именованными группами для приложений с несколькими уровнями тарифных планов
• Нулевой код конфигурации — Просто добавьте файл Payo.plist, и SDK автоматически настроится при запуске
Payo на GitHub: https://github.com/PayoSDK/payo-ios
Платформа: iOS
⭐️: 3
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Кастомные параметры и анимация с использованием шейдеров Metal
Настоящий творческий контроль начинается, когда мы выходим за рамки автоматической обработки и начинаем передавать собственные данные в шейдер.
В этой статье мы рассмотрим, как передавать пользовательские параметры из SwiftUI в Metal, создавать процедурные паттерны, такие как настраиваемая шахматная доска, управлять шейдерами с помощью анимации на основе времени и использовать математические функции для создания плавного, непрерывного движения.
Статья: https://apptractor.ru/info/articles/kastomnye-parametry-i-animatsiya-s-ispolzovaniem-sheyderov-metal.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Вы думали, что Flutter обладает производительностью, близкой к нативной? А вот и нет!
Результаты бенчмарка говорят об обратном.
Используя современные инструменты 2025 года, реальные устройства и повторяемую методологию, Flutter не просто не отставал от нативных iOS и Android. По нескольким ключевым показателям он их значительно превзошёл.
И не на погрешность округления.
Статья: https://apptractor.ru/info/articles/vy-dumali-chto-flutter-obladaet-proizvoditelnostyu-blizkoy-k-nativnoy-a-vot-i-net.html
Платформа: кроссплатформа/Flutter
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Бэкдоры в фальшивых собеседованиях
Злоумышленники проводят фальшивые собеседования для разработчиков и отправляют «тестовые задания» в виде репозиториев с вредоносным кодом. Проекты выглядят как обычные приложения (например, на Next.js), но при запуске устанавливают бэкдор и подключаются к серверу управления (C2). Таким образом атакующие получают удалённый доступ к машине жертвы
Вредоносный код активируется через привычные для разработчика механизмы: автоматические задачи VS Code (
.vscode/tasks.json), скрытые скрипты в файлах проекта (например, замаскированные под jquery.min.js) и серверный код, выполняющий декодированные команды при старте приложения. В результате на устройстве закрепляется бэкдор, способный выполнять команды и передавать данные злоумышленникам
Основной риск — компрометация рабочей среды: утечка API-ключей, токенов, секретов из .env, исходного кода и доступа к корпоративной инфраструктуре. В качестве защиты рекомендуется запускать тестовые задания в изолированной среде (VM или контейнере), проверять конфигурационные файлы перед запуском и тщательно верифицировать работодателя через официальные каналы.
Статья: https://threatroad.substack.com/p/fake-job-interviews-are-installing 🇬🇧
Платформа: разработка
Поставь 👍 или пошарь пост, если хочешь перевод
👨🦯➡️ AppFiles: код, инструменты, практики, производительность