AppFiles - Mobile Development
2.13K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Первый взгляд на retain{}: новый способ сохранения состояния в Jetpack Compose

Появление retain в Compose Runtime стало важным шагом к тому, чтобы сделать Compose самостоятельной UI-системой. Этот механизм закрывает разрыв между краткоживущим состоянием и длительным хранением в памяти, позволяя сохранять значения при переходах, не выходя за пределы composable-мирa.

Будь то сложная навигация, обработка конфигурационных изменений или управление временным UI-состоянием — retain предлагает новый многообещающий механизм восстановления состояния за пределами композиции непосредственно в рамках Compose Runtime.

Статья: https://apptractor.ru/info/articles/retain.html
Платформа: Android
Meetingnotes - приложение для ведения заметок на встречах с ИИ. Оно записывает аудио и ведет транскрибирование, к текстам можно добавлять собственные примечания, есть функции формирования, поиска, различные шаблоны и т.п.

Meetingnotes на GitHub: https://github.com/owengretzinger/meetingnotes
Платформа: macOS/iOS
⭐️: 38
👍1
Курс "Генеративный ИИ для начинающих с JavaScript" от Microsoft

Microsoft уже выпустила несколько обучающих курсов по ИИ, таких как "AI Agents for Beginners", "Copilot Adventures" и "Generative AI for Beginners". В этом курсе "Генеративный ИИ для начинающих с JavaScript" от Microsoft, размещенном на GitHub, вы научитесь создавать приложения GenAI с использованием JavaScript.

Это новое предложение можно рассматривать как продолжение общего курса "ИИ-агенты для начинающих", но посвящённого JavaScript. Курс также заимствует повествовательный стиль исследования из курса "Copilot Adventures", оформленного в виде приключения с путешествием во времени. Суть курса заключается в том, что вы выбираете задачу, или так называемое приключение, и затем пишете код для его выполнения.

Таким образом, вы отправитесь в захватывающее приключение, путешествуя во времени и сотрудничая с величайшими умами истории. Вместе вы будете решать сложные задачи и изучать, как генеративный ИИ может произвести революцию в ваших JavaScript-приложениях.

Курс на GitHub: https://github.com/microsoft/generative-ai-with-javascript
Платформа: обучение
Swipe to Pay, или Как мы переписали слайдер оплаты на Compose

Помните компонент MotionLayout? С его помощью можно просто реализовывать сложные анимации, в том числе и основанные на жестах.

У нас в Дринките был компонент, сделанный на MotionLayout — слайдер быстрой оплаты в меню. Он появляется, когда пользователь добавляет продукты в корзину.

С помощью этого компонента можно быстро оплатить свой заказ или перейти в корзину, тапнув по нему. Для того, чтобы анимировать его, MotionLayout подходил отлично.

Но шло время, баги копились, поддерживать элемент становилось всё сложнее, да и слайдер нуждался в новом функционале.

Статья: https://habr.com/ru/companies/dododev/articles/933278/
Платформа: Android
Игра в SPM

На Хабре уже немало статей об опыте перехода на Swift Package Manager — успешных и не очень. В моем случае переезд прошел удачно, но на каждом шагу возникали проблемы, которые было сложно нагуглить или вообще найти решения. Поэтому я решил собрать все накопленные знания и поделиться ими в этой статье, надеясь, что другие разработчики сэкономят кучу времени.

Статья: https://habr.com/ru/articles/857364/
Платформа: iOS
👍1
Распутываем навигацию SwiftUI

Если бы SwiftUI был парком развлечений, навигация была бы домом с привидениями — сначала захватывающе, но быстро понимаешь, что не знаешь, как из него выбраться.

Apple подарила нам NavigationView, а затем деликатно похлопала по плечу, выпустив новенький блестящий NavigationStack. Добавьте NavigationPath, onOpenURL и всеми любимый загадочный ящик — диплинкинг — и теперь даже опытные iOS-разработчики выглядят как тот мем с парнем, вокруг которого парят математические уравнения.

Но не волнуйтесь. Создаёте ли вы простое приложение с несколькими экранами или проектируете динамический поток с URL-адресами и кастомными типами данных, SwiftUI действительно может сделать простую навигацию. Как только вы разберётесь с инструментами (и будете знать, когда с ними не стоит бороться), всё станет на свои места.

Статья: https://apptractor.ru/info/articles/rasputyvaem-navigatsiyu-swiftui.html
Платформа: iOS
This media is not supported in your browser
VIEW IN TELEGRAM
FloatingTabBar - плавающая панель вкладок на Jetpack Compose, претворяющаяся "жидким стеклом" из iOS 26. 

Фичи: развёрнутое и свернутое состояния, настраиваемое поведение при прокрутке, можно добавлять кастомные аксессуары (например, медиаплеер), настраиваемые цвета, формы и размеры.

FloatingTabBar на GitHub: https://github.com/elyesmansour/compose-floating-tab-bar
Платформа: Android
⭐️: 624
This media is not supported in your browser
VIEW IN TELEGRAM
Как я сделал универсальный Skeleton‑View с shimmer‑эффектом в SwiftUI

Я — iOS‑разработчик, и недавно в своём приложении столкнулся с задачей: нужно было красиво показывать placeholder‑загрузку интерфейса. Думал использовать стандартный .redacted — но он неудобен: нет анимации, мало кастомизации. Либо подгружать тяжелую библиотеку вроде SwiftUI‑Shimmer. Решил: сделаю свой легковесный и гибкий подход — и расскажу вам, как это получилось.

Статья: https://habr.com/ru/articles/934756/
Платформа: iOS
День, когда моё Android-приложение чуть не убило телефоны пользователей (и как я это исправил)

Было 2 часа ночи, когда мой телефон начал безостановочно вибрировать. Slack, почта и несколько взволнованных звонков от продакт-менеджера. Наше новостное приложение, которое месяцами работало стабильно, внезапно начало крашиться на тысячах устройств по всему миру.

В одном из отзывов пользователи писали: «Приложение съедает всю память телефона. Телефон стал совершенно нерабочим».

За ту ночь я узнал об управлении памятью в Android больше, чем за годы чтения учебников.

Статья: https://apptractor.ru/info/articles/den-kogda-moyo-android-prilozhenie-chut-ne-ubilo-telefony-polzovateley-i-kak-ya-eto-ispravil.html
Платформа: Android
Карточка с частичным размытием в SwiftUI

В последнее время я часто вижу, как дизайнеры создают карточки товаров, в которых часть карточки, чаще всего нижняя, размыта, чтобы текст и описание было легче читать.

Статья: https://apptractor.ru/info/articles/kartochka-s-chastichnym-razmytiem-v-swiftui.html
Платформа: iOS
1
This media is not supported in your browser
VIEW IN TELEGRAM
Open SwiftUI Animations - библиотека готовых эффектов и анимаций для SwiftUI. Этот репозиторий вдохновит вас на добавление полезных и выразительных анимаций SwiftU в ваг проект. В нем есть анимации загрузки/прогресса, циклические, анимации включения/выключения, входа/выхода, затухания, вращения и фоновые анимации, а кроме того потрясающие пружинные анимации.

Open SwiftUI Animations на GitHub: https://github.com/amosgyamfi/open-swiftui-animations
Платформа: iOS
⭐️: 5K
👍1
📺 Видео и подкасты за неделю на @AppFiles

(iOS En) Код, который не тормозит: секреты производительности на iOS
(iOS En) How to support iOS 26 without breaking glass
(iOS En) What's New in Xcode 26
(iOS En) iOS 26 Concentric Rectangle
(And En) Multimodal Gemini in Android Studio: AI-powered UI development
(And En) Now in Android: 120 – Android Canaries, Agentic AI, 16 KB page size requirements, and more
(And En) Consume a Runtime-Enabled SDK
(And En) Getting your Gradle setup right, at the right time
(And En) Context-sensitive resolution in Kotlin 2.2
(And En) Code like a Senior Dev with Firebender – Android Studio AI Plugin
(And En) Gradle Tutorial - Shared Build Logic
(Crs En) Swift Export - A Peek Under the Hood
(Dev Ru) Кэширование для мобильных приложений: кому, зачем, когда?
(Dev Ru) Локализация приложения глазами переводчика
(Dev Ru) AI меняет всё: инсайды от Яндекса и Дзена
(Dev Ru) Математика в основе ИИ — матрицы, тензоры, deep learning
(Dev En) How to Build Scalable AI Agents with Kotlin, Ktor & Koog
(Dev En) Google Cloud Associate Cloud Engineer Course [2025]

Прошлогодние видео:

(iOS Ru) Combine с нуля — реактивщина это просто
(Dev Ru) Тулкиты кодогенерации Android vs iOS
(Dev Ru) Ускоряем карьерный рост в FAANG
(Dev Ru) Алгоритмы — самый провальный этап собеседований (+ все собеседования)
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Androidx Splashscreen Compose - эта библиотека позволяет создавать потрясающие анимированные экраны-заставки (сплэш-скрины) с помощью Compose без лишних хлопот. С ней вы получаете анимации Compose, плавные переходы, полный контроль над временем и анимацией, работу с AndroidX SplashScreen. 

Androidx Splashscreen Compose на GitHub: https://github.com/kibotu/androidx-splashscreen-compose
Платформа: Android
⭐️: 9
1
Kick: Kotlin Inspection & Control Kit — единый модульный инструмент отладки прямо в приложении

При разработке и тестировании приложений порой требуется заглянуть под капот - проанализировать HTTP-трафик или проверить кэш данных в базе данных. Ранее для этих целей мы использовали Inspektify и Delight SQL Viewer. Но в какой-то момент нам понадобился еще и удобный доступ к логам приложения и тащить ещё одно отдельное решение не хотелось. Был нужен один инструмент, который объединит всё самое необходимое в одном месте. Так появился Kick — расширяемый модульный набор инструментов, позволяющий разработчикам и тестировщикам легко инспектировать приложение.

Статья: https://habr.com/ru/articles/932992/
Платформа: разработка
👍1
Я сделал $100K на iOS-приложении. Apple забрала 30%. Остальное ушло на исправление ошибок и выгорание.

100 тысяч долларов дохода от приложения — это звучит заманчиво в твите.

Но в реальной жизни это означает бессонные ночи, постоянную поддержку и непредвиденные расходы. Это означает баланс между ростом и психологическим здоровьем и умением говорить «нет» — даже собственным идеям новых функций.

Я рад, что сделал это. Но я бы не назвал это лёгкими деньгами.

Если вы планируете запустить что-то самостоятельно, убедитесь, что вы готовы не только разрабатывать, но и поддерживать, чинить, общаться с пользователями и улучшать.

Вот это и есть настоящая работа. И вот где настоящие затраты.

Статья: https://apptractor.ru/info/articles/ya-sdelal-100k-na-ios-prilozhenii-apple-zabrala-30-ostalnoe-ushlo-na-ispravlenie-oshibok-i-vygoranie.html
Платформа: инди-разработка
👍1
PotentCodables - мощный набор реализаций и расширений для Codable

PotentCodables предоставляет стандартные энкодеры и декодеры для фреймворка Swift Codable. Кроме того, все кодировщики и декодировщики предоставляют расширенные возможности для упрощения и повышения эффективности работы с форматами данных.

Фреймворк призван решить четыре основные проблемы, связанные с системой Swift Codable:

• Разрешить декодирование и/или кодирование значений неизвестной структуры (например, любого закодированного значения)
• Поддержка кодирования/декодирования полиморфных типов с сохранением возможности реализации Codable в Swift
• Снижение сложности и объёма кода, необходимого для реализации и тестирования новых форматов сериализации
• Предоставить библиотеку полнофункциональных реализаций популярных форматов сериализации

PotentCodables на GitHub: https://github.com/outfoxx/PotentCodables
Платформа: iOS
⭐️: 77
👍2
Избегайте ошибок SwiftUI с ViewModel

Когда я впервые перешёл с UIKit на SwiftUI, одной из самых неприятных ошибок, с которыми я столкнулся, была следующая:

Моя ViewModel постоянно неожиданно ресетилась.

Казалось, это происходит случайно, пока я не понял разницу между @StateObject и @ObservedObject.

Статья: https://apptractor.ru/info/articles/izbegayte-oshibok-swiftui-s-viewmodel.html
Платформа: iOS
👍2
React Native + RxDB: как сделать Local-First приложение, которое не сдохнет без связи

Представьте: вы создали приложение, которое работает ровно тогда, когда у пользователя есть интернет. Нет интернета? Поздравляю, у вас мёртвое приложение и куча недовольных пользователей. Ну или курьер, который стоит как дурак и не может выполнять свою работу, потому что приложение зависло. Бизнес стоит, а вы сидите и ждёте, что всё само решится (нет).

Если хотите перестать выглядеть полными профанами и дать юзерам что-то, что не падает при первом же обрыве связи — welcome to local-first apps. Здесь всё про то, чтобы сделать локальную базу, а синхронизация — это такая себе приятная бонусная функция, а не священный грааль.

Статья: https://habr.com/ru/articles/935798/
Платформа: кроссплатформа
Proxy-паттерн в Android

Как Android-разработчики, мы постоянно сталкиваемся со сложными в обработке объектами. Представьте себе загрузку огромного изображения высокого разрешения — это медленно и потребляет много памяти. Или как насчёт функции, которая должна быть доступна только премиум-пользователям? Вам нужен способ проверки прав доступа перед запуском кода.

В таких ситуациях вам нужно добавить уровень косвенности. Вам нужен заменитель, суррогат, который будет управлять реальным объектом за вас. Именно это и обеспечивает шаблон проектирования Proxy.

Статья: https://trricho.medium.com/the-proxy-pattern-in-kotlin-androids-smart-placeholder-b94b7d22b27f (как читать ©)
Платформа: Android
Лучший способ создания компонентов SwiftUI: @ViewConfigurable

SwiftUI делает настройку представлений лёгкой — пока вы не создадите собственные повторно используемые компоненты. Мы создали макрос для решения этой проблемы.

Статья: https://apptractor.ru/info/articles/viewconfigurable.html
Платформа: iOS
Scrcpy-GUI - графический интерфейс для Scrcpy

Scrcpy-GUI — это понятный графический пользовательский интерфейс, созданный на основе .NET MAUI, для взаимодействия со scrcpy. Scrcpy — это утилита командной строки, позволяющая транслировать и управлять Android-устройством на ПК.

С Scrcpy-GUI вы можете:

• Легко генерировать сложные аргументы командной строки scrcpy, не тратя время на изучение официальной документации.
• Получить полный контроль над виртуальными дисплеями, включая возможность запускать приложения.
• Сохранять и управлять сочетаниями клавиш для ваших любимых команд с возможностью локальной загрузки их на ПК.
• Подключаться устройства по беспроводной сети одним щелчком мыши — без лишних хлопот.
• Транслировать видео с нескольких устройств Android одновременно без лишних усилий.

Scrcpy-GUI на GitHub: https://github.com/GeorgeEnglezos/Scrcpy-GUI
Платформа: Android
⭐️: 156