AppFiles - Mobile Development
رفتن به کانال در Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
نمایش بیشتر2 168
مشترکین
+224 ساعت
اطلاعاتی وجود ندارد7 روز
+830 روز
آرشیو پست ها
Простые синтаксические приёмы в Swift
В этой статье - несколько практических приёмов и особенностей Swift, которые помогают писать код проще, короче и понятнее. Здесь не будет абстрактной теории — только реальные примеры, которые можно сразу применять в проектах: от сопоставления с шаблоном и работы с optional до безопасной обработки строк и чисел. Если вы хотите, чтобы ваш Swift-код выглядел аккуратно и «по-свифтовски», эти советы точно пригодятся.
Статья: https://apptractor.ru/info/articles/prostye-sintaksicheskie-priyomy-v-swift.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
React Native. Часть 1: архитектура, производительность и варианты использования
React Native прошел путь от решения с фундаментальными архитектурными ограничениями до платформы с современным, производительным ядром. В этой статье мы разберем, как работала старая архитектура на основе Bridge, как ее заменили JSI, Fabric и Hermes, и в каких случаях React Native - оптимальный выбор для проекта.
Статья: https://habr.com/ru/articles/989776/
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Безопасный обмен данными между приложениями на Android: intents, URI schemes, shared preferences
Системы злоумышленников постоянно эволюционируют, появляются новые атаки и новые защиты. То, что работало в Android 8, может быть небезопасно в Android 14. Поэтому безопасность в Android - это не разовая настройка, а процесс.
Мой главный совет: читайте Android Security Bulletins, следите за CVE, связанными с вашими зависимостями, и регулярно проводите аудит своего кода.
И последнее: если сомневаетесь, стоит ли передавать какие-то данные между приложениями - не передавайте. Лучше лишний раз сходить на сервер, чем потом разгребать последствия утечки данных. Серьёзно, оно того не стоит.
Статья: https://habr.com/ru/articles/989740/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
App Store Toolkit - инструменты локализации iOS-приложений
App Store Toolkit - набор из нескольких инструментов для локализации iOS-приложений. Есть локализация .xcstrings, настройка стоимости подписки для разных стран, перевод мета-данных и генератор скриншотов для App Store Connect. Все это с помощью ИИ и локальных сервисов.
App Store Toolkit на GitHub: https://github.com/fayharinn/iOS-App-Distribution-Localizer
Платформа: iOS/Web
⭐️: 24
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Cash Sense - Android-приложение для управления финансами
Cash Sense - мобильное приложение, разработанное для того, чтобы помочь пользователям эффективно управлять своими финансами. Независимо от того, хотите ли вы создавать кошельки в разных валютах, устанавливать категории для транзакций или отслеживать даты оплаты подписок, Cash Sense вам поможет.
Cash Sense на GitHub: https://github.com/nikbulavin/cashsense
Платформа: Android
⭐️: 175
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Бессерверный ИИ для Android-приложений с Firebase AI Logic
Цель этой статьи — показать, почему бессерверный ИИ на Android наконец-то стал практичным, и как Firebase AI Logic делает его удивительно простым.
Статья: https://apptractor.ru/info/articles/firebase-ai-logic.html
Платформа: Android/ИИ
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Отлаживайте Swift как Senior
В этой статье мы обсудим методы отладки, которые используют Senior iOS-разработчики.
1. Выявление логических ошибок на этапе разработки
2. Обогащение отладочных логов контекстной информацией
3. Настройка вывода с помощью CustomDebugStringConvertible
4. Анализ свойств и значений экземпляров во время выполнения
5. Функция dump() для углубленной отладки
Статья: https://apptractor.ru/info/articles/otlazhivayte-swift-kak-senior.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Встроенный Photo Picker: более удобный способ конфиденциального запроса фотографий и видео в вашем приложении
Embedded Photo Picker — новый компонент Android, который позволяет встраивать выбор фото и видео прямо в интерфейс приложения, не открывая отдельный системный экран. Пользователь видит медиатеку (включая облачные фото, например из Google Photos) внутри приложения, а само приложение получает доступ только к тем файлам, которые были явно выбраны, без запроса широких разрешений. Это заметно улучшает UX и повышает уровень приватности.
Компонент уже используется, например, в Google Messages, и доступен через Jetpack Photo Picker — как для Jetpack Compose, так и для классических View. Embedded Photo Picker работает на Android 14+ (SDK Extensions 15+), рендерится системой в изолированной области и безопасен от перехвата. В итоге разработчики получают более нативный, бесшовный и безопасный способ работы с пользовательскими фото и видео.
Статья: https://apptractor.ru/Embedded-Photo-Picker
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Встроенный Photo Picker: более удобный способ конфиденциального запроса фотографий и видео в вашем приложении
Embedded Photo Picker — новый компонент Android, который позволяет встраивать выбор фото и видео прямо в интерфейс приложения, не открывая отдельный системный экран. Пользователь видит медиатеку (включая облачные фото, например из Google Photos) внутри приложения, а само приложение получает доступ только к тем файлам, которые были явно выбраны, без запроса широких разрешений. Это заметно улучшает UX и повышает уровень приватности.
Компонент уже используется, например, в Google Messages, и доступен через Jetpack Photo Picker — как для Jetpack Compose, так и для классических View. Embedded Photo Picker работает на Android 14+ (SDK Extensions 15+), рендерится системой в изолированной области и безопасен от перехвата. В итоге разработчики получают более нативный, бесшовный и безопасный способ работы с пользовательскими фото и видео.
Статья: https://apptractor.ru/Embedded-Photo-Picker
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
VICE - KMP MVI фреймворк
VICE это MVI (Model-View-Intent) фреймворк, который использует UDF (Unidirectional Data Flow) для работы UI.
Преимущества VICE:
1. Он соответствует принципам единой ответственности и однонаправленного потока данных, оставаясь при этом простым.
2. Он предоставляет естественный, императивный способ работы с асинхронными данными.
3. Он предоставляет неизменяемый способ описания состояния пользовательского интерфейса, исключающий возможность изменения через бэкдор.
4. Он избавляет от необходимости гадать, как структурировать код пользовательского интерфейса.
VICE на GitHub: https://github.com/eygraber/vice
Платформа: Android
⭐️: 140
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Swipe-to-Dismiss в Compose Material 3
Компонент «Закрытие с помощью свайпа» позволяет пользователям закрывать или обновлять элемент, проводя пальцем влево или вправо. Compose Material 3 предлагает простой в использовании компонент, который делает все за нас.
Статья: https://apptractor.ru/info/articles/swipe-to-dismiss-v-compose-material-3.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Как сделать эффект люминесцентной лампы в Jetpack Compose
Туториал о том, как реализовать эффект светящейся трубки на Android с помощью Jetpack Compose — без сторонних библиотек, только Canvas и анимации Kotlin.
Статья: https://proandroiddev.com/how-to-create-a-tubelight-effect-in-android-compose-2383befc47b1
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Когда данных от Apple недостаточно: собираем метрики производительности UI
Оптимизировать работу UI важно - это напрямую влияет на пользовательский опыт и удержание. Собственные метрики позволяют получить больше информации - метрики позволяют не только находить проблемы, но и подтверждать улучшения после оптимизаций. В этой статье Виталий Барабанов из HH пишет про их решение для сбора метрик производительности UI.
Статья: https://habr.com/ru/companies/hh/articles/988322/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Навыки, которые вы теряете, пока ИИ берет на себя рутинные задачи
Концертный пианист не забывает, как играть. Он забывает, как играть хорошо. И он не замечает этого, пока это не становится важным.
Вы не потеряете работу из-за ИИ.
Но вы можете потерять то, что делало вас мастером своего дела — причем так постепенно, что и не заметите. Пока не поймаете себя на том, что в недоумении смотрите на баг, который раньше щелкали как орешки, на архитектуру, которую не можете объяснить, или на систему, которую больше не понимаете.
Вопрос не в том, использовать ли ИИ. Вы будете его использовать.
Вопрос в том, останетесь ли вы через пять лет инженером, способным работать без него, или же тем, кто не будет знать, с чего начать.
Статья: https://apptractor.ru/info/articles/navyki-kotorye-vy-teryaete-poka-ii-beret-na-sebya-rutinnye-zadachi.html
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Typhoon — легковесная библиотека для повторных попыток выполнения задач
Typhoon — это современный, легковесный фреймворк на Swift, предоставляющий элегантные и надежные политики повторных попыток для асинхронных операций. Созданный на основе модели параллельного выполнения async/await от Swift, он помогает корректно обрабатывать временные сбои с помощью настраиваемых стратегий повторных попыток.
Фичи:
• Несколько стратегий повторных попыток — постоянная, экспоненциальная и экспоненциальная со сдвигом
• Async/Await-совместимый — создан для современной параллельной работы в Swift
• Типобезопасность — использует систему типов Swift для обеспечения безопасности на этапе компиляции
• Настраиваемость — гибкие параметры повторных попыток для любого варианта использования
• Кроссплатформенность — работает на iOS, macOS, tvOS, watchOS и visionOS
• Легковесность — минимальный размер без зависимостей
• Тщательно протестировано — всестороннее тестовое покрытие
Typhoon на GitHub: https://github.com/space-code/typhoon
Платформа: iOS
⭐️: 45
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Deeplink-и во Flutter: динамические ссылки и app_links
Мобильные приложения, в том числе на Flutter, позволяют настраивать обработку различных ссылок. В этой статье я разберу, как во Flutter реализовать поддержку deeplink-ов и универсальных ссылок и как управлять ими на уровне платформы.
Статья: https://habr.com/ru/companies/friflex/articles/988262/
Платформа: кроссплатформа
Погружение в UX-долг
В этом еженедельном дайджесте разработка приложений с помощью ИИ и состояние мобильного рынка, MVVM и плагины для Android Studio, миграция на Android Gradle Plugin 9.0, сокращение потребления памяти, бесплатный Skip, FunctionGemma от Google и многое другое. Заходите!
Yet Another Rapid Compose - интеллектуальный генератор сокращений
Yet Another Rapid Compose — это интеллектуальный генератор сокращения, плагин для Android Studio, который мгновенно преобразует лаконичные аббревиации в полноценные деревья компонентов Jetpack Compose. Перестаньте писать шаблонный код — сосредоточьтесь на структуре пользовательского интерфейса.
Фичи:
• Мгновенное развертывание: вводите короткие коды, такие как col или row, и развертывайте их в допустимые блоки Compose
• Вложенные макеты: используйте / для определения иерархии в одной строке (например, box/txt).
Yet Another Rapid Compose на GitHub: https://github.com/andrew-malitchuk/yet-another-rapid-compose
Платформа: Android
⭐️: 6
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Copy-on-write позволит вам узнать ВСЕ о внутреннем устройстве Swift
Статья подробно разбирает механизм Copy-on-Write (CoW) в Swift, который является ключевой оптимизацией для работы с типами значений, такими как массивы и словари. Автор объясняет, что CoW позволяет избежать ресурсозатратного копирования данных при каждой передаче переменной или константы. Вместо создания немедленного дубликата в памяти, несколько переменных используют одну и ту же область данных в «куче» до тех пор, пока одна из них не попытается внести изменения. Только в момент модификации происходит реальное копирование, что позволяет Swift сочетать безопасность значимых типов с производительностью ссылочных.
Помимо теоретических основ, в материале рассматриваются внутренние аспекты реализации этого механизма и работа с памятью (стек против кучи). Автор демонстрирует, как разработчики могут самостоятельно внедрить CoW для собственных структур данных, используя приватный класс-обертку и системную функцию
isKnownUniquelyReferenced. Этот подход позволяет вручную контролировать количество ссылок на объект и выполнять копирование только тогда, когда на данные ссылается более одного владельца. Таким образом, изучение CoW дает глубокое понимание того, как Swift оптимизирует управление памятью «под капотом».
Статья: https://levelup.gitconnected.com/copy-on-write-teaches-you-everything-about-swift-internals-f8807b58bfd6
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительностьПочему ваш LazyColumn пропускает кадры
Статья объясняет, что проблемы с падением частоты кадров при использовании
LazyColumn (и LazyRow) в Jetpack Compose часто происходят не из-за очевидных ошибок, а из-за тонких архитектурных ловушек, которые на первый взгляд выглядят безобидно. Автор показывает, что простое следование общим рекомендациям не всегда помогает: даже при правильном количестве перерисовок интерфейс всё ещё может подтормаживать на устройствах со средней производительностью. Ключ к решению заключается в том, чтобы понимать, что именно считается работой для Compose-движка, как малые оптимизации могут накопительно создавать большую нагрузку, и какие практики действительно снижают стоимость обновлений UI.
В основе предлагаемых исправлений — четыре фундаментальные проблемы: неправильные ключи в LazyColumn, нестабильные классы данных, которые приводят к лишней рекомпозиции, частые аллокации лямбд внутри списков и тяжёлые вычисления прямо в теле композаблов. Статья детально показывает, как сочетание этих факторов увеличивает объём работы, выполняемой при каждом кадре, и как их устранение (например, композитные ключи, аннотированные как @Immutable модели, ремемберинг лямбд и перенос предварительных вычислений в ViewModel) может существенно улучшить плавность прокрутки.
Статья: https://blog.devgenius.io/why-your-lazycolumn-drops-frames-part-1-quick-fixes-e6ccc53046bc
Платформа: Android
👍 если хотите перевод на русский
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
