AppFiles - Mobile Development
2.11K subscribers
2.7K photos
38 videos
10 files
3.63K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
OTP Helper - приложение с открытым исходным кодом, которое позволяет автоматически копировать OTP и коды из SMS и уведомлений, читая все ваши уведомления. Приложение работает полностью автономно и без доступа к интернету. Поэтому, по идее, ваши данные не покидают устройство. Как работает: приложение устанавливает прослушиватель уведомлений и читает все уведомления, которые отправляются любыми приложениями. Это позволяет приложению обнаруживать коды также из электронной почты и, возможно, из любого другого приложения, которое отправляет уведомления. Когда уведомление отправляется, OTP Helper создает одну строку из всего текста в уведомлении, а затем проверяет, следует ли ее игнорировать. Если она не игнорируется, то сопоставляется с регулярным выражением для обнаружения кода. Затем приложение берет извлеченный код и действует в соответствии с настройками.

OTP Helper на GitHub: https://github.com/jd1378/otphelper
Платформа: Android
⭐️: 391
1
Модульное тестирование с помощью JUnit в Android

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

Статья: https://nuancesprog.ru/p/21014/
Платформа: Android
Concurrency шаг за шагом — сетевой запрос

Разбираемся шаг за шагом как сделать сетевой запрос для загрузки картинки в Swift Concurrency.

Статья: https://apptractor.ru/info/articles/concurrency-shag-za-shagom-setevoy-zapros.html
Платформа: iOS
3
Swift MMIO - это пакет с открытым исходным кодом для определения и работы с отображаемыми на память вводом/выводом непосредственно в Swift.

Swift MMIO позволяет легко определять регистры непосредственно в исходном коде Swift и работать с ними безопасным и эргономичным способом.

Memory-mapped I/O (MMIO, память с отображением на ввод-вывод) — это метод взаимодействия процессора с периферийными устройствами, такими как жесткие диски, видеокарты и сетевые адаптеры, при котором устройства ввода-вывода отображаются в адресное пространство оперативной памяти. Это означает, что для доступа к регистрам периферийного устройства используются обычные команды работы с памятью, а не специальные инструкции ввода-вывода.

Swift MMIO на GitHub: https://github.com/apple/swift-mmio
Платформа: Swift/iOS
⭐️: 197
От Cocoapods к Tuist+SPM быстрыми шагами

Не так давно прогремела новость, что Cocoapods переходит в режим поддержки. В связи с этим встал вопрос, что дальше. В начале мы склонялись к чисто Swift Package Manager, но потом пришло понимание, что неплохо было бы уйти от конфликтов в project файле и сделать задел на модульность. В этой статье мы пройдем от нашего старого приложения к новому и закончим там, где останется перенести исходный код и все заработает.

Статья: https://habr.com/ru/articles/837456/
Платформа: iOS
lazy-grid-demo.webp
3.9 MB
Reorderable - это простая библиотека, которая позволяет перестраивать элементы в LazyColumn, LazyRow, LazyVerticalGrid, LazyHorizontalGrid, LazyVerticalStaggeredGrid и LazyHorizontalStaggeredGrid, а также Column и Row в Jetpack Compose и Compose Multiplatform с помощью перетаскивания. Поддерживает Compose Multiplatform (Android, iOS, Desktop/JVM, Wasm, JS), элементы любого размера, немедленное перетаскивание или длительное нажатие для перетаскивания, скролл при достижении границ экрана, анимацию движения. и т.п.

Reorderable на GitHub: https://github.com/Calvin-LL/Reorderable
Платформа: Android
⭐️: 392
👍2
ArtMaker - это гибкая и настраиваемая библиотека, которая позволяет пользователям рисовать на экране все, что они захотят. Полностью построена на Jetpack Compose. Она позволяет рисовать через Canvas, делиться нарисованным Bitmap или программно раскрывать Bitmap для использования в вызывающем приложении.

ArtMaker на GitHub: https://github.com/Fbada006/ArtMaker
Платформа: Android
⭐️: 10
👍1
Задачи с собеседований: Leetcode — Является ли число палиндромом

Дано целое число x, верните true, если x является палиндром (читается одинаково слева на право и с право на лево) и false в противном случае.

Я добился 99% по скорости, но как уменьшить потреблением памяти (даже в ущерб быстродействию) вообще непонятно. Вполне допускаю, что это просто особенность реализации алгоритма на Swift. Если кто знает - подскажите.

Статья: https://apptractor.ru/develop/coding/chislo-palindrom.html
Платформа: алгоритмы
👍2🤡1
This media is not supported in your browser
VIEW IN TELEGRAM
6 причин не использовать Server Driven UI

Мой главный посыл в этой статье - избегайте использования Server-Driven UI, насколько это возможно (если только команда разработчиков и руководство не разработают хороший конвейер для решения всех проблем). SDUI может сделать распределение кода и ответственности беспорядочным и трудноорганизуемым, даже если все находятся на одной волне. Это решение также может лишить вас гибкости в отношении новых решений в области дизайна и функциональности.

Статья: https://apptractor.ru/info/articles/server-driven-ui-6-prichin-ne-ispolzovat-ego.html
Платформа: архитектура
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Settings iOS - учебное приложение на SwiftUI, воспроизводящее стандартные Настройки в iOS.

Settings iOS на GitHub: https://github.com/zhrispineda/Settings-iOS
Платформа: iOS
⭐️: 14
Профилирование приложений на SwiftUI с помощью Instruments

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

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

Статья: https://habr.com/ru/companies/otus/articles/838490/
Платформа: iOS
💅1
10 самых распространенных ошибок с Jetpack Compose

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

1. Не помнить о правильном использовании remember
2. Чрезмерное использование Modifier.fillMaxSize()
3. Игнорирование оптимизаций производительности
4. Путать State и MutableState
5. Неправильное использование LaunchedEffect
6. Неправильное управление рекомпозицией
7. Переусложнение пользовательского интерфейса с помощью вложенных композабл
8. Неэффективное использование тем и стилей
9. Неадекватное тестирование
10. Пренебрежение доступностью

Статья: https://apptractor.ru/info/articles/10-samyh-rasprostranennyh-oshibok-s-jetpack-compose.html
Платформа: Android
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Compose Stopwatch - еще один учебный проект, таймер с секундомером в стиле iOS. Сделан полностью на Jetpack Compose. Есть соответствующая статья про его создание.

Compose Stopwatch на GitHub: https://amit-bhandari.github.io/posts/jetpack-compose-custom-view/
Платформа: Android
⭐️: 10

Поставьте 👍, если хотите статью на русском.
👎2👏1
Проверяем пакет iOS-приложения

Если вы знаете секретные языки ipa-нский и bundle-инди, вы можете удивить и порадовать интервьюера неожиданным отзывом — если потратите 10 минут на проверку и анализ его пакета приложений заранее.

Статья: https://apptractor.ru/info/articles/proveryaem-paket-ios-prilozheniya.html
Платформа: iOS
Карточка навигации для iOS 18 на SwiftUI

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

Давайте посмотрим, как это можно сделать в SwiftUI.

Статья: https://apptractor.ru/info/articles/kartochka-navigatsii-dlya-ios-18-na-swiftui.html
Платформа: iOS
Подходы к многомодульной функциональной архитектуре на Android

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

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

Статья: https://apptractor.ru/info/articles/podhody-k-mnogomodulnoy-funktsionalnoy-arhitekture-na-android.html
Платформа: Android
Supercool App - модульное приложение для Android, созданное на Jetpack Compose и Kotlin на чистой архитектуре с использованием удивительного паттерна проектирования Use Case. Технологический стек вобрал все, что только можно - Android KTX, AndroidX, корутины, Lifecycle, Viewmodel, LiveData, Retrofit, Flow, Hilt, Navigation Components, GitHub Actions, Mockito Kotlin, Room, Material Compose и т.п.

Supercool App на GitHub: https://github.com/im-o/jetpack-compose-clean-architecture
Платформа: Android
⭐️: 71
👎1
Как я ускорил свое мобильное приложение BookDesk на React Native в 3 раза?

В этом материале я поделюсь с вами практическим опытом по оптимизации своего мобильного приложения на React Native. Расскажу как ускорил свое приложение в 3 раза.

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

Статья: https://habr.com/ru/articles/839248/
Платформа: кроссплатформа
Mapping объектов с помощью MapStruct

В огромном приложении Android с Clean Architecture много рутинной работы, связанной с отображением объектов между различными слоями. Хорошим решением будет автоматизация этого процесса.

В этой статье рассматривается опыт использования библиотеки MapStruct, которая помогает mapp-ить объекты.

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