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

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

Статья: https://habr.com/ru/companies/dododev/articles/855560/
Платформа: iOS
🔥1
Рефлексия замедляет работу вашего кода?

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

Статья: https://kt.academy/article/benchmark-reflection
Платформа
: Kotlin/Android
ИИ зрение на Android: CameraX ImageAnalysis + MediaPipe + Compose

На прошлой неделе мы рассмотрели основы библиотеки CameraX. Это заложило основу для чего-то действительно интересного... ИИ-зрения! Теперь мы можем использовать ваше Android-устройство для интерпретации и понимания окружающего нас физического мира.

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

Статья: https://proandroiddev.com/ai-vision-on-android-camerax-imageanalysis-mediapipe-compose-db6afb738248
Платформа: Android
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
App Sizer - это инструмент от Grab, предназначенный для анализа загружаемого размера приложения для Android. Предоставляя подробную информацию о составе бинарного файла приложения, App Sizer помогает разработчикам выявить области для уменьшения размера, что в конечном итоге повышает показатели привлечения и удержания пользователей.

App Sizer предлагает всесторонний анализ, включая:

• Общий размер загрузки приложений
• Детальная информация по размеру
• Размер по командам
• Размер по модулям
• Размер библиотек
• Список больших файлов

Есть плагин для Gradle и CLI утилита. Подробнее в статье.

App Sizer на GitHub: https://github.com/grab/App-Sizer
Платформа: Android
⭐️: 145
👍1
Orbit MVI с сахаром: вкусный фреймворк для однородной архитектуры

Пойдем, расскажу тебе про фреймворк OrbitMVI. Узнала я о нем от своего лида: он делегировал мне задачу заменить наш самодельный Redux на Orbit, чтобы в нашем приложении архитектура стала удобнее и однороднее.

Статья: https://habr.com/ru/companies/ru_mts/articles/868328/
Платформа: Android
SwiftUI: всё, что вам нужно знать о модификаторе containerRelativeFrame (и немного больше)

На WWDC 2023 компания Apple представила модификатор представления containerRelativeFrame для SwiftUI. Этот модификатор упрощает некоторые операции размещения элементов на экране, которые ранее было сложно выполнить обычными методами. В этой статье мы подробно рассмотрим модификатор containerRelativeFrame, его определение, правила компоновки, примеры использования и важные соображения. Чтобы еще больше расширить наше понимание его функциональных возможностей, в конце статьи мы также создадим обратно совместимую реплику для старых версий SwiftUI.

Статья: https://habr.com/ru/companies/otus/articles/869346/
Платформа: iOS
Как мы работаем с производительностью Threads для iOS

Когда в 2023 году **** запустила Threads, оно стало самым быстрорастущим приложением в истории, набрав 100 миллионов пользователей всего за пять дней. Сейчас число ежемесячных международных пользователей приложения превысило 300 миллионов, а команда разработчиков расширилась от небольшой группы инженеров-отщепенцев до организации с более чем сотней соавторов.

Если оглянуться на то, каким было приложение Threads для iOS год назад, то многое изменилось: мы вышли в Европу, интегрировались с Fediverse, запустили публичный API, разработали множество новых способов для людей поделиться тем, что происходит в их мире, и внедрили новые методы для поиска и чтения лучшего контента. Мы даже отпраздновали наш первый день рождения с праздничными шляпами и иконками приложения!

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

Статья: https://apptractor.ru/info/articles/kak-my-rabotaem-s-proizvoditelnostyu-threads-dlya-ios.html
Платформа: iOS
AnimeTV - это приложение для Android TV для просмотра любимых аниме-сериалов и фильмов на вашем телевизоре. Приложение также работает на Android устройствах без телевизора (телефоны и планшеты) с некоторыми ограничениями пользовательского интерфейса. В качестве источников используются сторонние сайты, так что все может прекратить работать в один прекрасный момент.

AnimeTV на GitHub: https://github.com/amarullz/AnimeTV
Платформа: Android
⭐️: 767
👍1
Core - простая и легкая однонаправленная архитектура на Swift, которая не зависит от других фреймворков, это фреймворк для создания реактивных приложений, вдохновленный ReactorKit, Redux. Core является независимым, что означает, что вы можете импортировать все, что захотите, например Combine, RxSwift. Это очень легкая, простая и безумно быстрая архитектура по сравнению с аналогичными решениями.

Хотя CoreEngine предоставляет традиционные реактивные подходы и паттерны управления состояниями, автор настоятельно рекомендует использовать AsyncCore для современной, асинхронной и более эффективной работы с состояниями. AsyncCore использует структурированный параллелизм Swift с помощью async/await, обеспечивая чистый и интуитивно понятный способ управления обновлениями состояния, обработки побочных эффектов и обеспечения безопасности потоков с помощью модели Actor в Swift.

Core на GitHub: https://github.com/sobabear/CoreEngine
Платформа: iOS
⭐️: 50
Почему нулевой технический долг - это миф (и, возможно, красный флаг)

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

Статья: https://apptractor.ru/info/articles/pochemu-nulevoy-tehnicheskiy-dolg-eto-mif-i-vozmozhno-krasnyy-flag.html
Платформа: разработка
Простая оптимизация LazyColumn в одну строчку кода

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

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

Статья: https://apptractor.ru/info/articles/prostaya-optimizatsiya-lazycolumn-v-odnu-strochku-koda.html
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Sequence Showcase - создание последовательностей с подсветкой разных элементов на экране в определенном порядке. Полезно для онбординга или релиза новых фич.

Sequence Showcase на GitHub: https://github.com/jocoand/compose-showcase
Платформа: Android
⭐️: 13
Оптимизация под контролем: инструменты и метрики для Аndroid-приложений

Для пользователей важно, чтобы приложение открывалось быстро и работало отзывчиво. Чем быстрее оно загружается, плавнее работает, тем больше вероятность, что человек вернётся и продолжит им пользоваться. С другой стороны, постоянное добавление новой функциональности может негативно повлиять на скорость старта и отзывчивость приложения, что, вероятно, сподвигнет пользователя поискать более быстрый аналог.

Статья: https://habr.com/ru/companies/vk/articles/869904/
Платформа: Android
👍1
Giffy - клиентское приложение для Giphy, созданное с использованием таких интересных технологий для iOS, как TCA (The Composable Architecture by Point-Free), Swinject, SwiftUI, Чистая архитектура с подходом Generic Protocol, модуляризация SPM и XcodeGen.

Giffy на GitHub: https://github.com/uwaisalqadri/Giffy
Платформа: iOS
⭐️: 25
Что такое Lazy Variables в Swift

Lazy Variables в Swift — это свойства, значение которых не инициализируется до тех пор, пока они не будут использованы. Это полезно в тех случаях, когда вычисление значения свойства является затратным по времени или ресурсам, и вы хотите избежать его выполнения до тех пор, пока это не потребуется.

Статья: https://apptractor.ru/info/articles/lazy-variables.html
Платформа: iOS
👍1
mpvKt - медиаплеер для Android, основанный на mpv-android и стремящийся предоставить более приятный пользовательский интерфейс по сравнению с оригиналом. Предоставляет лучший UI, лучшее управление историей проигрывания, более простую кастомизацию, установки таймера сна, пресеты скорости воспроизведения, лучшую работу картинки-в-картинке.

mpvKt на GitHub: https://github.com/abdallahmehiz/mpvKt
Платформа: Android
⭐️: 712
👍1
Чистим Android-проект просто и правильно

При разработке Android-приложений дисковое пространство может быстро загрязняться результатами сборки, кэшами Gradle и конфигурационными файлами IDE.

По умолчанию команда Android Studio «Build → Clean Project» удаляет не все. Могут накапливаться кэши, артефакты из модулей, остатки файлов Gradle и результаты сборки.

В этой статье представлен один скрипт, который комплексно решает все эти проблемы, с фантастическим выводом консоли, показывающим использование пространства до и после. Рассматривается macOS/Linux (с помощью Bash) и Windows (с помощью Batch), а также проясняется, как Lite-чистка скрипта сравнивается с Build → Clean Project с точки зрения освобождаемого дискового пространства и объема проекта.

Статья: https://apptractor.ru/info/articles/chistim-android-proekt-prosto-i-pravilno.html
Платформа: Android
2
CodeEditTextView - текстовый редактор (замена NSTextView) для отображения и редактирования кода. Особенности: базовое редактирование текста, чрезвычайно быстрая начальная верстка, поддержка работы с большими документами, возможности настройки кодовых документов.

CodeEditTextView на GitHub: https://github.com/CodeEditApp/CodeEditTextView
Платформа: iOS
⭐️: 78
Управление событиями в ViewModel с помощью StateFlow, SharedFlow и Channel

Сообщество Android-разработчиков уже долгое время ведёт жаркие споры о том, что лучше использовать в ViewModel для представления событий: StateFlow, SharedFlow или Channel. В этой статье мы разберёмся в различиях между этими тремя подходами и определим, какой из них наиболее подходит для ваших нужд.

Статья: https://habr.com/ru/articles/872248/
Платформа: Android