AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.12K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Разбираемся с 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
Инженер по машинному обучению — новый путь обучения от Google

Google предлагает новый полный путь обучения по основам машинного обучения с использованием технологий Google Cloud. Этот путь обучения вы можете пройти самостоятельно и бесплатно. Однако он является довольно длительным, поскольку каждый отдельный курс (а их 15 во всем потоке) требует от 8 до 32 часов.

Новость: https://apptractor.ru/learn/inzhener-po-mashinnomu-obucheniyu-novyy-put-obucheniya-ot-google.html
Платформа: обучение
Apple выпустила библиотеку гомоморфного шифрования для Swift

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

В Apple используют гомоморфное шифрование в своей работе, поэтому они рады поделиться этой Swift-реализацией с сообществом, чтобы другие могли использовать ее и вносить свой вклад.

Одним из примеров использования этой реализации в iOS 18 является новая функция Live Caller ID Lookup, которая предоставляет услуги определения номера абонента и блокировки спама. Live Caller ID Lookup использует гомоморфное шифрование для отправки зашифрованного запроса на сервер, который может предоставить информацию о телефонном номере без того, чтобы сервер знал конкретный номер телефона, указанный в запросе.

Новость: https://apptractor.ru/info/news/apple-vypustila-biblioteku-gomomorfnogo-shifrovaniya-dlya-swift.html
Платформа: iOS
👍3
Вопросы доступности при использовании моего кастомного макета стопки карт

Пару недель назад я опубликовала статью «Кастомные макеты в Compose — стопка карточек с кошками». У макета есть некоторые проблемы с доступностью, и в этой статье я опишу то, как постаралась исправить некоторые из них. Есть несколько проблем, которые я не буду устранять из-за объема этой статьи; вместо этого я обсужу проблемы, которые они вызывают, и возможные решения.

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

Статья: https://apptractor.ru/info/articles/voprosy-dostupnosti-pri-ispolzovanii-kastomnogo-maketa-stopki-kart.html
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
ImageCropView - это библиотека Jetpack Compose, которая предоставляет простое и настраиваемое представление для обрезки изображений. Она поддерживает различные стили обрезки, такие как свободная форма, квадратная и круговая обрезка, что позволяет легко интегрировать функцию обрезки изображений в пользовательский интерфейс Compose.

ImageCropView на GitHub: https://github.com/rroohit/ImageCropView
Платформа: Android
⭐️: 67
👍1