AppFiles - Mobile Development
2.12K subscribers
2.71K photos
38 videos
10 files
3.64K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Droid-ify - неофициальный клиент магазина F-Droid с чистым материальным дизайном, “гладким” пользовательским опытом. В нем нет неподходящей анимации, есть быстрая синхронизация репозитория, стандартные компоненты Android и минимальные зависимости.

Droid-ify на GitHub: https://github.com/Droid-ify/client
Платформа: Android
⭐️: 2.8K
О, вы из Англии? Локализация Ozon Seller на iOS

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

Нашим приложением активно пользуются юзеры из разных стран, и поэтому день Х, когда мы решим добавить поддержку разных языков, был неизбежен. В этой статье я расскажу про стандартный процесс локализации iOS-приложения, про то, с какими трудностями мы столкнулись и как их решили. Разберём системный алгоритм определения языка и объясню, почему он нам не подошёл. Сделаем перевод приложения «на лету», а также посмотрим, как изменился наш флоу работы со строками.

Статья: https://habr.com/ru/companies/ozontech/articles/807775/
Платформа: iOS
Видео и подкасты за неделю:

(iOS Ru) А так ли нужна Swift Modern Concurrency?
(iOS Ru) Мгновенный фидбэк: как оперативно получать отзывы о приложении в App Store
(iOS En) Your guide to Metal ray tracing
(iOS En) Integrate Screen-Sharing Into a SwiftUI App
(iOS En) SwiftUI Custom Transitions
(iOS En) Building Netflix UI Animations
(And Ru) Устройство Android Music SDK или как мы встроили музыку в суперапп-приложение
(And Ru) Интеграция MediaPipe в Android-приложение видеоконференцсвязи
(And En) Now in Android: 103 - Android 15 Beta, Gemini in Android Studio, Google Drive improvements, & more
(And En) MVVM vs. MVI - Understand the Difference Once and for All
(And En) The ONLY Thing to MASTER as an Android Developer (And Why 99% FAIL!)
(And En) Boosting Bazel adoption on Android with automation
(And En) Inline Functions: inline, crossinline, and noinline
(Dev Ru) Инженерная культура BigTech: работа мечты или испытание на прочность?
(Dev Ru) Как устроена мобильная разработка в Кинопоиске
(Dev Ru) Пробить стеклянный потолок и стать сеньором

Посоветуйте в комментариях интересные каналы по мобильной разработке? 🌐 @AppFiles
Zephyr синхронизирует определенные ключи и/или все ваши UserDefaults через iCloud с помощью NSUbiquitousKeyValueStore. В библиотеку встроен мониторинг, позволяющий синхронизировать определенные ключи в фоновом режиме по мере их изменения.

Zephyr на GitHub: https://github.com/ArtSabintsev/Zephyr
Платформа: iOS
⭐️: 913
Clean architecture и MVVM в iOS разработке

При разработке ПО важно использовать не только дизайн-, но и архитектурные паттерны. Их существует довольно много. В мобильной разработке самые распространенные - MVVM, Clean Architecture и Redux.

В этой статье мы покажем на примерах проектов как паттерны MVVM и Clean Architecture могут быть применены в iOS приложении.

Статья: https://habr.com/ru/articles/808923/
Платформа: iOS
Генерируем отчеты PDF на Android с использованием HTML и WebView в фоне

Сервис, прежде всего, должен решать задачу пользователя. Часто приложения должны делать то, что, казалось бы, должно ложиться на плечи сервера и других публичных API. Так, например, произошло в нашем проекте. Сервис помогает составлять отчеты, удобно их менеджерить, автоматизирует задачи генерации и отправки клиентам. В рамках этой статьи хочу рассказать про наш опыт переноса функционала генерации PDF-отчетов на Android-устройство.

Статья: https://habr.com/ru/articles/809141/
Платформа: Android
Создаем гистограмму с помощью Swift Charts

Гистограмма — это всего лишь один из доступных вариантов визуализации данных. В целом, многие из методов, о которых вы сегодня узнаете, применимы и к другим графикам. Фактически, вы можете заменить всего один элемент, чтобы перейти от гистограммы к линейной диаграмме. Давайте погрузимся в работу!

Статья: https://apptractor.ru/info/articles/sozdaem-gistogrammu-s-pomoschyu-swift-charts.html
Платформа: iOS
Firebase Kotlin SDK - это Kotlin-first SDK для Firebase. API аналогичен Kotlin-расширениям Firebase Android SDK, но также поддерживает мультиплатформенные проекты, позволяя использовать Firebase непосредственно из единого источника, ориентированного на iOS, Android, Desktop или Web, что дает возможность использовать Firebase в качестве бэкенда, например, для Compose Multiplatform.

Firebase Kotlin SDK на GitHub: https://github.com/GitLiveApp/firebase-kotlin-sdk
Платформа: Android
⭐️: 882
👍3
EeveeSpotify - это твик для Spotify, который дает некоторые функции премиум-подписки.

Как это работает

При входе в систему Spotify получает данные пользователя, включая активную подписку, и кэширует их в файле offline.bnk в каталоге /Library/Application Support/PersistentCache. Для хранения данных используется собственный двоичный формат, включающий, помимо прочих условностей, байт длины перед каждым значением. Некоторые ключи, такие как player-license, financial-product и type, определяют возможности пользователя.

Твик исправляет этот файл при инициализации. Spotify загружает его и предполагает, что у вас есть Premium. Честно говоря, это не совсем патч, а именно обходной твик, из-за проблем с динамической длиной и разными байтами. В идеале должен быть парсер, способный десериализовать и сериализовать такой формат. Однако пока твик просто извлекает имя пользователя из текущего файла offline.bnk и вставляет его в premiumblank.bnk (файл, содержащий все предустановленные значения Premium), заменяя им offline.bnk.

EeveeSpotify на GitHub: https://github.com/whoeevee/EeveeSpotify
Платформа: разработка/Swift
⭐️: 102
🤔1
Осваиваем ViewModel в Android: «можно» и «нельзя» — Часть 3

В предыдущих частях мы обсудили:

1. Избегайте инициализации состояния в блоке init{}.
2. Избегайте раскрытия мутабельных состояний.
3. Используйте update{} при использовании MutableStateFlows.

В этой части мы обсудим 4 и 5 пункты из списка:

4. Старайтесь не импортировать зависимости Android в ViewModel.
5. Лениво внедряйте зависимости в конструктор.

Статья: https://apptractor.ru/info/articles/osvaivaem-viewmodel-v-android-mozhno-i-nelzya-chast-3.html
Платформа: Android
Оптимизируем обновление местоположения с помощью CLLocationUpdate в Swift

На WWDC 23 Apple значительно улучшила процесс обновления местоположения, представив класс CLLocationUpdate. Этот новый класс использует возможности современного Swift Concurrency, упрощая получение и управление данными о местоположении в ваших приложениях.

Статья: https://apptractor.ru/info/articles/optimiziruem-obnovlenie-mestopolozheniya-s-pomoschyu-cllocationupdate-v-swift.html
Платформа: iOS
Jetpack Compose для ленивых

Если вы еще не используете Compose в своих проектах, то определенно стоит подумать о том, что бы начать, поскольку он позволяет делать сложные вещи простыми и, что самое главное, экономит время (и нервы).

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

Статья: https://habr.com/ru/articles/810123/
Платформа: Android
N8 - библиотека навигации на основе состояний. Цель - чистый Kotlin, необходимость в минимуме конфигурации, минимальная связанность, безопасность типов и очевидный API. В N8 нет необходимости указывать навигационные маршруты заранее, N8 просто строит навигационный граф по мере продвижения, гарантируя, что операции возврата всегда будут иметь смысл. Чтобы использовать N8 в своем приложении, вам не нужно реализовывать никаких специальных интерфейсов на экранах, поэтому ваш пользовательский код остается в значительной степени независимым от самого N8.

N8 на GitHub: https://github.com/erdo/n8
Платформа: Android
⭐️: 35
Цикломатическая сложность в Swift

Цикломатическая сложность — это модный термин, обозначающий количество точек принятия решений в коде. На самом деле это очень просто. По сути, чем больше у вас точек принятия решений — например, операторов if, switch, циклов и так далее, — тем сложнее становится ваш код. А чем сложнее код, тем труднее его понимать, тестировать и поддерживать.

Статья: https://apptractor.ru/info/articles/tsiklomaticheskaya-slozhnost-v-swift.html
Платформа: разработка/Swift
EasyCrypto - простое приложение для iOS с курсами криптовалют. Внутри все самые модные технологии и инструменты разработки - SwiftUI, Core Data, Combine, чистая архитектура, MVVM, паттерн Координатор, инъекция зависимостей, SwiftLint, юнит-тесты.

EasyCrypto на GitHub: https://github.com/mehrankmlf/EasyCrypto
Платформа: iOS
⭐️: 44
👨‍💻2
Вы, случайно, не мобильный разработчик? Тогда откуда для вас такой оффер?

18 и 19 мая пройдет Mobile Weekend Offer в Тинькофф. Для iOS- и Android-разработчиков с опытом от 3 лет.

Вот что будет:

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

Дальше — будете решать масштабные финтех-задачи, развивать продукты для миллионов, пользоваться бенефитами и расти.

Оставьте заявку до 15 мая

Реклама. АО «Тинькофф Банк», ИНН 7710140679
FlowExt - это библиотека Kotlin Multiplatform, которая предоставляет множество операторов и расширений для Flow. FlowExt предоставляет коллекцию операторов, потоков и утилит для Flow, которые не предусмотрены самими корутинами, но распространены в других реактивных фреймворках (rxjs, RxJava, RxSwift, rxdart, ...) и стандартах.

FlowExt на GitHub: https://github.com/hoc081098/FlowExt
Платформа: Android
⭐️: 285
This media is not supported in your browser
VIEW IN TELEGRAM
Survey View - библиотека для Android, написанная на Jetpack Compose, позволяющая делать опросы.

Survey View на GitHub: https://github.com/zekierciyas/survey-compose
Платформа: Android
⭐️: 16
Поля содержимого (content margin) в SwiftUI

В SwiftUI появился набор модификаторов представлений, позволяющий эффективно управлять безопасной областью в наших представлениях. Во многих случаях безопасная область — это то место, где вы хотите разместить свой контент. Сегодня мы узнаем о новой концепции content margin, которую представил SwiftUI, и о том, чем она отличается от safe area (безопасной области).

Статья: https://apptractor.ru/info/articles/polya-soderzhimogo-v-swiftui.html
Платформа: iOS
👍2