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

Next Player на GitHub: https://github.com/anilbeesetti/nextplayer
Платформа: Android
⭐️: 1.3K
Самый первый Android-смартфон в мире: каким был HTC Dream? Пишем приложения для Android 1.0 в 2024

А знаете ли вы, какой Android-смартфон был первым в мире и как он выглядел? А я теперь не просто знаю, но и могу физически пощупать настоящую легенду своих лет — HTC Dream, также известный как T-Mobile G1. Однако G1 был мне интересен не только как коллекционный девайс для гика, но и потенциально-диковинное устройство для разработки приложений: ведь в современном мире принято повышать минимальную версию Android для работы тех или иных программ, а я свои буду… понижать, чтобы они смогли заработать даже на самой первой версии Android! В сегодняшней статье мы с вами: посмотрим на Dream и постараемся понять, почему HTC выбрала именно Android, неудачно перепакуем аккумулятор, бэкпортируем мои клиенты ВК, YouTube и Telegram и посмотрим, правда ли старичок «бесполезен», как говорят в ретро-обзорах или что-то ещё да может!

Статья: https://habr.com/ru/companies/timeweb/articles/829416/
Платформа: Android
👍1
Пишем свой Swift макрос без лида, ИТ-курсов и кредитов

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

Сегодня я хотел бы рассказать вам о макросах в Swift 5.9, как их можно применять для избавление от бойлерплейта в коде, как их создавать, какие сложности есть с ними и куда всё это движется. Так как я работаю в команде дизайн-системы, мы рассмотрим макросы на примере добавления метода copy для всех моделей UI-компонентов.

Статья: https://habr.com/ru/companies/alfa/articles/828888/
Платформа: iOS
Удобная навигация в SwiftUI для iOS 16 и выше

Не будем мусолить всем известную проблему с навигацией в SwiftUI до 16 iOS, так как уже много крутых статей на эту тему есть в открытом доступе. Близится релиз 18 iOS, а это значит, что минимальные таргеты поднимутся на единичку ближе к 16. В данной статье хочу представить на мой взгляд наиболее удобную реализацию навигации на NavigationStack. Разумеется в концепции старого доброго MVVM, поэтому фанаты UDF извините.

Статья: https://habr.com/ru/articles/830392/
Платформа: iOS
Разбираемся с MavenGate. Настолько ли он страшен на самом деле

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

По версии компании OverSecured этой атаке может быть подвержено 18% всех зависимостей в публичных репозиториях, таких, как MavenCentral, jCenter и jitpack. Это довольно много, особенно, если учесть, что open-source проекты, в основном, используют либо зависимости из публичных репозиториев, либо такие же open-source библиотеки из jitpack.

И здесь мне стало интересно, насколько open-source проекты мобильных приложений Android реально подвержены этой атаке, и сколько библиотек уже «инфицировано» в составе этих самых проектов.

Статья: https://habr.com/ru/companies/infotecs_official/articles/830600/
Платформа: Android/безопасность
👍1
MVI в Eventbrite

Приложение Eventbrite для Android основано на архитектуре MVI. В этой статье я расскажу, что такое архитектура MVI, чем она отличается от MVVM, в чем ее преимущества и как мы можем реализовать ее в нашем приложении. Я также приведу пример, в котором мы формируем мероприятие в приложении для посетителей Eventbrite.

Статья: https://apptractor.ru/info/news/mvi-v-eventbrite.html
Платформа: Android
👍1
Swift Testing Revolutionary конвертирует тестовые кейсы, написанные в XCTest, в Swift Testing. Этот инструмент можно использовать как плагин для Xcode или, например, как инструмент командной строки.

По умолчанию все тестовые файлы будут перезаписаны, если вы не передали флаг --dry-run. Не забудьте сделать резервную копию тестовых файлов перед запуском этого инструмента.

Swift Testing Revolutionary на GitHub: https://github.com/giginet/swift-testing-revolutionary
Платформа: iOS
⭐️: 1.5K
This media is not supported in your browser
VIEW IN TELEGRAM
Как уменьшить расход памяти при загрузке UIImage с диска

Загрузка изображений с диска в массив внутренней памяти может увеличить потребление памяти. Переписав код с использованием API несистемного кэширования, мы значительно улучшили использование памяти. Если ваше приложение требует обработки изображений, решение на основе NSCache будет полезным.

Статья: https://apptractor.ru/info/articles/kak-umenshit-rashod-pamyati-pri-zagruzke-uiimage-s-diska.html
Платформа: iOS
Разбираемся с новой уязвимостью Android-библиотеки Jetpack Navigation: как открыть любой фрагмент из вашего приложения?

Недавно специалисты из компании Positive Technologies нашли серьезную проблему безопасности в популярной библиотеке для навигации в приложениях Android – Jetpack Navigation. Эта уязвимость позволяет открывать любые фрагменты внутри приложения.

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

Статья: https://habr.com/ru/companies/swordfish_security/articles/830338/
Платформа: Android/безопасность
Paperize - это приложение для автоматической смены обоев. Внутри Kotlin, Jetpack Compose, Material 3, Dagger Hilt, Room, анимации Lottie Compose, Landscapist и еще несколько библиотек.

Paperize на GitHub: https://github.com/Anthonyy232/Paperize
Платформа: Android
⭐️: 129
Health Lens - это приложение для HealthKit, которое позволяет пользователям экспортировать и анализировать данные о своем здоровье. Цель HealthLens - стать недостающей кнопкой «экспорта» данных о здоровье для одержимых данными пользователей, которым нужна персонализированная аналитика.

Health Lens на GitHub: https://github.com/wkaisertexas/HealthLens
Платформа: iOS
⭐️: 1
Видео и подкасты за неделю @AppFiles

(iOS Ru) Разбор SwiftUI проекта стартапа с AI на борту
(iOS Ru) Вам не нужно хранилище в приложении
(iOS En) SwiftUI Coverflow Carousel
(iOS En) My Story & iOS Dev Career Advice
(iOS En) Building iOS 18 Photos App UI
(iOS En) Zoom Transitions SwiftUI
(iOS En) Custom Operators in Swift
(And Ru) Роман Елизаров про Kotlin, корутины и работу в Jetbrains
(And En) Advanced layout animations in Compose (Shared elements)
(And En) Refactoring to Expressive Kotlin
(And En) From Zero to Billions: Building a High-Performance Kotlin App in Two Months
(And En) Managing Complexity With Ktor
(Crs Ru) Flutter Dev Podcast: навигация во Flutter
(Crs Ru) Особенности сервиса Яндекс Про и будущее Flutter
(Crs En) Permission Handling in Compose Multiplatform
(Crs En) Create a Splash Screen in Compose Multiplatform for iOS & Android
(Crs En) Uniting Native SDKs into Kotlin Multiplatform
(Crs En) Compose Multiplatform on Mobile at Instabee for Over a Year
(Dev Ru) Личный бренд разработчика
(Dev Ru) Ход королевы: как российское шахматное приложение покорило мир
(Dev En) Building an Effective Data Product Strategy
(Dev En) System Design Concepts Course and Interview Prep

Что вы посмотрели за неделю?
#ios #android #mobile #video
Fantasy Premier League - проект на Kotlin Multiplatform с клиентами Jetpack Compose, Compose for Desktop и SwiftUI (с использованием Ktor для удаленных API-запросов и Room для персистентности). В настоящее время работает на Android, iOS и десктопах.

+ у автора есть еще десяток проектов на KMP, ссылки в репозитории

Fantasy Premier League на GitHub: https://github.com/joreilly/FantasyPremierLeague
Платформа: Android/кроссплатформа
⭐️: 451
1
Подсветка элементов онбординга в SwiftUI iOS15+

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

Статья: https://habr.com/ru/companies/ozontech/articles/830802/
Платформа: iOS
PinLockSreen на основе KeyStore. Kotlin. Jetpack Compose

В данной любительской статье разберемся, что такое KeyStore в контексте мобильной разработки, для чего нужен и применим его в крайне легком варианте. Также погрузимся в разработку экрана входа в ваше приложение. Статья будет разделена на 3 так называемых раздела - KeyStore, UI и ViewModel.

Статья: https://habr.com/ru/articles/831914/
Платформа: Android
Водитель приедет через 3 минуты: реализация Uber Live Activity на iOS

Создание Live Activity для приложения Rider на iOS было напряженным, но полезным путешествием. От неожиданного анонса на WWDC до сложностей разработки и внедрения новой технологии в сжатые сроки, этот опыт продемонстрировал стойкость, адаптивность и креативность нашей команды. Мы преодолели технические препятствия, пересмотрели подход к UX и в итоге создали функцию, которая, по нашему мнению, улучшила впечатления водителей и пассажиров. Я надеюсь, что частички изобретательности, которые мы продемонстрировали в этой статье, могут вдохновить любого разработчика, работающего над Live Activities, и помочь ему преодолеть аналогичные сценарии и в целом использовать прагматичный подход к опыту, который живет за пределами основного приложения.

Статья: https://apptractor.ru/info/articles/uber-live-activity.html
Платформа: iOS
Giphy Trending - пример приложения для Android с популярными анимированными гифками Giphy для обмена или загрузки. Сделано на основе Kotlin, MVVM, Jetpack Compose (Single Activity), корутин и Flow, Dagger Hilt, Material 3, Gradle Kotlin DSL и Version Catalog, Baseline Profile.

Giphy Trending на GitHub: https://github.com/ryanw-mobile/giphy-trending
Платформа: Android
⭐️: 14
Упадок мобильной разработки

Эти мобильные штучки уже не так интересны. Вы понимаете, что тратите все свое время на борьбу с платформой и очень мало времени на создание чего-либо. Создание - это самое интересное. Создание - это радость. Когда вы убираете радость из уравнения, это перестает приносить удовольствие, и тогда вы начинаете задаваться вопросом...

Есть ли что-то лучше? Что-то более увлекательное, что позволит мне создавать вещи быстрее, с быстрыми циклами обратной связи и более разумным тестированием?

Именно тогда мобильные разработчики часто пробуют что-то новое, например, веб-разработку (часто на основе JavaScript, Ruby, Python и т. д.), и обнаруживают, что жизнь на другой стороне безумно весела и продуктивна.

Статья: https://apptractor.ru/info/articles/upadok-mobilnoy-razrabotki.html
Платформа: разработка
DominantColors позволяет легко найти доминирующие на изображении цвета. Библиотека возвращает палитру цветов, наиболее часто встречающихся в изображении. Есть несколько алгоритмов получения главных цветов, можно даже получить контрастный цвет для нанесения текста.

DominantColors на GitHub: https://github.com/DenDmitriev/DominantColors
Платформа: iOS
⭐️: 31
🔥1