Мобильная разработка за неделю #579 (10 — 16 марта)

В новом дайджесте производительный SwiftUI и бесшовное взаимодействие Compose и View, сборка ядра Android и отслеживание угла горизонта, решение задач распознавания, прямые без препятствий, что происходит на рынке разработки, глажка травы и многое другое. Заходите!

ccqspn1zfcrznjmgwu_d6lrbec0.jpeg

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

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Производительный SwiftUI: используем UIKit
• Формализация принципа Open/Closed: как сохранить обратную совместимость с помощью SOLID
• Отслеживание угла горизонта на изображении с помощью фреймворка Vision
• Тактики ускорения билда: матиз, кобальт, камри 3.5
• Эволюция шпионского софта под iOS
• Жизнь iOS разработчика в условиях санкций
• Моменты неотзывчивости iOS-приложений: как найти и исправить
• В AirPods появится живой перевод
• По слухам, в iOS 19 будет новый дизайн
377ae0333d0f4b7b97307c9eea5ee21a.gifPicker in SwiftUI explained with code examples
377ae0333d0f4b7b97307c9eea5ee21a.gifCustomizing modal presentation background and color scheme in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifSwift on Raspberry Pi: Building Natively and Cross Compiling
377ae0333d0f4b7b97307c9eea5ee21a.gifUnderstanding the New Swift 6 Concurrency Features
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI: Connect Two Points with Straight Line Segments + Rounded Corners
377ae0333d0f4b7b97307c9eea5ee21a.gifImproving result builder failures using @available
377ae0333d0f4b7b97307c9eea5ee21a.gifKey Considerations Before Using SwiftData
377ae0333d0f4b7b97307c9eea5ee21a.gifUnderstanding structural identity in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding Filters in SwiftUI with SwiftyFilters
377ae0333d0f4b7b97307c9eea5ee21a.gifKeyPath in Swift
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngiOS Architecture in the Era of SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngPublish Your macOS App Outside the App Store: Notarization, DMG, & Gumroad Guide
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngResponsive Chips Selection — Layout API — Resizable — iOS 16+
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngXcode 16 Debugging Tutorial for Beginners
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMastering Enum-Driven Tab Views in SwiftUI: A Smarter Approach
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFrom Top Bar To Sidebar With The sidebarAdaptable TabView Style
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMore Data, More Drama
96716bcb926741e79bb1c284a88083ca.pngSwiftUIKit — дополнения SwiftUI и Swift
96716bcb926741e79bb1c284a88083ca.pngFeedKit — чтение и генерация RSS, Atom и JSON фидов
96716bcb926741e79bb1c284a88083ca.pngXcore — коллекция расширений и компонентов Swift

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• ServerSocket для IPC в Android и примеры межпроцессного взаимодействия
• Объединяем Compose и View: бесшовное взаимодействие с помощью CompositionLocal
• Сборка ядра Android и модулей aircrack-ng
• 7 мощных возможностей Kotlin, используемых продвинутыми разработчиками
• Шпаргалка: Kotlin suspend функции
• Сравнение Dagger 2, Dagger Hilt и Koin
• Собеседование по Kotlin (все собеседования)
• Ultron — фреймворк для тестирования Android UI и Compose
• Собираем грабли при профилировании Android-приложений
• Google облегчает перенос компьютерных игр на Android
• Как я прошел Android-собеседования в Google, Amazon и Motorola
377ae0333d0f4b7b97307c9eea5ee21a.gifStrong skipping does not fix Kotlin collections in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifComposing with Accessibility in Mind: Because Every User Matters
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Automotive OS Architecture: Definitive Guide
377ae0333d0f4b7b97307c9eea5ee21a.gifDesign with Widget Canonical Layouts
377ae0333d0f4b7b97307c9eea5ee21a.gifBridging Compose and View: Seamless Interop Communication with CompositionLocal
377ae0333d0f4b7b97307c9eea5ee21a.gifUnderstanding Hot and Cold Flows in Kotlin
377ae0333d0f4b7b97307c9eea5ee21a.gifKoin Annotations 2.0 — Release is out!
377ae0333d0f4b7b97307c9eea5ee21a.gif10 Critical Jetpack Compose Mistakes You«re Probably Making (And How to Fix Them)
377ae0333d0f4b7b97307c9eea5ee21a.gifWhy @Binds is faster than @Provides annotation in Dagger/Hilt?
377ae0333d0f4b7b97307c9eea5ee21a.gifUsing the Android Context and Manifest to Unveil the Android System Mechanics (2025 Edition)
377ae0333d0f4b7b97307c9eea5ee21a.gifBiggest Problem with Jetpack Compose: Performance
377ae0333d0f4b7b97307c9eea5ee21a.gifAI Assistant Comes to Kotlin Developers in Android Studio
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin for Seniors: Stop Writing Code, Start Crafting It. 3 tips.
377ae0333d0f4b7b97307c9eea5ee21a.gifUnlock Deeper Health Insights: Health Connect Jetpack SDK is now in beta
377ae0333d0f4b7b97307c9eea5ee21a.gifWriting Carousel Pager Using Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Clean Architecture: Understanding the Domain Layer
377ae0333d0f4b7b97307c9eea5ee21a.gifMan-in-the-Middle (MITM) Attacks in Android Development: How to Secure Your App
377ae0333d0f4b7b97307c9eea5ee21a.gifProtobuf vs JSON for Android
377ae0333d0f4b7b97307c9eea5ee21a.gifJetpack WindowManager 1.4 is stable
377ae0333d0f4b7b97307c9eea5ee21a.gifSnappy, Not Crappy: An Android Health & Performance Journey
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding an Android Smart Gallery App to Organize Images
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngNow in Android: 114 — Google I/O 2025, Android Studio at 10, Android 16 Betas, and more
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngDevelop for Android XR
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngTop 4 Security Best Practices for Your Android App
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFix Kotlin App Issues in Minutes — Stop Debugging the Hard Way!

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

• Решение задач распознавания на Flutter
• Flutter Dev Podcast #50: Flutter на ОС Аврора
• Полный разбор Kotlin Inject — Dagger для Kotlin Multiplatform
• Коллекции во Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifMastering ButtonStyle in Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Eliminate Granny Clicks in Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifIntegrating Cursor with Kotlin Multiplatform (KMP/KMM)
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter. New widget: MeshButton
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Implement a Retry Interceptor in Flutter with Dio
377ae0333d0f4b7b97307c9eea5ee21a.gifRobust Flutter CI/CD: The Local Side with Fastlane
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngA Pragmatic approach to use Pattern Matching and Records in Flutter and Dart
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to manage global app events effectively on your Flutter app
96716bcb926741e79bb1c284a88083ca.pngKMP Liquid Search — анимированная поисковая строка
96716bcb926741e79bb1c284a88083ca.pngCZAN — дизайн-система для Compose Multiplatform

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

• Прямая без препятствий. От чего и зачем нужно защищать мобильные приложения
• TutOn: Нежданное путешествие, или как мы в 11 классе сделали мобильное приложение для помощи учителю
• Мобильная разработка: что происходит на рынке и что важно знать в 2025 году
• Путь UX-исследователя — эмпатия vs аналитика, поиск респондентов и происшествия на интервью
• От Junior до Senior: требования к грейдам и здоровье как скилл
• Как проводить собеседования интересно и продуктивно
• Зачем программисту знать лямбда исчисление
• Мок интервью на позицию СТО
• Публичное собеседование по System Design
• Мобильная инфраструктура. Взгляд изнутри
377ae0333d0f4b7b97307c9eea5ee21a.gifA software architecture reading list
377ae0333d0f4b7b97307c9eea5ee21a.gifSupercharging Discord Mobile: Our Journey to a Faster App
377ae0333d0f4b7b97307c9eea5ee21a.gifForcing AI on developers is a bad idea that is going to happen

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

• Об «умных»‎ молотках и навязчивых приложениях
• Skich запускает альтернативный магазин приложений для пользователей iOS в ЕС
• Короткометражные драмы отбирают пользователей у большого стриминга
• Самописная платформа для A/B-тестирования Trisigma: что она умеет и какую пользу способна принести бизнесу
• Разработчик Pokémon Go компания Niantic продаст игровой бизнес Scopely
• От legacy к успеху: как мы переработали главную страницу приложения М2 и увеличили MAU
• Как приложение «Погладь траву» собрало 30К установок и попало в топ App Store

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

• Градиентный бустинг для чайников
• Практическое руководство по выбору между ChatGPT, Claude, Gemini, Grok и Perplexity
• Тёмный лес разработки для нестандартных устройств: как войти и не заблудиться
• На Hugging Face открылся курс по ИИ-агентам
• OpenAI запустила API для создания автономных агентов и SDK для их оркестровки
• Глобальные поставки смарт-часов в 2024 году впервые снизились

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

© Habrahabr.ru