AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.13K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
ImmutableData - простое управление состояниями для SwiftUI

ImmutableData - новый подход к архитектуре приложений для SwiftUI, основанный на более чем десятилетнем опыте работы с декларативными UI-фреймворками. Вдохновленная принципами Flux и Redux, архитектура использует современные возможности Swift, чтобы сделать ваш код чище, быстрее и проще для понимания. Вместо традиционного императивного и объектно-ориентированного программирования, авторы делают ставку на декларативное мышление, функциональный стиль и неизменяемые (immutable) данные. В основе всего — однонаправленный поток данных, который обеспечивает строгое разделение ответственности: действия декларируют, что произошло; слой состояния реагирует на эти действия, изменяя данные; а представления (views) — просто отображают обновлённое состояние.

Это строгое разделение позволяет избавиться от таких проблем, как двусторонняя привязка данных и "спагетти-код", вызванный изменяемыми объектами. Архитектура ImmutableData делает код надёжнее, его легче тестировать, а новичкам — проще в нём разобраться. Пакет предоставляет три основных модуля: ImmutableData для управления данными, ImmutableUI для работы с представлениями SwiftUI и AsyncSequenceTestUtils для тестирования. Чтобы начать, достаточно добавить пакет в свой проект через Swift Package Manager. Например, для простого счётчика вам нужно определить состояние, действия и редьюсер, а затем использовать @ImmutableUI.Selector и @ImmutableUI.Dispatcher, чтобы связать ваш UI с глобальным состоянием приложения. Это позволяет создавать масштабируемые и легко поддерживаемые приложения.

ImmutableData на GitHub: https://github.com/Swift-ImmutableData/ImmutableData
Платформа: iOS
⭐️: 37
🤔1
Андроид всё еще не готов к RAW-видео

Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW-видео предпочитают не говорить.

Я разберу лишь основные моменты, которые и убедили меня в том, что эффективная съемка RAW‑видео на Андроид на сегодняшний день невозможна без »костылей» и ухищрений. Костылей, которые нивелируют все те преимущества RAW, которые так жаждут получить на своих смартфонах видеографы. Ухищрений, которые по итогу делают менее ресурсоемкие форматы записи видео на смартфоне даже более эффективными и качественными, чем RAW.

Да, будет интересно!

Статья: https://habr.com/ru/articles/947578/
Платформа: Android
To Do - ведение дел на Jetpack Compose

To Do - простое приложение для ведения дел на Jetpack Compose с настраиваемыми темами Material Design 3.

To Do на GitHub: https://github.com/Super12138/ToDo
Платформа: Android
⭐️: 41
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
SwiftUI: Горизонтальный пикер/слайдер/линейка

Если стандартные слайдеры уже надоели, посмотрите, как создать кастомный горизонтальный Dial Picker — компонент, похожий на линейку или шкалу настройки.

В статье автор подробно разбирает создание такого элемента с нуля.

Статья: https://levelup.gitconnected.com/swiftui-horizontal-dial-picker-slider-ruler-8b3681fc9a00
Платформа: iOS

Поставь 👍, если хотите перевод на русский.
👍4
Все, что вы хотели знать о флагах в эмодзи (но не знали, что вам это нужно)

Допустим, вы создаете аналитическое приложение и вам нужен простой способ обозначить местоположение аналитического события. Если вы, как и я, подумали: «Да, флажки эмодзи — забавный способ показать страны», то наверняка сразу же начали создавать такой словарь

let emojiFlags = [
"AU": "🇦🇺",
"BE": "🇧🇪",
"BR": "🇧🇷",
"BS": "🇧🇸",
...
]

Но подождите. Оказывается, есть гораздо более простой способ сделать это (ну как «простой»… с программной точки зрения).

Статья: https://apptractor.ru/info/articles/vse-chto-vy-hoteli-znat-o-flagah-v-emodzi-no-ne-znali-chto-vam-eto-nuzhno.html
Платформа: iOS
Foqos - блокировка приложений с помощью NFC-метки или QR-кода

Foqos поможет вам одним касанием отключить самые отвлекающие приложения — с помощью NFC-меток или QR-кодов — чтобы вы могли сосредоточиться и выработать полезные цифровые привычки. Это бесплатное приложение с открытым исходным кодом, которое является альтернативой Brick, Bloom, Unpluq, Blok и другим.

Foqos на GitHub: https://github.com/awaseem/foqos
Платформа: iOS
⭐️: 172
Строки в Swift

Сегодня поговорим о теме, которая вроде бы знакома каждому разработчику, но при этом часто остаётся в тени. Речь пойдёт о строках в Swift.

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

Статья: https://habr.com/ru/articles/948870/
Платформа: iOS
Расширяем возможности GitHub Copilot для IDEA или как писать unit-тесты в пару кликов

В этой статье расскажу, как мне удалось «влезть» в плагин GitHub Copilot, обойти ограничения проприетарного инструмента и научить его помогать писать unit-тесты буквально в пару кликов. Думаю это будет полезно тем, кто хочет узнать как влезать в работу сторонних плагинов, ускорить написание тестов и тем, кто ищет способы прокачать работу с ИИ-помощниками в своих проек

Статья: https://habr.com/ru/companies/cian/articles/920328/
Платформа: Android
Горизонтальный селектор/слайдер/линейка на SwiftUI

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

В интернете есть несколько решений. Однако ни одно из них не делало того, чего я хочу, и не было реализовано так, как мне нравится. И, как вы, возможно, уже знаете меня, если мне не понравится то, что есть, я просто ДЕЛАЮ ЭТО САМ.

Идея довольно проста, но есть много мелочей, на которые нужно обратить внимание, чтобы всё работало гладко, так как нам (или, по крайней мере, мне) нравится.

Давайте посмотрим.

Статья: https://apptractor.ru/info/articles/gorizontalnyy-selektor-slayder-lineyka-na-swiftui.html
Платформа: iOS
ADB Keep Screen On - включенный экран при работе с ADB

ADB Keep Screen On - это простая утилита для командной строки, написанная на Go, которая предотвращает переход устройства Android в спящий режим при подключении через ADB по USB.

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

ADB Keep Screen On на GitHub: https://github.com/nisrulz/adb-keep-screen-on
Платформа: Android
⭐️: 11
Как Shopify перевела свои крупнейшие приложения на новую архитектуру React Native

Команда JavaScript for Devs подготовила перевод кейса Shopify о миграции их крупнейших приложений на новую архитектуру React Native. Результат впечатляет: еженедельные релизы не остановились, стабильность сохранилась, а производительность выросла.

Статья: https://habr.com/ru/articles/949002/
Платформа: кроссплатформа
👍1
Новые подходы в Swift для тестирования: разбор технологии Swift Testing

Тестирование на Swift долгие годы держалось на трех китах: XCTest, сторонние библиотеки и собственная смекалка. Но на WWDC 24 Apple представила новый, современный фреймворк — Swift Testing, который предлагает концептуально новый подход к тестированию. Кирилл Гусев из ОК рассказывает о том, какие возможности предоставляет Swift Testing и как они в компании планируют применять их.

Статья: https://habr.com/ru/companies/vk/articles/949260/
Платформа: iOS
👍1
Проблема при выделении текста в TextView на Android 15+

При использовании TextView с выравниванием текста по ширине (justificationMode = JUSTIFICATION_MODE_INTER_WORD) возникает следующая проблема: во время выделения текста маркеры и подсветка часто смещаются. В результате выделяется не то слово, которое должно быть, маркеры не совпадают с символами.

Статья: https://android-tools.ru/coding/problema-pri-vydelenii-teksta-v-textview-na-android-15/
Платформа: Android
😱1
Я заставил мое приложение работать в офлайне - архитектурный сдвиг

Моё приложение на самом деле не было приложением. Оно было просто марионеткой, которой управлял интернет, дергая за все ниточки.

А когда я отключил ниточки, марионетка рухнула.

И я принял решение. Я переделаю своё приложение так, чтобы оно работало только в offline режиме.

Никаких оправданий. Никаких сообщений «попробуйте ещё раз позже». Только локальная архитектура.

И этот выбор изменил всё в моём подходе к разработке приложений.

Статья: https://apptractor.ru/info/articles/ya-zastavil-moe-prilozhenie-rabotat-v-oflayne-arhitekturnyy-sdvig.html
Платформа: разработка
1
Memo Notes - приложение для ведения заметок

Memo Notes — это лёгкое и интуитивно понятное приложение для создания заметок, разработанное для устройств iOS, призванное помочь пользователям записывать и организовывать свои мысли, задачи и идеи. Благодаря понятному и удобному интерфейсу Memo Notes позволяет быстро создавать, редактировать и эффективно управлять заметками. Работайте продуктивно благодаря таким функциям, как удобное редактирование, свайп для быстрого обновления и удобное использование на всех ваших устройствах.

Memo Notes на GitHub: https://github.com/KhubaibKhan4/MemoNotes
Платформа: iOS
⭐️: 16
👍1
Разбираемся с existential container в Swift

Existential container - это структура данных в рантайме, которая хранит значение типа, скрытого за протоколом. Он появляется там, где мы используем название протокола в качестве типа переменной или аргумента функции. С помощью existential container реализован динамический вызов методов протокола, а также управление жизненным циклом внутреннего значения типа.

Статья: https://habr.com/ru/articles/949268/
Платформа: iOS
👍1
Погружение в JNI: проблемы и решения при взаимодействии между JVM и нативным кодом

Меня зовут Геннадий Денисов, я руковожу одной из команд разработки мобильного Яндекс Браузера для Android. Недавно в рамках одного проекта мы интегрировали С++‑код в мобильное приложение Браузера. В этой статье я поделюсь основными нюансами работы с Java Native Interface (JNI), инструментами для упрощения разработки и подробностями нашего подхода.

Статья: https://habr.com/ru/companies/yandex/articles/948570/
Платформа: Android
👍1
Гайд по File Templates: как шарить шаблоны с однотипным кодом

Расскажу, как можно шарить File Templates для своей команды, чтобы облегчить жизнь другим и сэкономить немного времени. Причем коллегам ничего самостоятельно не придется настраивать: подтянутый из git-а репозиторий с кодом все сделает сам. Эта статья — бонус к трем предыдущим, в которых я рассказывал, как уменьшить написание boilerplate-кода.

Статья: https://habr.com/ru/companies/tbank/articles/949658/
Платформа: Android
👍1
Apple тихо переписывает iOS, и это не Swift или Objective-C

Apple переписывает ключевые части iOS на Rust для обеспечения безопасности и производительности. Это не убивает Swift, но означает, что фундамент Swift меняется. Меньше сбоев, лучшая безопасность и, возможно, начало будущего, основанного на Rust, для разработчиков iOS.

Статья: https://apptractor.ru/info/articles/apple-tiho-perepisyvaet-ios-i-eto-ne-swift-ili-objective-c.html
Платформа: iOS
🤯5👍2🔥1
Valiutchik - курсы обмена валют в Беларуси

Valiutchik - это приложение для Android, помогающее найти лучшие курсы обмена валют в Беларуси. Приложение позволяет быстро загрузить лучшие курсы обмена валют в некоторых городах Беларуси. Нажав на элемент списка, можно найти ближайшие отделения банков с лучшими курсами на карте. Длительное нажатие на карту с валютой позволяет скопировать курс обмена в буфер обмена, например, для вставки в калькулятор. Информация о курсах обмена предоставляется ​​MyFin.

Это небольшой проект, призванный стать полигоном для самых новых и ярких разработок, полностью написан на Kotlin, использует Koin, корутины, чистую архитектуру, Room, AndroidX Benchmark и модульные тесты. Любой вклад приветствуется.

Valiutchik на GitHub: https://github.com/fobo66/valiutchik-android
Платформа: Android
⭐️: 11
👍1👎1