Темы



Мобильная разработка за неделю #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