AppFiles - Mobile Development
2.11K subscribers
2.69K photos
38 videos
10 files
3.61K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Топ-10 вопросов о корутинах 2024

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

1. Что такое корутины в Kotlin?
2. Как определить корутину в Kotlin?
3. Как запустить корутину в Kotlin?
4. Как обрабатывать асинхронные операции с помощью корутин?
5. В чем разница между launch и async в корутинах Kotlin?
6. Как обрабатывать исключения в корутинах Kotlin?
7. Что такое контекст корутины (context) и диспетчер (dispatcher) в Kotlin?
8. Как отменить корутину в Kotlin?
9. Как обрабатывать структурированный параллелизм в Kotlin?
10. Как использовать корутины в Android?

Статья: https://apptractor.ru/info/articles/top-10-voprosov-o-korutinah-2024.html
Платформа: Android
Scroll Block - это открытое приложение, которое поможет вам прекратить бесконечно прокручивать социальные сети и взять под контроль свои привычки, повысить продуктивность. Оно также предоставляет аналитику, чтобы помочь вам понять, как вы используете смартфон. Сделано на 100.0% Kotlin, MVVM и Jetpack Compose.

Scroll Block на GitHub: https://github.com/vishal2376/scroll-block
Платформа: Android
⭐️: 62
Инструменты Android-разработчика

Меня зовут Симонова Анастасия и я Android‑разработчик в команде мобильного приложения Домклик. Разработка мобильных приложений для Android — это увлекательный, но зачастую трудоёмкий процесс. Успех вашего проекта во многом зависит от эффективности используемых инструментов и рабочих процессов. Как разработчик, я знаю, насколько важно иметь под рукой правильный набор инструментов, которые помогают повышать продуктивность, улучшать качество кода и ускорять процесс разработки.

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

Статья: https://habr.com/ru/companies/domclick/articles/821837/
Платформа: Android
Использование TextRenderer для создания выделенного текста

TextRenderer — это новый протокол, представленный на WWDC 2024, который позволяет нам улучшить отображение текста в SwiftUI. В этой небольшой заметке я хочу показать, как создать представление, позволяющее выделять определенные части заданной строки. Раньше для этого в основном использовалась NSAttributedString, но с TextRenderer появилась возможность делать то же самое в чистом SwiftUI.

Статья: https://apptractor.ru/info/articles/ispolzovanie-textrenderer-dlya-sozdaniya-vydelennogo-teksta.html
Платформа: iOS
PeopleInSpace - проект Kotlin Multiplatform с SwiftUI, Jetpack Compose, Compose для Wear OS, Compose для декстопов, Compose для Web и клиентами Kotlin/JS + React вместе с бэкендом на Ktor. В настоящее время работает на следующих платформах:

• Android (Jetpack Compose)
• Android App Widget (Compose based Glance API)
• Wear OS (Compose для Wear OS)
• iOS (SwiftUI)
• Виджет приложений для iOS (SwiftUI)
• watchOS (SwiftUI)
• macOS (SwiftUI)
• Swift Executable Package
• Десктоп (Compose for Desktop)
• Web (Compose for Web на основе Wasm)
• JVM (небольшой сервис Ktor + Main.kt в общем модуле)

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

PeopleInSpace на GitHub: https://github.com/joreilly/PeopleInSpace
Платформа: Kotlin Multiplatform/кроссплатформа
⭐️: 2.8K
Как мы победили техдолг в RuStore

За последние два года наш проект достиг впечатляющих результатов: более 50 миллионов установок, около 40 тысяч приложений и более 10 тысяч разработчиков.

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

Статья: https://habr.com/ru/companies/vk/articles/824346/
Платформа: Android
🤡2
Как я участвовал в iOS Widget Challenge и что из этого вышло

Я думаю, что это прикольная идея — дизайнить что-то каждый день, так как это позволяет оставаться в тонусе, а продуктовому дизайнеру, как мне кажется, это нужно.

Статья: https://habr.com/ru/articles/824872/
Платформа: дизайн и прототипирование
Low performer в Android 2024

Впечатления от поиска работы в 2024 году, могут быть выражены словами одной компании с буквой Я в названии: «Вы очень классный кандидат, поэтому мы решили не продолжать общение с вами».

Статья: https://habr.com/ru/articles/824310/
Платформа: Android/работа
Почему паттерн Синглтон небезопасен в iOS-разработке

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

1. Глобальное состояние и тесная связь
2. Отсутствие четкого управления жизненным циклом
3. Проблемы с параллелизмом
4. Трудности тестирования
5. Скрытые зависимости

Статья: https://apptractor.ru/info/articles/pochemu-pattern-singlton-nebezopasen-v-ios-razrabotke.html
Платформа: iOS
Aptabase - аналитика для приложений. Это альтернатива Firebase/Google Analytics с открытым исходным кодом, специально созданная для мобильных, десктопных и веб-приложений.

Что в ней есть:

📱 Большое количество SDK: Неважно, какой фреймворк или язык вы используете, для вас есть SDK. Swift, React Native, Flutter, Electron, Kotlin и многие другие.

😇 Конфиденциальность на первом месте: Aptabase уделяет первостепенное внимание конфиденциальности пользователей и собирает минимальное количество данных об использовании. Аналитика фокусируется на мониторинге сессий, полностью соблюдая требования GDPR, CCPA и PECR.

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

💯 Открытый исходный код: Исходный код на 100% открыт. В нем нет ничего скрытого. Весь серверный код и SDK доступны вам для ознакомления и внесения своего вклада.

Aptabase на GitHub: https://github.com/aptabase/aptabase
Платформа: аналитика
⭐️: 751
Видео и подкасты за неделю @AppFiles

(iOS Ru) А так ли нужны акторы в Swift Concurrency?
(iOS Ru) Swift 5.9: разбираем интероп и «женим» с С++
(iOS Ru) Реактивный Swift Concurrency
(iOS En) SwiftUI Custom Time Picker Like Apple Timer App
(iOS En) iOS 18 TextField Selection API - SwiftUI
(iOS En) Xcode 16 Navigation Shortcuts in 12 Minutes
(And Ru) Как запускать задачи в фоне на Android. РАЗБОР
(And Ru) Эволюция Android тестов с Marathon Test Runner
(And En) Now in Android: 108 - Android 15 Beta 3, Google AI Studio, Gemini in Android Studio, and more
(And En) Compose UI for... a Light Switch
(And En) Write your own Kotlin lint checks
(And En) Tap it! Shake it! Fling it! Sheep it! - The Compose Gesture Animations Dance
(And En) Animations with Jetpack Compose
(And En) 7 Features in Kotlin's Standard Library that You Might Have Overlooked
(Crs En) How to Share Resources in Compose Multiplatform
(Crs En) Expect/Actual in Kotlin Multiplatform
(Crs En) Kotlin Multiplatform Alchemy: Making Gold out of Your Swift Interop
(Dev Ru) Все софт скиллы — про преодоление страха и силу воли
(Dev Ru) Что дальше после разработчика в Google
(Dsg Ru) Роль дизайнера в проекте

Посоветуйте в комментариях интересные каналы по мобильной или не очень разработке?
#ios #android #mobile #video
1
XCStrings Tool - плагин для генерации констант Swift для каталогов строк и других локализованных строковых ресурсов.

Жесткое кодирование локализованных строк в коде и автоматическое извлечение их компилятором в каталог строк (или старые файлы .strings) отлично работает в небольших проектах, но со временем вы часто обнаруживаете, что такой подход не очень хорошо масштабируется.

Как правило, вы оказываетесь в проигрыше либо по качеству кода, либо по комментариям переводчика, либо по избыточному шаблонному коду, поскольку приходится определять собственные константы, но так быть не должно!

Инструмент XCStrings Tool призван расширить возможности локализации так, чтобы вам не пришлось ничем жертвовать. Для этого он использует ваш каталог строк в качестве источника для генерации элегантного Swift-кода, на который вы можете ссылаться непосредственно во всем вашем проекте.

XCStrings Tool на GitHub: https://github.com/liamnichols/xcstrings-tool
Платформа: iOS
⭐️: 143
Мне кажется, или SwiftUI еще не готов к проду? - обсуждение на Reddit

У меня есть приложение, написанное исключительно на SwiftUI, которое продается в App Store уже 2.5 года. По мере того как мои пользователи хранят в приложении все больше данных, а приложение становится все сложнее и требовательнее, я чувствую, что SwiftUI по-прежнему сильно не хватает в различных областях.

Я не говорю о старых версиях SwiftUI. Я имею ввиду современные версии SwiftUI от iOS 16+, хотя на данный момент SwiftUI уже 5 лет.

Вот некоторые недостатки, которые я заметил за эти годы.

Статья: https://apptractor.ru/info/articles/mne-kazhetsya-ili-swiftui-esche-ne-gotov-k-produ-obsuzhdenie-na-reddit.html
Платформа: iOS
Как мы создали свой инструмент для доставки сборок Android-приложений

Меня зовут Данил Киселев, я Android-разработчик в AGIMA. В этой статье расскажу, как мы реализовали собственный инструмент для доставки сборок Android-приложений. Цель статьи — сэкономить время команд, которые занимаются разработкой Android-проектов и у которых пока нет подобного решения. Также к статье я прикрепил репозиторий с кодом проекта. Вы можете использовать его как стартовую версию и дорабатывать под свои нужды.

Статья: https://habr.com/ru/companies/agima/articles/824446/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Dropdown - мощное и настраиваемое выпадающее меню на Compose Multiplatform с многими уровнями и анимацией.

Dropdown на GitHub: https://github.com/AndroidPoet/Dropdown
Платформа: Android/кроссплатформа
⭐️: 326
Настраиваем интерфейс Android-приложения с помощью тем

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

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

Статья: https://apptractor.ru/info/articles/nastraivaem-interfeys-android-prilozheniya-s-pomoschyu-tem.html
Платформа: Android
Маппинг данных в Kotlin

В каждом проекте наступает момент, когда вам нужно отобразить данные из одного класса в другой. Особенно при работе в чистой архитектуре с отдельными моделями для слоев app и data. Давайте рассмотрим несколько способов отображения моделей в Kotlin и их отличия.

Статья: https://apptractor.ru/info/articles/mapping-dannyh-v-kotlin.html
Платформа: Android
В дополнение ко вчерашней статье про маппинг данных, вот библиотекам нашего читателя. 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