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

На дворе 2025 год, а мне всё ещё задают один и тот же вопрос: «Где ваши ViewModel?» Каждый раз, когда я делюсь своим мнением или кодом своих открытых проектов, таких как клиент BlueSky IcySky или даже приложение Medium для iOS, разработчики удивляются, видя чистые, простые представления без единой ViewModel.

Позвольте мне прояснить: вам не нужны ViewModel в SwiftUI.

Никогда не были нужны.

И никогда не будут нужны.

Статья: https://apptractor.ru/info/articles/swiftui-v-2025-zabudte-mvvm.html
Платформа: iOS
👍4👎3🖕1
FileSystem - пакет Swift для взаимодействия с файловой системой

FileSystem - это пакет Swift, предоставляющий простой кроссплатформенный API для взаимодействия с файловой системой.

Зачем создавать новый пакет Swift для взаимодействия с файловой системой, если уже есть FileManager? Вот причины:

• Обеспечение понятных пользователю сообщений об ошибках, которые можно выводить на экран.
• Интеграция с swift-log для предоставления возможности журналирования операций с файловой системой.
• Использование структурированного параллелизма Swift с async/await.
• Предоставление API, в котором пути всегда абсолютны, упрощает анализ операций с файловой системой.

FileSystem лежит в основе Tuist — набора инструментов для ускорения разработки качественных приложений.

FileSystem на GitHub: https://github.com/tuist/FileSystem
Платформа: iOS
⭐️: 32
👍1
Как мы готовимся к новым версиям iOS

Меня зовут Антон Долганов, я старший iOS-разработчик в Контуре. Большую часть времени я работаю над инфраструктурными модулями, чтобы наши приложения были быстрыми, стабильными и легко развивались.

Следить за новинками платформы — также важная часть моей работы. Ведь чтобы инфраструктура не тормозила развитие продуктов, нужно заранее понимать, что изменится в iOS, какие риски появятся, и какие возможности можно будет использовать.

Статья: https://habr.com/ru/companies/skbkontur/articles/936570/
Платформа: iOS
👍1
Технический разбор Max: что внутри APK

Сейчас мессенджер Max «очень классно ловит даже на парковке» 🙃 Стало интересно: а что же за технологии стоят за этим чудом? Скачал APK (весит ~114 MB) и полез внутрь.

Статья: https://habr.com/ru/articles/938518/
Платформа: Android
🔥2👎1
Retrofit + корутины Kotlin: полное руководство для Android-разработчиков

Связка Retrofit и корутин Kotlin преобразила сетевое программирование в Android: теперь это не сложная и "ломкая" задача, а элегантное и поддерживаемое решение. Используя подходы и лучшие практики из этого руководства, вы сможете делать надёжные и масштабируемые сетевые слои, улучшающие и опыт разработки, и производительность приложения.

Статья: https://apptractor.ru/develop/retrofit-korutiny-kotlin-polnoe-rukovodstvo-dlya-android-razrabotchikov.html
Платформа: Android
2👎2
Smart Cleaner - клинер для Android

Smart Cleaner for Android помогает освободить место на устройстве и управлять им. Он удаляет ненужные файлы, кэш и другие нежелательные данные с устройства, восстанавливая необходимый объём памяти и производительность.

Smart Cleaner включает в себя множество функций для поддержания чистоты и бесперебойной работы телефона, таких как очистка буфера обмена, менеджер приложений, очистка файлов WhatsApp, оптимизация изображений и многое другое. С Cleaner вы можете легко поддерживать свой телефон в идеальном состоянии, не беспокоясь о сложных настройках или получении root-доступа. Приложение разработано таким образом, чтобы быть простым, удобным, быстрым и лёгким в использовании.

Smart Cleaner на GitHub: https://github.com/MihaiCristianCondrea/Smart-Cleaner-for-Android
Платформа: Android
⭐️: 154
👍1
Акторы в Swift: руководство для начинающих по безопасному параллелизму

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

Статья: https://apptractor.ru/info/articles/actors.html
Платформа: iOS

Еще про акторы:
Погружение в Акторы в Swift 5.5
Акторы в Swift — для чего они нужны?
📺 А так ли нужны акторы в Swift Concurrency?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Можно ли унаследовать один `actor` от другого?
Anonymous Quiz
7%
Да, но только если они final
68%
Нет, акторы не поддерживают наследование
15%
Да, но только через протокол
👍1
Митап RuStore про монетизацию и рекламу

Когда: 27 августа, 17:00 (мск)

О чем: обсудим, как заработать на приложениях - тренды, рекламные форматы 2025 года и возможности RuStore.

Эксперты — ведущие менеджеры продукта:
Артём Фролкин — про рекламу;
Иван Шарков — про in-app платежи и RuStore Pay SDK.

Участвуй: можно задать вопрос команде RuStore и получить быстрый ответ — прямо в эфире. Остальные вопросы разберут в чате.

Регистрируйся, если хочешь получать больше с приложений!
👎3👍2
TSAlertController - элегантная библиотека оповещений

TSAlertController - элегантная библиотека для отображения уведомлений, оповещений и прочих информационных окон. 

Она имитирует интерфейс UIAlertController и ссылается на другие API, чтобы минимизировать кривую обучения. Метод настройки аналогичен [UIButton.Configuration] и [UIBarAppearance], что позволяет разработчикам легко изменять внешний вид и поведение оповещений, используя знакомые API.

TSAlertController на GitHubhttps://github.com/rlarjsdn3/TSAlertController-iOS
Платформа: iOS
⭐️: 4
📺 Видео и подкасты за неделю @AppFiles

(iOS En) Multi-Item Drag & Drop API
(iOS En) Professional SwiftUI Card Component Library
(iOS En) SwiftUI Custom Calendar - Modern Date Picker Component
(iOS En) AI Refactoring Is Faster?!
(iOS En) Setting Up App Icons in Xcode 26 with Icon Composer
(iOS En) Mastering Icon Composer Create Stunning App Icons
(And En) Custom Design Systems In Jetpack Compose - THESE Are My Best Practices
(And En) APIs: How Hard Can They Be?
(And En) Fast inner dev loops for Kotlin Gradle builds
(And En) Nested type aliases in Kotlin 2.2
(And En) You didn't handle the Process Death, did you?
(And En) AI-Powered Android Development chat with Kevin Tang
(Crs Ru) Генерация UI Kit с использованием ИИ
(Crs En) Build Websites in Kotlin & Compose HTML with Kobweb
(Crs En) Multiplatform Settings: A case study in Multiplatform library development
(Crs En) Project Sparkles: How Compose for Desktop is changing Android Studio
(Dev Ru) Надежность мобильных приложений: что это и как достичь
(Dev Ru) Зачем нужен COBOL в 2025
(Mrk En) App Experts Reveal How to Improve Conversions

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

(And Ru) Фантастические баги: как их ловить и править
(Crs Ru) Почему вам стоит учить/использовать Kotlin Multiplatform
(Dev Ru) Задача на логику из собеседования в Amazon (+ все собеседования)
(Psy Ru) Как успевать больше, оставаясь эффективным, и не выгореть
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работает WorkManager в Android

Ты запускаешь процесс в приложении, но ждать результата тебе лень, поэтому ты уходишь в мессенджер, уверенный, что через пять минут процесс закончится сам собой. А он не заканчивается, потому что система убила процесс этого приложения, высвободив ресурсы на другую работу. Как бороться с Android’ом и не позволять ему уничтожать важные фоновые процессы, расскажет Сергей Смирнов, Android-разработчик CleverPumpkin, который так овладел инструментом WorkManager, что смог в фоновом режиме написать эту статью.

Статья: https://apptractor.ru/info/articles/kak-rabotaet-workmanager-v-android.html
Платформа: Android
1
Руководство по оптимизации Jetpack Compose — лучшие практики для ускорения приложений

Jetpack Compose упрощает разработку пользовательского интерфейса для Android, но написание производительного кода требует определённых навыков Если ваше приложение работает медленно или подтормаживает во время анимации, отображения списков или перекомпоновки, несколько оптимизаций могут существенно улучшить ситуацию.

В большом разрешении: https://medium.com/@jetpackcomposedev.channel/jetpack-compose-optimization-guide-best-practices-for-faster-apps-c707fade6081
Платформа: Android
Deepr - управление глубокими ссылками

Deepr — это нативное приложение для Android, разработанное для оптимизации управления и тестирования глубоких ссылок. Оно обеспечивает простой и эффективный способ хранения, организации и запуска диплинков, что делает его незаменимым инструментом для разработчиков и тестировщиков.

Приложение создано с использованием современных практик разработки Android и библиотек: Jetpack Compose, Jetpack Compose Navigation 3, Android ViewModel, SQLDelight, Koin, корутины.

Deepr на GitHub: https://github.com/yogeshpaliyal/Deepr
Платформа: Android
⭐️: 64
👍1
Как RecyclerView создает магию анимаций: архитектура ItemAnimator под капотом

RecyclerView умеет превращать обычные операции с данными в плавные анимации. Когда вы добавляете элемент в список, остальные элементы плавно расступаются. При удалении — схлопываются. Эта магия происходит благодаря ItemAnimator — механизму, который сегодня разберем до последнего винтика.

В этой статье мы погрузимся в архитектуру системы анимаций RecyclerView, проследим путь от вызова notifyItemInserted() до финальной анимации на экране.

Статья: https://habr.com/ru/articles/939594/
Платформа: Android
1
Я заменил все != nil в своем Swift-коде

Как и большинство разработчиков, я тысячи раз писал if someValue != nil на Swift, ни секунды не задумываясь. Это было быстро, привычно и ощущалось безопасным.

Но затем, во время плановой чистки кода, я решился на смелый поступок: удалил все вхождения != nil в iOS-проекте среднего размера и заменил их более выразительными конструкциями.

Статья: https://apptractor.ru/develop/coding/vse-nil.html
Платформа: iOS/Swift
👍1💊1
This media is not supported in your browser
VIEW IN TELEGRAM
Как я случайно стал неофициальным Apple Wallet-разработчиком PureGym

Владимир Дробинин поделился историей, как он, будучи опытным iOS-разработчиком, автоматизировал процесс входа в PureGym, создав неофициальный Apple Wallet-пас для быстрого доступа к залу.

Стандартный путь через приложение PureGym отнимал 47 секунд на каждое посещение — из-за долгой загрузки и навязчивых уведомлений. QR-код обновлялся каждую минуту, хотя PIN для турникета не менялся уже 8 лет — странная политика безопасности, которую разработчик назвал «театром безопасности». Вход через Apple Wallet (или Apple Watch) теперь занимает 3 секунды вместо 47, экономя примерно 3,8 часа в год. Самое интересное — этим решением начали интересоваться другие посетители зала. Автор подчёркивает важность создания удобных пользовательских решений, даже если официальные разработчики этого не делают.

Статья: https://drobinin.com/posts/how-i-accidentally-became-puregyms-unofficial-apple-wallet-developer/
Платформа: iOS
1
VoiceInk - приложение для транскрибации речи

VoiceInk — приложение для macOS, которое практически мгновенно преобразует вашу речь в текст. Цель автора — сделать его самым эффективным и конфиденциальным решением для голосового перевода текста для macOS, которым будет приятно пользоваться. Хотя исходный код уже доступен для использования и внесения своего вклада, приобретение лицензии поможет поддержать дальнейшую разработку и предоставит вам доступ к автоматическим обновлениям, приоритетной поддержке и будущим функциям.

VoiceInk на GitHub: https://github.com/Beingpax/VoiceInk
Платформа: macOS/iOS
⭐️: 1.6K
3
Cactus - кроссплатформенный фреймворк для локального развертывания LLM/VLM/TTS моделей

По мере того, как небольшие устройства становятся всё более мощными, на них теперь можно запускать большие языковые модели (LLM). Это критически важно для полной конфиденциальности и контроля, поскольку модели, использующие приватные данные, могут работать локально без подключения к внешним серверам. Cactus — это лёгкий, высокопроизводительный фреймворк с открытым исходным кодом, который делает именно это, позволяя запускать ИИ-модели на мобильных устройствах.

Основные фичи Cactus:

• Поддерживает Flutter, React Native и Kotlin Multiplatform
• GGUF модели: работает с любой моделью GGUF от Hugging Face, включая Qwen, Gemma, Llama и DeepSeek
• Мультимодальный ИИ: запуск различных моделей, включая LLM, VLM, Embedding модели и модели TTS (преобразование текста в речь)
• Оптимизированная производительность: эффективное выполнение моделей от FP32 до 2-битных квантованных версий
• Работа с агентами: используйте агенты Cactus для интеграции пользовательских инструментов для сложных, расширенных рабочих процессов
• Нативная поддержка: включает iOS xcframework и JNILibs для нативной работы
• Компактная сборка C++: идеально подходит для развертывания на кастомном оборудовании

Cactus также ориентирован на «local first». Последствия отсутствия владения данными широко известны, и локальный подход направлен на решение этой проблемы путем создания адаптивных и удобных для пользователей приложений, которые при этом позволяют им работать в автономном режиме. Cactus особенно эффективен в сценариях, где не гарантируется постоянное подключение к данным или когда предпочтителен полностью автономный режим работы. Однако при необходимости он может использовать облачный вывод для длительных или асинхронных задач.

Cactus на GitHub: https://github.com/cactus-compute/cactus
Платформа: искусственный интеллект
⭐️: 2.9K
👍1
AppFiles - Mobile Development
Как RecyclerView создает магию анимаций: архитектура ItemAnimator под капотом RecyclerView умеет превращать обычные операции с данными в плавные анимации. Когда вы добавляете элемент в список, остальные элементы плавно расступаются. При удалении — схлопываются.…
Архитектурная эволюция и приложение для Android

В статье рассказывается, почему архитектура приложения — это не разовая работа, а непрерывный процесс адаптации под новые условия. Автор делает акцент на частых изменениях бизнес-модели, роста количества пользователей и усложнении инфраструктуры, что вынуждает пересматривать ключевые решения и подходы в разработке.

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

Статья: https://herrbert74.github.io/posts/architectural-evolution-of-an-app/
Платформа: Android
1