AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.12K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
AniVu - универсальное приложение для подкастов на Android, позволяющее просматривать RSS и воспроизводить медиафайлы. Внутри MVI, Jetpack Compose, корутины и Flow, Material You, ViewModel, Room, Paging 3, Hilt и пр.

AniVu на GitHub: https://github.com/SkyD666/AniVu
Платформа: Android
⭐️: 855
Создание Custom Layout в Jetpack Compose

Сегодня я расскажу о том, как создавать Custom Layout в Jetpack Compose, а также мы решим одну связанную с данной темой практическую задачку. Создание Custom Layout может показаться чем-то сложным на первый взгляд, но я постараюсь все объяснить максимально понятно и подробно. Итак, приступим!

Статья: https://habr.com/ru/articles/867822/
Платформа: Android
Как в Duolingo ускорили сборки для Android и iOS на 50%

Представьте себе, что вы ждете каждой проверки кода до и после слияния более 50 минут. Звучит мучительно, верно? А теперь представьте, что вы проходите через эту каторгу 200 с лишним раз в неделю. Такова была наша реальность, пока мы, команда Test and Release Infrastructure (TRI), не решили, что хватит.

Переходим к сегодняшнему дню. Эти 50-минутные ожидания исчезли. Время сборки Android и iOS теперь составляет менее 20 минут. Вот подробная информация о том, как мы добились этого волшебства — да, это потребовало веселых экспериментов и немного пота (но, к счастью, без слез).

Статья: https://apptractor.ru/info/articles/kak-my-uskorili-sborki-dlya-android-i-ios-na-50.html
Платформа: разработка
Назад в будущее: превью Compose для представлений на основе XML

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

Так что если некоторые части вашего приложения все еще полагаются на представления на основе XML, вы можете упустить всю мощь предварительных просмотров Compose... или нет?

Ведь Compose Preview действительно можно использовать с XML-представлениями!

Статья: https://apptractor.ru/info/articles/nazad-v-buduschee-prevyu-compose-dlya-predstavleniy-na-osnove-xml.html
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
The SwiftUI Christmas Tree - новогодняя елка с анимацией на чистом SwiftUI. 31 декабря обещают добавить фейерверков.

The SwiftUI Christmas Tree на GitHub: https://github.com/GetStream/SwiftUIChristmasTree
Платформа: iOS
⭐️: 50
Управление Xcode симулятором из симулятора

А зачем нам это вообще может понадобиться, управлять симулятором из симулятора ? Я придумал теоретический список, где нам это может пригодиться:

1. Управление симулятором во время тестов
2. Симулировать app линк во время UI теста
3. Послать пуш во время UI теста
4. Интеграция с другими приложениями

Статья: https://habr.com/ru/articles/868846/
Платформа: iOS
Секретная акция, или Как выйти за пределы 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