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

Entity It на GitHub: https://github.com/yushman/EntityIt
Платформа: Android
⭐️: 4

Если у вас есть свои библиотеки или открытые проекты, немедля присылайте. Будем публиковать!
Типизированные ошибки (typed throws) в Swift с примерами

Типизированные ошибки (typed throws) появились в Xcode 16 и позволяют определять тип ошибки, которую выбрасывает метод. Вместо того чтобы обрабатывать любую ошибку, вы можете обрабатывать конкретные случаи и получать преимущество от проверки во время компиляции для вновь добавленных экземпляров.

Статья: https://apptractor.ru/info/articles/tipizirovannye-oshibki-typed-throws-v-swift-s-primerami.html
Платформа: iOS
ZLPhotoBrowser - это пикер изображений, подобный Wechat. Поддерживает выбор обычных фотографий, видео, gif и livePhoto. Поддерживает портретный и ландшафтный режимы, редактирования изображений и обрезку видео, темный и светлый режим, настройку шрифтов.

ZLPhotoBrowser на GitHub: https://github.com/longitachi/ZLPhotoBrowser
Платформа: iOS
⭐️: 4.7K
Макросы — напишут код за вас, но есть нюанс…

Макросы — это интересный способ избавиться от шаблонного кода. Могу ли я посоветовать срочно бежать и писать макросы всем? Точно нет. Особенно если никто из команды не знаком с SwiftSyntax.

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

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

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

В общем, при принятии решения стоит ли использовать в проекте макросы (а тем более писать самим) нужно взвешивать все плюсы и минусы относительно потребностей конкретного проекта.

Статья: https://habr.com/ru/companies/kts/articles/826418/
Платформа: iOS
Android-разработчики в 2024 году: какие нужны скилы и как проходит процесс найма

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

Статья: https://habr.com/ru/companies/yandex_praktikum/articles/824672/
Платформа: Android
Интеграция форматирования кода в Android-проекты

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

Статья: https://apptractor.ru/info/articles/integratsiya-formatirovaniya-koda-v-android-proekty.html
Платформа: Android
Android Crypto Samples - коллекция с примерами кода, дополняющими официальную документацию и объясняющими, как правильно реализовать общие криптографические операции на Android. Это различные алгоритмы симметричного и асимметричного шифрования, хеширования, подписи и верификации, проверка подлинности и т.п.

Android Crypto Samples на GitHub: https://github.com/securevale/android-crypto-samples
Платформа: Android
⭐️: 14
Видео и подкасты за неделю @AppFiles

(iOS Ru) Как побеждать в конкурсах от Telegram
(iOS En) SwiftUI Draggable Tab Bar
(iOS En) SwiftUI Re-Orderable Tab bar
(iOS En) SwiftUI Swipe to Hide Header
(iOS En) Mastering Swift Testing: Run Serialized Tests with One Line of Code
(iOS En) Explicit ViewBuilder
(iOS En) My Favorite SwiftUI Updates in iOS 18
(iOS En) Exploring Predictive Code Completion in Xcode 16
(iOS En) Pomodoro Timer App - SwiftUI
(And Ru) Переходишь на Compose? Не спеши!
(And Ru) Как работает ТВ в Android TV?
(And Ru) Нужны ли Android-разработчики на заводе?
(And Ru) Gradle DSL изнутри
(And Ru) Kotlin DSL как единый источник правды для решения многих задач
(And En) Lifecycles, Coroutines and Scopes
(And En) Developer first Gradle builds
(And En) DataFrame: Kotlin's Innovative Approach to Data Structures
(And En) Texts, dates, numbers, currencies, plurals, etc. App internationalization guide
(Crs Ru) Multiplatform UI с Compose
(Crs En) Unit & UI Testing With Compose Multiplatform
(Crs En) Full Guide to Dependency Injection With Koin for Compose Multiplatform
(Crs En) Kotlin Multiplatform Libraries Evolution
(Crs En) React Native & Expo Router Course – Build a Meditation App
(Dev Ru) Чистый код – не значит правильный: clean code, паттерны, лучшие практики
(Dev Ru) Менеджмент — ловушка или лучший карьерный путь для разработчика?
(Dev Ru) Разработка библиотек с использованием подхода Request for Comments
(Dev Ru) Пишем приложение на Ktor
(Dev Ru) Kotlin Script: для кого, зачем и как
(Dev En) AI and Kotlin: A Perfect Mix
(Dev En) Go for Absolute Beginners – Tutorial

Делитесь тем, что вы смотрели!
#ios #android #mobile #video
Адаптируем VoiceOver для людей

Меня зовут Женя Тютюев, я iOS-разработчик в компании 2ГИС. Хочу поделиться, как адаптировал наше приложение под VoiceOver:

• делюсь историей про сдвиг парадигмы и как перешёл из стадии «делать, потому что так Эпл советует» в совершенно новую — «делать для людей».
• как разработал новый вид snapshot-тестирования, чтобы ничего не ломалось при добавлении новых неадаптированных элементов.
• описал несколько нюансов, которые важно учесть в работе: escape, динамический расчёт accessibility, укрупнение элементов.

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

Статья: https://habr.com/ru/companies/2gis/articles/826360/
Платформа: iOS
👍1
DSFDropFilesView - простой класс представления NSView, через которое можно загружать файлы. Поддерживаются Swift, SwiftUI и Objective-C.

DSFDropFilesView на GitHub: https://github.com/dagronf/DSFDropFilesView
Платформа: iOS
⭐️: 24
Принципы SOLID на примере iOS-разработки

Привет, меня зовут Антон, я iOS-разработчик в компании Surf. Все программисты хотят писать красивый, масштабируемый и сопровождаемый код, и мобильщики – не исключение. Как в этом помогут принципы SOLID, и зачем они нужны?

Расскажем и покажем на примерах (куда без этого). Кейсы в статье относятся к iOS-разработке, но они будут полезны для всех разработчиков, независимо от стека.

Статья: https://habr.com/ru/companies/surfstudio/articles/826686/
Платформа: iOS
👍1
Unit-тесты в Android для начинающего разработчика

Меня зовут Александр Чекунков, я — Android‑разработчик в СБЕРе. Занимаюсь разработкой CSI‑опросов в мобильном приложении «Сбер». Я несу ответственность за функционал, который используют бизнес‑команды для оценки удовлетворённости клиентов.

Часто бывает так, что новый сотрудник, приходя на большой проект, совершенно не знаком с таким понятием как unit‑тестирование. Что это? Как это работает? С чего начать? Такие вопросы часто появляются у начинающих разработчиков.

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

Статья: https://habr.com/ru/companies/sberbank/articles/825820/
Платформа: Android
Fig - используйте Google Таблицы в качестве удаленного конфига. Эта библиотека использует неофициальный API Google Таблиц для получения данных, который может перестать работать в любой момент. Лучше всего использовать эту библиотеку только для небольших проектов, где вам нужны быстрые, динамические значения без установки чего-то вроде Firebase.

Fig на GitHub: https://github.com/theapache64/fig
Платформа: Android
⭐️: 115
Поваренная книга SwiftUI: кнопки — Часть 1

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

Статья: https://apptractor.ru/info/articles/povarennaya-kniga-swiftui-knopki-chast-1.html
Платформа: iOS
This media is not supported in your browser
VIEW IN TELEGRAM
Библиотека нашего читателя. Valkyrie - плагин Intellij IDEA/Android Studio для генерации Compose ImageVector из SVG/XML. Удобное форматирование кода для сгенерированной иконки, поддержка перетаскивания внутри IDE.

Valkyrie на GitHub: https://github.com/ComposeGears/Valkyrie
Платформа: Android
⭐️: 16

Если у вас есть библиотеки, открытые или просто интересные пет-проекты, присылайте. Будем публиковать.
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
StreamUI - это библиотека, разработанная для SwiftUI, которая позволяет разработчикам программно создавать динамические видео. Она выходит за рамки традиционных инструментов генерации видео, таких как Remotion, предлагая рендеринг видео в реальном времени и возможности прямой трансляции. Идеально подходит для различных приложений - от безликих шорт-видео на Tiktok/Youtube до прямых трансляций событий и многого другого. StreamUI позволяет создавать видеошаблоны в SwiftUI и рендерить их с помощью динамических входных параметров.

StreamUI на GitHub: https://github.com/StreamUI/StreamUI
Платформа: iOS
⭐️: 119
Постепенный перенос проектов и пакетов на Swift 6

1. Определение изолированной части проекта
2. Поочередное включение новых возможностей Swift 6
3. Включение строгой проверки параллелизма
4. Смена версии языка на Swift 6

Статья: https://apptractor.ru/info/articles/postepennyy-perenos-proektov-i-paketov-na-swift-6.html
Платформа: iOS
Развенчиваем 6 мифов про современную Android-разработку

• Разработка под Android — это не Jetpack Compose
• Инъекция зависимостей — это не использование Hilt
• Jetpack ViewModel не является «ViewModel» MVVM
• Вы можете вызывать репозиторий непосредственно из ViewModel
• Рекомендации Google — это всего лишь «рекомендации Google»
• Вы не являетесь крупной компанией

Статья: https://apptractor.ru/info/articles/razvenchivaem-6-mifov-pro-sovremennuyu-android-razrabotku.html
Платформа: Android
Еще один проект нашего читателя. Colors AI - это бесплатный генератор цветовых схем с открытым исходным кодом и использующий глубокое обучение на основе Colormind и Huemint API. Приложение сделано в шаблоне BLoC с помощью Flutter SDK и доступно для всех основных операционных систем, включая мобильные.

Colors AI на GitHub: https://github.com/tsinis/colors_ai
Платформа: кроссплатформа
⭐️: 117

Если у вас есть библиотеки, открытые или просто интересные пет-проекты, присылайте. Будем публиковать.
3
Strong Skipping Mode — новый способ оптимизации стабильности в Jetpack Compose

Новый strong skipping mode для управления стабильностью классов в Jetpack Compose меняет рекомпозиции в вашем приложении. В этой статье мы расскажем о том, какие случаи он решает за вас, а какие необходимо контролировать вручную. Мы также ответим на часто возникающие вопросы, например, нужно ли по-прежнему помнить о лямбда-функциях, нужны ли неизменяемые коллекции Kotlinx или даже как стабилизировать все классы вашей доменной модели.

Статья: https://apptractor.ru/info/articles/strong-skipping-mode-compose.html
Платформа: Android
UI-киты iOS 18 и iPadOS 18 для Figma

Что нового:

• Переменные цвета для всех системных цветов с light, darkи dark elevated значениями
• Режим переключения между светлыми, темными и тонированными иконками приложений
• Обновленное оформление иконок приложений
• Страница примеров для большинства системных компонентов и опыта
• Новая плавающая панель вкладок iPadOS
• Улучшенная организация свойств экземпляров для более быстрой настройки
• Новые компоненты "Центр управления" и "Экран блокировки" с настраиваемыми элементами управления

Ссылка: https://www.figma.com/community/file/1385659531316001292/ios-18-and-ipados-18
Платформа: iOS