Мобильная разработка за неделю #545 (1 — 7 июля)

В новом дайджесте макросы и типизированные ошибки, форматирование кода и Unit-тесты, «железо» для Android Studio, переход на docs as code, возвращение Myspace для Поколения Z, AirPods с камерами и многое другое. Подключайтесь!

Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

cjwfocdp-borw9lqq641s0wol8c.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Макросы — напишут код за вас, но есть нюанс…
• Типизированные ошибки (typed throws) в Swift с примерами
• Мне кажется, или SwiftUI еще не готов к проду? — обсуждение на Reddit
• Адаптируем VoiceOver для людей
• Принципы SOLID на примере iOS-разработки
• Как побеждать в конкурсах от Telegram
• Уязвимости в CocoaPods позволяли манипулировать библиотеками
377ae0333d0f4b7b97307c9eea5ee21a.gifMixing colors in SwiftUI and Xcode 16
377ae0333d0f4b7b97307c9eea5ee21a.gifDisplaying tips based on parameters and events with TipKit
377ae0333d0f4b7b97307c9eea5ee21a.gifBuild a Jenga game in Vision OS
377ae0333d0f4b7b97307c9eea5ee21a.gifAdAttributionKit: What subscription apps need to know
377ae0333d0f4b7b97307c9eea5ee21a.gifConsolidated ViewState
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI and Accessibility: Creating Inclusive iOS Applications (eBook)
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring the Navigation Split View
377ae0333d0f4b7b97307c9eea5ee21a.gifMastering the Swift Testing Framework
377ae0333d0f4b7b97307c9eea5ee21a.gifMastering ScrollView in SwiftUI. Scroll Phases
377ae0333d0f4b7b97307c9eea5ee21a.gifAdvanced Async Sequences in Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifSwift 6: Incrementally migrate your Xcode projects and packages
377ae0333d0f4b7b97307c9eea5ee21a.gifEvolution of SDUI in iOS App development
377ae0333d0f4b7b97307c9eea5ee21a.gifAsyncStream and AsyncSequence for Swift Concurrency
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Draggable Tab Bar
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Re-Orderable Tab bar
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Swipe to Hide Header
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMastering Swift Testing: Run Serialized Tests with One Line of Code
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngExplicit ViewBuilder
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMy Favorite SwiftUI Updates in iOS 18
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngExploring Predictive Code Completion in Xcode 16
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngPomodoro Timer App — SwiftUI
96716bcb926741e79bb1c284a88083ca.pngZLPhotoBrowser — фотопикер в стиле Wechat
96716bcb926741e79bb1c284a88083ca.pngXCStrings Tool — константы для строк локализации

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Интеграция форматирования кода в Android-проекты
• Unit-тесты в Android для начинающего разработчика
• Маппинг данных в Kotlin
• Как преодолеть сложности прохождения ревью Google Play в условиях санкций
• Android-разработчики в 2024 году: какие нужны скилы и как проходит процесс найма
• Как я перестал волноваться и полюбил ошибки в корутинах: поймай меня если сможешь
• «Железо» для Android Studio (gradle-сборка) в 2024 году
• Переходишь на Compose? Не спеши!
• Как работает ТВ в Android TV?
• Нужны ли Android-разработчики на заводе?
• Gradle DSL изнутри
• Kotlin DSL как единый источник правды для решения многих задач
377ae0333d0f4b7b97307c9eea5ee21a.gifMastering SDUI: A Deep Dive into Server-Driven UI
377ae0333d0f4b7b97307c9eea5ee21a.gifMigrating from Play Core Library
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Studio — Show Color and Icon Previews in Autocompletion
377ae0333d0f4b7b97307c9eea5ee21a.gifPinterest-Inspired Android UI Development With Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifHow LiveData Updates 100 Observers in Android
377ae0333d0f4b7b97307c9eea5ee21a.gifWhen should you use StateFlow over LiveData in Android development?
377ae0333d0f4b7b97307c9eea5ee21a.gifUnderstanding ViewModel Persistence During Configuration and Screen Rotation
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Adventure: Flow of Views to Composable Flow
377ae0333d0f4b7b97307c9eea5ee21a.gifStop Using the Wrong Loop! From for to onEach: Ultimate Guide to Kotlin Loops
377ae0333d0f4b7b97307c9eea5ee21a.gifRemote Config with Google Sheets is Crazy!
377ae0333d0f4b7b97307c9eea5ee21a.gifCancellation in Kotlin Coroutines
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Studio: debugging is a kind of hell for years and years
377ae0333d0f4b7b97307c9eea5ee21a.gifOn-Device Machine Learning with TensorFlow Lite
377ae0333d0f4b7b97307c9eea5ee21a.gifComplete Guide to Ace an Android Developer Interview
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngВсе видео droidcon Italy 2023
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngLifecycles, Coroutines and Scopes
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngDeveloper first Gradle builds
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngDataFrame: Kotlin«s Innovative Approach to Data Structures
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngTexts, dates, numbers, currencies, plurals, etc. App internationalization guide
96716bcb926741e79bb1c284a88083ca.pngAndroid Crypto Samples — примеры криптографии
96716bcb926741e79bb1c284a88083ca.pngEntity It — генератор Entity классов

malx8hbgozt6lee8rmxmg96_s6a.pngКроссплатформа

• Road to Flutter — анализ опыта миграции с React Native
• Widget тесты с помощью ApprovalTests
• Multiplatform UI с Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifEnhancing Flutter apps: Implementing unique charts
377ae0333d0f4b7b97307c9eea5ee21a.gifXamarin alternatives for cross-platform mobile development
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring the Viability of Cross-Platform UI Development with Compose Multiplatform
377ae0333d0f4b7b97307c9eea5ee21a.gifHow we built it: Creating the I/O Crossword puzzle, powered by AI
377ae0333d0f4b7b97307c9eea5ee21a.gifCreate PDF file in your app
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring Hidden Treasures in Flutter: Lesser-Known Widgets Unveiled
377ae0333d0f4b7b97307c9eea5ee21a.gifSimplify Network Management with CMPConnectivityMonitor in Compose Multiplatform
377ae0333d0f4b7b97307c9eea5ee21a.gifUnderstanding Concurrency in Flutter
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngUnit & UI Testing With Compose Multiplatform
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFull Guide to Dependency Injection With Koin for Compose Multiplatform
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKotlin Multiplatform Libraries Evolution
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngReact Native & Expo Router Course — Build a Meditation App
96716bcb926741e79bb1c284a88083ca.pngDropdown — выпадающее меню на Compose Multiplatform

7081c634ec176ab6b953d9d19e82a09a.pngРазработка

• Как мы в RuStore на docs as code переходили
• Получение D-U-N-S номера для мобильных разработчиков
• Работа над ошибками: как мы сделали приложение World Class удобнее
• Защита персональных данных в мобильных приложениях: как не нарушить закон
• Генеративный ИИ появился в сервисе VK для сбора и анализа ошибок в приложениях
• Самые высокооплачиваемые вакансии июня в сфере разработки приложений
• Чистый код — не значит правильный: clean code, паттерны, лучшие практики
• Менеджмент — ловушка или лучший карьерный путь для разработчика?
• Разработка библиотек с использованием подхода Request for Comments
• Пишем приложение на Ktor
• Kotlin Script: для кого, зачем и как
377ae0333d0f4b7b97307c9eea5ee21a.gifHow Google migrated billions of lines of code from Perforce to Piper
377ae0333d0f4b7b97307c9eea5ee21a.gifDeveloper workflow tips no one tells you about
377ae0333d0f4b7b97307c9eea5ee21a.gifThe gifts of 40
377ae0333d0f4b7b97307c9eea5ee21a.gifMy programming beliefs as of July 2024
377ae0333d0f4b7b97307c9eea5ee21a.gifSolving a math problem with planner programming
377ae0333d0f4b7b97307c9eea5ee21a.gifShould you learn C to «learn how the computer works»?
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngGo for Absolute Beginners — Tutorial

509dc9bde69347ecbe0c21ff2973d7e7.jpgАналитика, маркетинг и монетизация

• Социальная сеть noplace, смесь Twitter и Myspace для Поколения Z, заняла первое место в App Store
• Fortnite и Epic Games Store запускаются на iOS в Европе
• AAA-игры не пользуются спросом на iOS
• Деньги из космоса. Как приложения зарабатывают $1 МЛН в месяц на гороскопах

8538129f5e7b404a720121cb9c3814db.jpgAI, Устройства, IoT

• OrangePi AiPro — гайд и обзор
• У вас новый ремонт? Лучше! Рисунок нового ремонта. Как мы из Stable Diffusion сделали дизайнера интерьеров
• Интернет вещей с микрокомпьютером Repka Pi
• Figma отключит ИИ-функцию, которая копирует дизайн других приложений
• Apple выпустит AirPods с камерами
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAI and Kotlin: A Perfect Mix

← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

© Habrahabr.ru