Мобильная разработка за неделю #565 (18 — 24 ноября)

В новом дайджесте реверс-инжиниринг новой функции iOS Inactivity Reboot и поиск Золотого пути к устойчивой Android-разработке, шапочный разбор с CoordinatorLayout и взрослая анатомия крэшей на iOS, приложения для HarmonyOS Next, лучший квартал экономики приложений, большая битва платформ и многое другое. Подключайтесь!

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

dcgpansrcjeisrhzavl2dkb1ubc.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Реверс-инжиниринг новой функции iOS Inactivity Reboot
• Исследуем интерактивный Bottom Sheet в SwiftUI
• Об анатомии крэшей на iOS «по-взрослому»
• Apple убивает Swift
• Дебаг на максимум: секретные настройки Xcode, которые должен знать каждый разработчик
• Портал, манулы и мячи: опыт разработки для Apple Vision Pro. Часть 1
• Дейтинг, Swift и Формула-1: от первых шагов в IT до победы в хакатоне
377ae0333d0f4b7b97307c9eea5ee21a.gifiOS разработка с нуля
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring Apple Intelligence: Writing Tools
377ae0333d0f4b7b97307c9eea5ee21a.gifMastering TextEditor in SwiftUI: Features, Limitations, and Tips
377ae0333d0f4b7b97307c9eea5ee21a.gifCreating a macOS Screensaver in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifMap Models Made Easy
377ae0333d0f4b7b97307c9eea5ee21a.gifConcurrency in Swift 6
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to use a Connectable publisher in Combine
377ae0333d0f4b7b97307c9eea5ee21a.gifProper Navigation in SwiftUI with Coordinators
377ae0333d0f4b7b97307c9eea5ee21a.gifStatic, Dynamic, Mergeable, oh, my!
377ae0333d0f4b7b97307c9eea5ee21a.gifSwift 6 suitable notification observers in iOS
377ae0333d0f4b7b97307c9eea5ee21a.gifUsing Transactions Instead of Save in SwiftData and Core Data
377ae0333d0f4b7b97307c9eea5ee21a.gifFrom Noida to the USA: An iOS Developer«s Journey
377ae0333d0f4b7b97307c9eea5ee21a.gifDetecting faces in images with the Vision framework
377ae0333d0f4b7b97307c9eea5ee21a.gifOptimizing compilation and test runs with Xcode projects
377ae0333d0f4b7b97307c9eea5ee21a.gifGetting consistent temperature preferences on iOS
377ae0333d0f4b7b97307c9eea5ee21a.gifAsserting state with #expect in Swift Testing
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngDisintegration Effect (Thanos Snap Effect) | SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngRecreating Mail App«s Tab bar | SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFix iOS 18 Gesture Problems With ScrollViews | SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to save data to local storage — iOS File System and Sandboxing
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngApple«s Official Method to Learn Swift and iOS
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Tutorial: Build a Real App! Payment Calculator
96716bcb926741e79bb1c284a88083ca.pngRichEditorSwiftUI — WYSIWYG редактор для SwiftUI
96716bcb926741e79bb1c284a88083ca.pngRevertible — версионирования состояний для замены UndoManager
96716bcb926741e79bb1c284a88083ca.pngSwift PNG — декодирование, проверка, редактирование и кодирование PNG

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Поиск нашего Золотого пути к устойчивой Android-разработке
• Работа с CoordinatorLayout: шапочный разбор
• Вышла Developer Preview версия Android 16
• Избавляемся от Android в api-модулях
• Пишем Android приложение для фильтрации спам-звонков
• Кроссплатформенная архитектура ядра приложения. Простая. Линейная. Масштабируемая
• Такие разные Android AppLinks, WebLinks, DeepLinks. Разбираемся и пытаемся сломать
• Code Review: вы не поверите, насколько распространены эти ошибки в коде Android-проектов
• Google отменил выпуск Pixel Tablet 2
• Микрооптимизация, которая вам никогда не понадобится
• Google замещает ChromeOS на Android, чтобы конкурировать с iPad
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Interview Series 2024 — Part 1 (Android basics)
377ae0333d0f4b7b97307c9eea5ee21a.gifA Curious Case of Mistake\n Identity: How Lambdas Break Data Class Hashing
377ae0333d0f4b7b97307c9eea5ee21a.gifNot a Phase — Text with Compose and Canvas
377ae0333d0f4b7b97307c9eea5ee21a.gifA Micro-optimization You Will Never Need
377ae0333d0f4b7b97307c9eea5ee21a.gifHow I Passed the Google Android Engineer Hiring Assessment: My Journey
377ae0333d0f4b7b97307c9eea5ee21a.gifDon«t use Kotlin«s removeFirst () and removeLast () when using compileSdk 35
377ae0333d0f4b7b97307c9eea5ee21a.gifA Comprehensive Guide to ADB (Android Debug Bridge)
377ae0333d0f4b7b97307c9eea5ee21a.gifSystem Design of Netflix Android App: A Detailed Breakdown
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Studio Ladybug Feature Drop
377ae0333d0f4b7b97307c9eea5ee21a.gifFinding Our Golden Path to Sustainable Android Development
377ae0333d0f4b7b97307c9eea5ee21a.gifBenchmark Insights: Direct State Propagation vs. Lambda-based State in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin Platform Types will break your apps
377ae0333d0f4b7b97307c9eea5ee21a.gifIntroducing Restore Credentials: Effortless account restoration for Android apps
377ae0333d0f4b7b97307c9eea5ee21a.gifTest smarter, not harder: new testing strategies documentation
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngGraphics layers | Jetpack Compose Tips
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngOpen Health Stack
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Deserialize Inconsistent JSON Data With a Custom Kotlinx Serializer
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAnonymous Functions Aren«t Lambdas
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAnimating Your World with Doris Liu — Dive into Jetpack Compose Animations
96716bcb926741e79bb1c284a88083ca.pngFocus Launcher — минималистичный лаунчер для Android
96716bcb926741e79bb1c284a88083ca.pngComposable Screens — примеры экранов на Compose

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

• Кроссплатформа, зови меня победителем
• Стили, темы и адаптивная верстка в React Native
377ae0333d0f4b7b97307c9eea5ee21a.gifA Developer«s Roadmap to Mastering Kotlin Multiplatform
377ae0333d0f4b7b97307c9eea5ee21a.gifIntroducing Native Integrations for Gravatar Mobile SDK
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter Openworld Gaming Engine
377ae0333d0f4b7b97307c9eea5ee21a.gifWriting iOS code in Kotlin Multiplatform
377ae0333d0f4b7b97307c9eea5ee21a.gifAdd React Native to the Signal open source app
377ae0333d0f4b7b97307c9eea5ee21a.gifState Management in Flutter with Provider
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter Möbius Strip
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter web loading screen
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuilding a Clean, Multi-Module Application with Compose Multiplatform
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngThe Compose Multiplatform Crash Course for 2025 — Build a Clean Code Book App
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngPlatform Integrations With Russel Wolf
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFrom Sprite Sheets to Stunning Animations in Jetpack Compose! KMP Library
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuilding a Clean, Multi-Module Application with Compose Multiplatform

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

• Huawei уходит от Android. Придётся ли бизнесу делать приложения для HarmonyOS Next
• Selenium с Robot Framework — тест пользовательского интерфейса
• Подборка книг для мобильных разработчиков: от начинающего до продвинутого уровня
• Сложный интерфейс: Рисуем состояния экрана без помощи системного аналитика
• iOS vs Android: большая битва платформ — что лучше для разработчика, бизнеса и простого пользователя
• Всё о лицензиях библиотек, что необходимо знать разработчику
• Niantic использует данные игроков для создания «большой геопространственной модели»
• Минюст заставит Google продать Chrome, чтобы разрушить монополию на поиск
377ae0333d0f4b7b97307c9eea5ee21a.gifWhy Years of Experience Don«t Matter — How to Keep Your Skills Relevant in Tech
377ae0333d0f4b7b97307c9eea5ee21a.gifSimple Time Management Hacks for Software Developers
377ae0333d0f4b7b97307c9eea5ee21a.gifSocratic Questioning — «Meetings are a waste of time»
377ae0333d0f4b7b97307c9eea5ee21a.gifPlayground Wisdom: Threads Beat Async/Await

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

• Рынок приложений в 3 квартале 2024 — новый рекорд потребительских расходов
• Статистика: доходы AFK Journey
• Apple начала продавать рекламу в Apple News
• Лучшие приложения и игры в Google Play 2024
• Что произойдет, если удвоить цену на приложение?

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

• Самодельная платформа для робототехники из бюджетного смартфона
• Пишем свою Diffusion модель с нуля
• Реализация подобия Apple Vision Pro
• Первое «умное» кольцо Casio повторяет классические часы

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

© Habrahabr.ru