AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.12K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
MIDIKit - элегантная и современная обертка CoreMIDI на чистом Swift, поддерживающая MIDI 1.0 и MIDI 2.0.

• Модульный, удобный ввод/вывод
• Автоматическое управление соединениями с конечными точками MIDI и сохранение идентификационных данных
• Сильно типизированные события MIDI с интероперабельностью между MIDI 1.0 и MIDI 2.0
• Автоматическое использование соответствующий Core MIDI API и по умолчанию переход на MIDI 2.0 на платформах, которые его поддерживают
• Поддержка Swift Playgrounds на iPad и macOS
• Полная документация доступна в браузере Xcode Documentation, включая полезные руководства и информацию о начале работы

MIDIKit на GitHub: https://github.com/orchetect/MIDIKit
Платформа: iOS
⭐️: 217
👍1
Пишем свой генератор ID для мобильных приложений

Однажды, работая с кодом, я обратил внимание на использование UUID в UI и задумался о его влиянии на производительность. Тесты показали, что собственное решение может быть значительно быстрее стандартной реализации UUID в Java.

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

Статья: https://habr.com/ru/companies/wildberries/articles/844104/
Платформа: Android
Вы когда-нибудь хотели писать код на C и запускать его на Android? Надоели многомегабайтные пакеты для выполнения самых простых вещей. Raw Ddraw Android - это демонстрация того, как можно создавать собственные APK, собирать, устанавливать и автоматически запускать их примерно за 2 секунды, при этом размер APK составляет около 25 Кб для API 26. API 30 (Android R+) имеет размер 45 Кб для поддержки ARM64 + ARM32.

С этим фреймворком вы получаете демо, в котором есть:

• Создание окна с поддержкой OpenGL ES
• Акселерометр/гироскоп, мультитач
• Клавиатура для ввода
• Возможность хранить файлы ресурсов в вашем APK и читать их с помощью AAssetManager
• Поддержка разрешений для использования таких вещей, как звук
• Прямой доступ к USB-устройствам

Raw Ddraw Android на GitHub: https://github.com/cnlohr/rawdrawandroid
Платформа: Android
⭐️: 3.3K
Создание Convention Plugin-ов на базе Kotlin-классов

На связи Дима Котиков и мы продолжаем разговор о том, как облегчить себе жизнь и уменьшить bolierplate в gradle-файлах. В предыдущих статьях мы сделали отдельный модуль для написания Convention Plugins, провели необходимые настройки и написали несколько Convention Plugin‑ов в «‑.gradle.kts»‑файлах. В этой части мы будем создавать Convention Plugin‑ы на базе Kotlin‑классов.

Статья: https://habr.com/ru/companies/tbank/articles/843786/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Создание динамического вытаскиваемого ScrollView с помощью UIKit для SwiftUI

В одном из наших недавних продуктов мы взялись за интересную задачу - переделать вид карты и поиска. Реализованный нами дизайн представляет собой гибридное состояние, в котором карта находится за сворачиваемым списком в bottom sheet, что очень похоже на такие популярные приложения, как Apple Maps и Google Maps! Такой подход создал несколько проблем, особенно если учесть, что нам нужно было создать эту функцию в рамках представления SwiftUI и при этом поддерживать iOS 15. Одной из ключевых трудностей было отсутствие контрола, который теперь доступен в iOS 16+ с помощью presentationDetents.

Статья
: https://medium.com/livefront/creating-a-dynamic-draggable-scrollview-with-uikit-for-swiftui-13bd25c2954c
Платформа: iOS
HotReloading - реализация InjectionIII в виде Swift Package с поддержкой Swift, Objective-C и C++. Позволяет сразу видеть и понимать, как работает ваш код. Работает с VSCode.

HotReloading на GitHub: https://github.com/johnno1962/HotReloading
Платформа: iOS
⭐️: 543
Как делать простые анимированные онбординги в Lottie без After Effects

Меня зовут Михаил Мурзак, я продуктовый дизайнер в Ozon Seller (сайт и приложение продавца).

Время от времени мы делаем анимированные онбординги крупных фич в мобильном приложении и долгое время использовали для этих целей Adobe After Effects с плагином Bodymovin (для экспорта в Lottie), но каждый раз для меня это было мучением, поэтому я решил пересесть на официальный клиент Lottie и написал этот гайд для коллег.

Теперь, когда Adobe не продлевает лицензии, этот гайд стал ещё более актуальным, и я решил опубликовать его тут.

Статья: https://habr.com/ru/companies/ozontech/articles/845696/
Платформа: разработка
LiveKit - это проект с открытым исходным кодом, обеспечивающий масштабируемую многопользовательскую конференц-связь на основе WebRTC. Он предназначен для предоставления всего необходимого для создания в приложениях возможностей передачи видео-аудио данных в режиме реального времени.

Фичи:

• масштабируемый, распределенный WebRTC SFU (Selective Forwarding Unit)
• созданы для прода, поддерживают JWT аутентификацию
• надежные сетевые и коммуникационные возможности, UDP/TCP/TURN
• простота развертывания: один бинарник, Docker или Kubernetes
• обнаружение дикторов
• одновременное вещание
• сквозная оптимизация
• API для модерации
• сквозное шифрование
• SVC кодеки (VP9, AV1)
• веб-хуки

Есть полнофункциональные SDK для всех платформ, включая Jetpack Compose и SwiftUI, Flutter и React Native.

LiveKit на GitHub: https://github.com/orgs/livekit/repositories
Платформа: разработка
Видео и подкасты за неделю @AppFiles

(iOS Ru) Ускоряем SwiftUI с Observable
(iOS Ru) Как укротить виджеты в супераппе?
(iOS Ru) UICollectionViewLayout с самого начала
(iOS Ru) UITableView с различными типами ячеек
(iOS En) Let's Integrate SwiftData CRUD into the Notes App
(iOS En) SwiftUI - Rotating Characters Loader Tutorial
(iOS En) Deep Dive into TabView Changes in iOS18
(iOS En) Let's Make Notes App With Complex Transitions | SwiftData | SwiftUI
(iOS En) Testing 101: What Are Integration Tests & How to Write Them in Swift
(iOS En) SwiftUI - Image Presentation Animation Tutorial
(iOS En) WWDC22: The SwiftUI cookbook for navigation
(And Ru) Размер имеет значение: как измерить и уменьшить вес Android-приложения
(And Ru) Установка Android-приложений от доисторических времен до наших дней
(And En) Room Renovations - Android Conference Talks
(And En) How to Implement a Custom Swipe to Reveal in Jetpack Compose
(And En) Keyboard & Focus Management In Jetpack Compose
(And En) How easy is it to draw on GoogleMaps using Compose?
(Crs Ru) React Native перевернул игру
(Crs Ru) Темная сторона изолятов в Dart
(Dev Ru) Интероп – неизбежность в больших системах: C и C++, JNI, WinAPI
(Dev Ru) Что делать, если разработчики бесят
(Dev Ru) Процесс CI/CD в Авито: от комита до релиза
(Dev Ru) Clean Architecture (чистая архитектура, все для проекта любого размера, принципы, мышление)
(Dev En) End-to-End Machine Learning Project – AI, MLOps

#ios #android #mobile #video
SwiftUI Flow Layout - HFlow и VFlow, аналогичные HStack и VStack. Упорядочивает представления по строкам и соответствующим образом нарезает новые строки, если элементы не помещаются в ограничивающее пространство.

SwiftUI Flow Layout на GitHub: https://github.com/tevelee/SwiftUI-Flow
Платформа: iOS
⭐️: 343
🔥2
Hotwire Native

Hotwire Native - это веб-фреймворк для создания нативных мобильных приложений. Он позволяет разработчикам создавать экраны на HTML и CSS и повторно использовать их на любой платформе. Hotwire Native предоставляет разработчикам полный доступ к базовым SDK и API для iOS и Android сразу после их выхода. Это позволяет небольшим командам создавать высокофункциональные, красивые и устойчивые мобильные приложения без головной боли и сложностей, связанных с традиционной нативной разработкой.

Сайт: https://native.hotwired.dev/
Платформа: кроссплатформа
🤡5
1726400252028198.webm
1.6 MB
Рисуя звезды: рисование с помощью Compose и Canvas

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

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

Статья: https://apptractor.ru/info/articles/risuya-zvezdy-risovanie-s-pomoschyu-compose-i-canvas.html
Платформа: Android
🏆1
YourSpace - приложение для Android с открытым исходным кодом, предназначенное для повышения безопасности семьи благодаря функциям обмена местоположением и общения в режиме реального времени. YourSpace призвано обеспечить душевное спокойствие, гарантируя безопасность ваших близких и способствуя беспрепятственному общению независимо от их местоположения.

YourSpace использует архитектурный паттерн MVVM и Jetpack Compose для декларативного построения современных пользовательских интерфейсов. Кроме того - корутины и Flow, Jetpack Navigation, Retrofit, Google Maps SDK, Fusion Location Provider, DataStore, Room, Firebase, Hilt.

YourSpace на GitHub: https://github.com/canopas/your-space-android
Платформа: Android
⭐️: 39
Предотвращение порчи кодовой базы в iOS-проектах с помощью прекоммит хуков

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

В этой статье я расскажу о том, как pre-commit Git hook может предотвратить подобные проблемы, автоматизируя проверку кода перед каждым коммитом.

Статья: https://apptractor.ru/info/articles/predotvraschenie-porchi-kodovoy-bazy-v-ios-proektah-s-pomoschyu-prekommit-hukov.html
Платформа: iOS
Koin: как сделать свой DI за 10 минут

Привет, меня зовут Иван Курак, я Android-разработчик приложения Ozon Job. В этой статье мы реализуем свой механизм, на котором построен Koin. Тем самым мы пройдём путь, который проходили его авторы при решении проблемы построения собственного DI.

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

Статья: https://habr.com/ru/companies/ozontech/articles/846482/
Платформа: Android
SymSpellSwift - Swift-реализация SymSpell, коррекции орфографии и нечеткого поиска.

Алгоритм исправления орфографии Symmetric Delete снижает сложность генерации кандидатов на редактирование и поиска по словарю для заданного расстояния Дамерау-Левенштейна. Он на шесть порядков быстрее (чем стандартный подход с удалениями + переносами + заменами + вставками) и не зависит от языка.

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

SymSpellSwift на GitHub: https://github.com/gdetari/SymSpellSwift
Платформа: iOS
⭐️: 4
Как ускорить запуск iOS-приложения в 2 раза с помощью Network Instrument

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

Если посмотреть на все запросы сбоку, то появится много вопросов: нужно ли переиспользовать URLSession.shared, почему первые запросы, даже очень простые, выполняются дольше остальных, как ускорить запуск приложения, когда запросов много, как ускорить загрузку картинок, как построить мониторинг качества работы сети и т.п.

При анализе через Network Instrument мы нашли десяток разных проблем в наших приложениях. Уверен, одна из них есть и в вашем приложении.

Статья: https://habr.com/ru/companies/dododev/articles/846662/
Платформа: iOS