Мобильная разработка за неделю #571 (13 — 19 января)

В новом дайджесте обсуждаем костыли поддержки iOS 15 на SwiftUI и корутины Kotlin, приложения на Go и шаблон на все случаи жизни, 30 уроков от 30 лучших продуктовых лидеров, мест Snap в виде исчезающих фотографий в iMessage, переделку одного устройства и многое другое. Подключайтесь!

6rjk8vzok1m-jaw_vwciotcd47i.jpeg

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

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Костыли, костыли и ещё раз костыли. Или поддержка iOS 15 на SwiftUI
• Кодогенерация: кому нужна и как настроить
• SwiftUI: алхимия приложений — превращаем идеив реальность
• Тактики ускорения билда: матиз, кобальт, камри 3.5
• SwiftUI: Custom TabBar + animation
• Малоизвестные представления SwiftUI
• Множественное число в текстовых представлениях SwiftUI с помощью склонения
• Используем диалог подтверждения в SwiftUI
• Приложения без статуса трейдера будут удаляться из App Store в ЕС
377ae0333d0f4b7b97307c9eea5ee21a.gifAdopting Swift 6 across the app codebase
377ae0333d0f4b7b97307c9eea5ee21a.gifAccessibility That Fits
377ae0333d0f4b7b97307c9eea5ee21a.gifHandle plurals in SwiftUI Text views with inflection
377ae0333d0f4b7b97307c9eea5ee21a.gifSwift 6: Typed Throws
377ae0333d0f4b7b97307c9eea5ee21a.gifUsing Copilot to write a raindrop audio synthesizer using AVAudioEngine
377ae0333d0f4b7b97307c9eea5ee21a.gifLegacy Code Rescue: Taming a Thousand-Line View Controller
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to use cryptographic hash functions in CryptoKit for iOS security
377ae0333d0f4b7b97307c9eea5ee21a.gifCreating a Network Manager in SwiftUI with Clean Code Principles
377ae0333d0f4b7b97307c9eea5ee21a.gifUsing Approval Tests to Bring Legacy Code Under Test
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring Tab View Styles in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI Lists: Present rows of data explained with code examples
377ae0333d0f4b7b97307c9eea5ee21a.gifBringing App Intents to Your SwiftUI App
377ae0333d0f4b7b97307c9eea5ee21a.gifSwift 6.0 Actors: Goodbye Race Conditions!
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI: Zipping Files
377ae0333d0f4b7b97307c9eea5ee21a.gifManaging Singletons in Memory in Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifI«ve been doing this since 2009 and Apple has officially exhausted me
377ae0333d0f4b7b97307c9eea5ee21a.gifDesign an Analytics Manager in iOS
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to organize TabView in SwiftUI using Composable Architecture
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngApple Engineer Shows How To Build a SwiftUI Step Counter
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngComplete Document Scanner App
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngWorking with C and C++ in Apple environment
96716bcb926741e79bb1c284a88083ca.pngsRouting — навигационный фреймворк для SwiftUI
96716bcb926741e79bb1c284a88083ca.pngBlueprint — декларативный UI-конструктор

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Go в GUI, я создал
• Распространенные ошибки в шаблоне UseCase для Android
• Kotlin Coroutines под капотом: отмена корутин
• Корутины в Kotlin: делаем «Optimised Out» переменные видимыми
• Примеры использования File Templates для типовых сценариев, где требуется шаблонный код + Экспорт и импорт File Templates в IDE от Intellij
• Управление настройками с помощью Jetpack DataStore: Простой подход к сохранению данных разных типов
• Переезжаем с фрагментов на (De)compose
• Как устроена разработка в Яндекс.Клавиатуре
• Android + AI. Решаем задачи с умом
• В чем отличие между job и supervisor job — вопросы с собеседований
• Android Automotive получит больше приложений
377ae0333d0f4b7b97307c9eea5ee21a.gifHow modifiers order affects Compose UI appearance
377ae0333d0f4b7b97307c9eea5ee21a.gifFilterChip Dropdown selector in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifTop 3 Most Common Animations You Can Use in Your Jetpack Compose Project
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Dynamic Animated SVGs (with Lottie Dynamic Properties)
377ae0333d0f4b7b97307c9eea5ee21a.gif5 steps to use Paging3 library with Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifHow We Reduced the WINK+ Android App to Less Than 10MB
377ae0333d0f4b7b97307c9eea5ee21a.gifReverse-Engineering the Compose Compiler Plugin: Intercepting the Frontend
377ae0333d0f4b7b97307c9eea5ee21a.gifDiffUtils, Myers» Algorithm and Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifGetting Started with CameraX in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring ViewModel Internals
377ae0333d0f4b7b97307c9eea5ee21a.gifFrom Junior to Senior: Evolving UseCases and ViewModel in Android Clean Architecture
377ae0333d0f4b7b97307c9eea5ee21a.gifIntegrating Google ML Kit for Barcode Scanning in Jetpack Compose Android Apps
377ae0333d0f4b7b97307c9eea5ee21a.gifHandling One-Time Events in Jetpack Compose: Channels vs. SharedFlow
377ae0333d0f4b7b97307c9eea5ee21a.gifTap to focus: Mastering CameraX Transformations in Jetpack Compose
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFunction, KFunction, KCallable, and all those other function types in Kotlin
gtu1iaz0-ajkbqpeq8n6dmql4zq.png5 Things You MUST Do Before Deploying Your App to Google Play (or you«ll regret it)
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngThe Beginner to Industry-Ready Roadmap For Android & KMP Development In 2025
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngWe fixed an inconsistency in Kotlin (non-local break & continue)
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngWhat are all of those Kotlin function types for?
96716bcb926741e79bb1c284a88083ca.pngMMKV — эффективное key-valu хранилище от Tencent
96716bcb926741e79bb1c284a88083ca.pngViTune — музыкальный плеер для Android
96716bcb926741e79bb1c284a88083ca.pngAspecto — идеальная сетка для Jetpack Compos/Multiplatform

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

• CodeStyle на Flutter-проектах: базовые принципы и правила — шаблон на все случаи жизни
• Дружим RabbitMQ и Flutter/Dart
• Альтернатива Firebase Dynamic Links на KMP
377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Scrollable in Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Release Your Flutter App on the Google Play Store
377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Flutter Testing: Integration Tests
377ae0333d0f4b7b97307c9eea5ee21a.gifLogging In Compose Multiplatform
377ae0333d0f4b7b97307c9eea5ee21a.gifIntroducing Mirai — A Server Driven UI framework for Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifMVVM: Officially Recommended by Google for Flutter Development
377ae0333d0f4b7b97307c9eea5ee21a.gif10 Flutter Widgets Probably Haven«t Heard Of (But Should Be Using!)
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter Live Activity: From Development to Testing

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

• Как iPhone заставил UX и интерфейс в авто меняться и почему концерны до сих пор не могут оправиться от этого?
• 30 уроков от 30 лучших продуктовых лидеров
• Как начать тестировать подписки в Google Play и App Store
• Сделай удобно: подборка UI/UX-кейсов из цифровых и нецифровых продуктов
• Основы DevEx: ищем, куда исчезает время программистов
• Заменяем облака домашним сервером — Selfhosting, homelab
• 20% вакансий в Интернете на самом деле существует
• Генеральный директор Sonos Патрик Спенс покидает свой пост после неудачного запуска приложения
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Choose the Right Database in a System Design Interview
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to build an AI side project using AI in 2025
377ae0333d0f4b7b97307c9eea5ee21a.gifBoosting Performance in a Diagramming App with Quadtrees and Binary Search on Path
377ae0333d0f4b7b97307c9eea5ee21a.gifTest-Driven Development with an LLM for Fun and Profit
377ae0333d0f4b7b97307c9eea5ee21a.gifThe documentation problem in development

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

• Маркетологи в мобайле: Иван Останков (Островок)
• Создатель Gas и tbh сделал приложение для исчезающих фотографий в iMessage
• JOY Ads: UGC как система
• Pixelfed — децентрализованная альтернатива Нельзяграм
• Приложения для здорового питания в России 2024
• Самые скачиваемые и зарабатывающие приложения в мире в декабре 2024
• Рынок корпоративных мобильных приложений России. История, участники, тренды
• Gamelight превысила цели по D30 ROAS на 246% для Sunshine Island от Stillfront Group
• В преддверии бана TikTok, количество изучающих китайский в Duolingo выросло на 216%
377ae0333d0f4b7b97307c9eea5ee21a.gifThe price of your product is wrong

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

• Небольшая переделка одного устройства
• Двухкомнатная квартира в новостройке: как сделать ее и красивой, и умной?
• Практическое обучение с подкреплением: от забав с MuJoCo’м до битв на арене

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

© Habrahabr.ru