ch
Feedback
AppFiles - Mobile Development

AppFiles - Mobile Development

前往频道在 Telegram

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

显示更多
2 166
订阅者
+424 小时
-27
+730
帖子存档
Что упало — не пропало? EXC_BAD_ACCESS vs. LLDB Эта статья для тех, кто хочет получить ещё один инструмент локализации падени
Что упало — не пропало? EXC_BAD_ACCESS vs. LLDB Эта статья для тех, кто хочет получить ещё один инструмент локализации падений в свой арсенал, ну или просто ни разу не сталкивался с четырьмя волшебными буквами из заголовка. Материал основан на нашем опыте решения одной из проблем. Всё, о чём мы рассказываем ниже, — это не «правильный учебник» по LLDB, а опыт из эксперимента, который мы получили, пока работали над решением. В реальном проекте этот разбор может быть сложнее, поэтому, если у вас есть символизированный крэш-лог, или Address Sanitizer дает подсказку — скорее всего будет лучше/быстрее/качественнее разобраться с проблемой через них Статья: https://habr.com/ru/companies/ivi/articles/1003668/ Платформа: iOS/Swift 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

SimpleChart - графики SwiftUI SimpleChart - простая библиотека для построения графиков, использующая исключительно SwiftUI и
SimpleChart - графики SwiftUI SimpleChart - простая библиотека для построения графиков, использующая исключительно SwiftUI и обеспечивающая поддержку всех платформ Apple. Что особенно важно, её можно использовать в WidgetKit. SimpleChart предоставляет вспомогательные методы для создания chartData, который является единственным необходимым параметром для всех объектов конфигурации графиков. Поддерживает iOS v13, macOS v10.15, tvOS v13, watchOS v6, macCatalyst v.13. Доступные диаграммы: • Гистограмма • Линейная диаграмма • Квадратная кривая (изогнутая версия линейной диаграммы) • Диаграмма диапазонов (диаграмма, представляющая диапазон данных за один и тот же период времени, аналогичная представлению диапазона частоты сердечных сокращений в приложении Apple Health) SimpleChart на GitHub: https://github.com/ImpostersLimited/SimpleChart Платформа: iOS ⭐️: 11 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Сравнение MVI и KoTEA В мире Android-разработки существуют различные архитектурные паттерны. Многие из вас хорошо знакомы с M
Сравнение MVI и KoTEA В мире Android-разработки существуют различные архитектурные паттерны. Многие из вас хорошо знакомы с MVVM, и возможно сталкивались с MVP. В последнее время всё чаще звучит аббревиатура MVI (Model-View-Intent). Однако наряду с MVI существует похожий на неё подход – KoTEA (Kotlin The Elm Architecture). Оба этих паттерна следуют принципам UDF (Unidirectional Data Flow). Суть UDF архитектуры заключается в том, что данные в приложении движутся строго в одном направлении от единого источника истины к визуальным компонентам. Каждая фича (например, экран) имеет единственное неизменяемое состояние (State). Изменить его напрямую нельзя — только создать новое на основе предыдущего. Это соответствует принципу конечных автоматов и делает переходы между состояниями прозрачными и контролируемыми. Статья: https://habr.com/ru/articles/1006782/ Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

📺 Видео и подкасты за неделю(iOS En) Fortify your app: Essential strategies to strengthen security(iOS En) iOS Photos App Style Transitions Using SwiftUI(iOS En) Building a Better Network Manager in Swift(iOS En) Apple Stores App's Minimizable Tab Bar Using SwiftUI(And Ru) Защищаем ресурсы Android-приложений с Runtime Resource Overlay(And En) Migrating Kotlin Android projects to AGP 9.0(And En) Tracing 2.0 - Performance on Android has never been easier(Crs Ru) Flutter Dev Podcast #52: вайб-кодинг и агенты — превращение Flutter-разработчика в фуллстека(Dev Ru) Почему свои IT-продукты выгоднее, чем работа в найме(Dev Ru) Оконные менеджеры — стекинг, тайлинг, ментальная модель управления экраном(Dev En) Is it still worth learning to code in 2026?(Dev En) Learn MLOps with MLflow and Databricks – Full Course for Machine Learning Engineers(Dsg Ru) Ozon Tech Community Design Meetup Прошлогодние видео: • (iOS Ru) Minimal Widget Product: путь к эффективной и гибкой реализации виджетов(iOS Ru) Уроки Swift: UITextField с анимированным плейсхолдером(And Ru) Hilt в многомодульный проект — пособие по внедрению зависимостей для новичков(And Ru) Как устроена мобильная архитектура. Интервью с тех. лидером юнита «Mobile Architecture» из AvitoTech(Crs Ru) Адаптивная вёрстка во Flutter(Crs Ru) Заезжаем в KMP. Но какой ценой?(Dev Ru) Внедряем Server Driven UI 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Я заменил все циклы рекурсией — вот что произошло Глубоко ли я изучил рекурсию? Да. Повторил бы я этот эксперимент? Только ес
Я заменил все циклы рекурсией — вот что произошло Глубоко ли я изучил рекурсию? Да. Повторил бы я этот эксперимент? Только если бы я возненавидел своих товарищей по команде. Если вы вынесете из этой истории что-то одно, пусть это будет следующее:
Знайте рекурсию. Уважайте рекурсию. Но ради всего святого, не заменяйте ею свои циклы.
Если, конечно, вам не доставляет удовольствия наблюдать за тем, как ваш код медленно саморазрушается. Статья: https://apptractor.ru/info/articles/ya-zamenil-vse-tsikly-rekursiey-vot-chto-proizoshlo.html Платформа: iOS/Swift 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Зачем нужен companion object в Hilt-модулях Замечали некий companion object в интерфейсах Hilt-модулей? Что он делает, как он
Зачем нужен companion object в Hilt-модулях Замечали некий companion object в интерфейсах Hilt-модулей? Что он делает, как он работает под капотом, почему так популярен в Hilt-модулях, и почему нельзя обойтись обычными классами? Сегодня я развею эту магию! Статья: https://habr.com/ru/articles/1006844/ Платформа: Android 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Kotlin Multiplatform LaTeX Rendering Library - рендеринг формул LaTeX в Compose Kotlin Multiplatform LaTeX Rendering Library
Kotlin Multiplatform LaTeX Rendering Library - рендеринг формул LaTeX в Compose Kotlin Multiplatform LaTeX Rendering Library - высокопроизводительная библиотека для анализа и отображения математических формул LaTeX, разработанная на основе Kotlin Multiplatform (KMP). Она поддерживает согласованные эффекты отображения на Android, iOS, Desktop (JVM) и Web (Wasm/JS). Фичи: • Высокопроизводительный парсинг: рекурсивный парсер на основе AST с поддержкой инкрементальных обновлений • Кроссплатформенная консистентность: используется Compose Multiplatform для единообразного рендеринга на Android, iOS, Desktop (JVM) и Web (Wasm/JS) • Автоматический перенос строк: умный перенос длинных формул по логическим точкам разрыва (операторы, отношения и т.д.) • Экспорт изображений: возможность экспортировать отрендеренные формулы в изображения PNG/JPEG/WEBP с настраиваемым масштабированием разрешения • API предварительного измерения: синхронное предварительное вычисление размеров формулы (ширина/высота/baseline) для встраивания математических выражений в Compose через InlineTextContent • Доступность: встроенная поддержка screen reader’ов с описанием формул в стиле MathSpeak • LaTeX → MathML: конвертация AST LaTeX в Presentation MathML • Подсветка формул: возможность подсветки подвыражений внутри формулы через HighlightConfig • Анимации: анимированные переходы между формулами (crossfade / slide / fade+slide) • WYSIWYG-редактор (экспериментально): встроенный редактор LaTeX с позиционированием курсора, размещением по тапу и предпросмотром отрендеренной формулы в реальном времени Kotlin Multiplatform LaTeX Rendering Library на GitHub: https://github.com/huarangmeng/latex Платформа: Android/кроссплатформа ⭐️: 55 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Малоизвестная возможность Swift: for case let, о которой не знают многие iOS-разработчики Swift известен системой pattern matching. Большинство разработчиков используют её в switch, иногда в if case или guard case. Но в языке есть ещё одна конструкция, которую многие никогда не видели — for case let. Интересно, что даже разработчики с несколькими годами опыта часто о ней не знают. Более того, в официальной документации Apple она упоминается лишь вскользь, потому что технически это не отдельная фича языка, а комбинация существующих механизмов. Тем не менее, эта конструкция может заметно упростить код. Статья: https://habr.com/ru/articles/1006412/ Платформа: iOS 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

UIComponent - декларативный UIKit UIComponent — еще один декларативный современный фреймворк для создания пользовательских ин
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: пишем первый код» 🗓 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 - часть этой концепции, декларативный способ описания сборки в системе Gradle, при котором вы описываете желаемый результат, а не пошаговые действия для его достижения. Пока это экспериментальный проект.  Declarative Gradle на GitHub: https://github.com/gradle/declarative-gradle Платформа: Android ⭐️: 171 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Экспериментальный Styles API в Jetpack Compose Система модификаторов Jetpack Compose долгое время была основным способом прим
Экспериментальный 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 год Погружаясь в наши планы на год, помните, что эта дорожная карта — как и всегда — явля
План развития 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: как с их помощью безопасно
Между логином и 401: как устроена JWT-авторизация во Flutter Сегодня я расскажу о веб-токенах JWT: как с их помощью безопасно передавать данные и реализовать авторизацию во Flutter. Разберем, чем JWT отличаются от классической схемы с сессиями, как работают Access- и Refresh-токены, зачем нужен Blacklist и как все это собрать в рабочее решение. Статья: https://habr.com/ru/companies/friflex/articles/1005474/ Платформа: кроссплатформа/Flutter 👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность

Construkt - декларативный и реактивный UIKit Construkt позволяет создавать пользовательские интерфейсы на основе UIKit, испол
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 библиотеку для Яндекс Карт за два дня с 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: код, инструменты, практики, производительность