Темы



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

В новой подборке поисковые подсказки на SwiftUI и сравнение Koin и Dagger, асинхронность в iOS и переживания Jetpack ViewModel, Tracer спустя год, пасьянс для забытой периферии, доходы и установки в России в 3 квартале и многое другое. Подключайтесь!

zklofi5isy35rii_tj_o7z1oq0m.png

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

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Делаем поисковые подсказки в SwiftUI
• Используйте транзакции вместо сохранения в SwiftData и Core Data
• Асинхронность в iOS: как ускорить корпоративные приложения и не сломать мозг разработчика
• Как оптимизировали Яндекс Go для отображения 50+ заказов
• Кодогенерация в iOS-разработке
• Антимонопольный регулятор Бразилии снимает ограничения на IAP в Apple
• Финалисты App Store Award 2024
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSyntax Highlighting SwiftUI Code with Swift Syntax
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMy experience of setting up Continuous Delivery with Xcode Cloud for a fresh project
• 377ae0333d0f4b7b97307c9eea5ee21a.gifStop Making Singletons in Swift: A Dependency Injection Guide
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwift TOP 5 Mostly Used Protocols
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI Zoom Navigation Transitions: Add a Touch of Magic to Your App
• 377ae0333d0f4b7b97307c9eea5ee21a.gifImplementing search suggestions in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifGenerating JWT Tokens in Swift for the App Store Connect API
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Sendable in Swift 6
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding the Avatar View from Messages using SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWorking with Natural Language framework
• 377ae0333d0f4b7b97307c9eea5ee21a.gifGetting view size in SwiftUI without GeometryReader
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTesting requirements with #require in Swift Testing
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe power of previews in Xcode
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPreferenceKey in SwiftUI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngInteractive Navigation Gesture | SwiftUI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwift Testing with Test Plans and Floating Point Equality
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuilding a Reading List App
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCreate an Animated Mesh Gradient in SwiftUI
• 96716bcb926741e79bb1c284a88083ca.pngSwiftfulFirestore — работа с Firestore в Swift Concurrency
• 96716bcb926741e79bb1c284a88083ca.pngLazyPager for SwiftUI — просмотрщик изображений

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Как я купил нерабочую подделку iPhone 14 Pro Max за «косарь» и портировал на неё чистый Android
• Сравнение Koin и Dagger Hilt в современной Android-разработке
• Полное руководство по написанию чистого кода Jetpack Compose
• Google готовит новые функции для работы с окнами на рабочем столе Android
• Тестируйте лучше, а не больше: новая документация по стратегиям тестирования
• Плагины — это просто
• Как Jetpack ViewModel переживает поворот экрана
• 377ae0333d0f4b7b97307c9eea5ee21a.gifLet«s look at Bluesky performance on Android
• 377ae0333d0f4b7b97307c9eea5ee21a.gifRandom Musings on the Android 16 Developer Preview 1
• 377ae0333d0f4b7b97307c9eea5ee21a.gifGoogle Maps in Jetpack Compose: Polylines
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPassing Parameters to the ViewModel, the Clean Way
• 377ae0333d0f4b7b97307c9eea5ee21a.gifScrcpy v3.0
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCustom modifiers in Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifExploring Kotlin Coroutines through Output Questions
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDeciding Between Flow and Suspend in Repositories: A Detailed Guide
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhat«s new in Kotlin 2.1.0
• 377ae0333d0f4b7b97307c9eea5ee21a.gifApp incorrectly labeled as malware → lost 30,000+ users
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAdvanced ViewModel injection with DaggerHilt in Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifElevating Your Jetpack Compose UI with GraphicsLayer
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTop 5 Problems Google Leaves to Third-Party Vendors for Android Developers
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngClipping and masking | Jetpack Compose Tips
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngRules about performance tools — Android Developers Backstage
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Observe the REAL Internet Connectivity — Android Studio Kotlin Tutorial
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngThe Ultimate Gradle Kotlin Beginner«s Crash Course For 2025
• 96716bcb926741e79bb1c284a88083ca.pngMaterial Photo Widget — виджет с фотографиями
• 96716bcb926741e79bb1c284a88083ca.pngConstraints Explorer — отладка layout constraints
• 96716bcb926741e79bb1c284a88083ca.pngAkkurate — выразительная валидация на Kotlin

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

• Профилирование Flutter-приложений
• Понимание PWA: выбираем между Flutter и Web, и что ожидают заказчики
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAchieving Type-safe Navigation Results in AndroidX Compose for KMP
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to create a scrollable chart in Compose Multiplatform
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThis is my approach to state management in Flutter
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhy everyone is talking about state management?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDevelop Your Own Crashlytics Library Using Kotlin Multiplatform
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter Riverpod 2.0: Modern State Management and Code Generation
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngLet«s Build a Game with Jetpack Compose! (Kotlin Multiplatform)

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

• Tracer спустя год: новые фичи и возможности инструмента для аналитики ошибок в мобильных приложениях
• Легаси шмегаси
• Создаём пасьянс для забытой периферии Nintendo
• Кросс-платформенное тестирование мобильных приложений: особенности, инструменты и решения
• Всё о новых штрафах за утечки данных. Сколько светит и как защитить своё приложение
• BDUI — это спасение от релизов: «Какие ваши доказательства?»
• Упс, что-то пошло не так. Как UX-редактору написать сообщение об ошибке?
• Дизайн-ревью Яндекс Музыки. Тестировщик сравнивает дизайн макета с тестовой сборкой
• Ускорение разработки продуктов с помощью горизонтальных решений
• Перестаньте использовать Copilot. Вред ИИ для разработчиков
• Топ-5 страхов и проблем ИТ-индустрии — монополизация, ИИ, сокращения, выгорания
• Улучшает ли GitHub Copilot качество кода?
• Google Developer Program становится платной
• Huawei хочет 100,000 приложений для HarmonyOS в течение года
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDemystifying Maestro«s UI Testing Implementation
• 377ae0333d0f4b7b97307c9eea5ee21a.gifNo GPS required: our app can now locate underground trains
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTop 10 Rules of Continuous Integration
• 377ae0333d0f4b7b97307c9eea5ee21a.gifVector Databases Explained Simply
• 377ae0333d0f4b7b97307c9eea5ee21a.gifLights Out: Tools for controlling webcam LED on ThinkPad X230
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngEvent-Driven Architecture Course — NextJS, Clerk, Webhooks

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

• Доходы и установки в России в 3 квартале 2024 года
• Google пытается отменить антимонопольную победу Epic
• Appcharge получает $26 млн на продажу игровой валюты
• Самые скачиваемые и зарабатывающие приложения в мире в октябре 2024
• Геймифицируй это! Или игровые механики в неигровых продуктах
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to catch the Golden Geese of mobile in 2025

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

• Контроль микроклимата в серверной почти на коленке
• Делаю умный дом в бетонной коробке, где (пока) нет даже раковины: начинаю с умных розеток
• Raspberry Pi запускает Compute Module 5 для встраиваемых приложений

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

© Habrahabr.ru