Мобильная разработка за неделю #548 (22 — 28 июля)

В нашей новой еженедельной подборке стенд для UI-тестирования iOS-приложений и реверсинг приложений под Android, Android Studio в вебе и будущее Flutter, результаты опроса разработчиков Stack Overflow 2024, дизайн-тренды 2025, топ быстрорастущих приложений в России в июле и многое другое. Подключайтесь!

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

ivls4tfpot0ijwp6tjfxv1zcxta.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Подсветка элементов онбординга. Spotlight onboarding / Highlight element. SwiftUI iOS15+
• Разворачиваем стенд для UI-тестирования iOS на базе Selenoid
• Как уменьшить расход памяти при загрузке UIImage с диска
• Удобная навигация в SwiftUI для iOS 16 и выше
• Разработка игр под Apple Vision Pro: ARKit, realityKit, Reality Composer Pro
• iOS 18 PHAsset URL из requestAVAsset
• Разбор SwiftUI проекта стартапа с AI на борту
• Вам не нужно хранилище в приложении
• В AltStore PAL появились первые сторонние приложения
• Slack представляет виджеты для iPhone
• Поваренная книга SwiftUI: кнопки — Часть 2
377ae0333d0f4b7b97307c9eea5ee21a.gifAdding values to the SwiftUI environment with Xcode 16«s Entry macro
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring SwiftUI: Make SF Symbols Wiggle Wiggle
377ae0333d0f4b7b97307c9eea5ee21a.gifBest vs. Worst Coding Practices in Swift: 20 Key Examples
377ae0333d0f4b7b97307c9eea5ee21a.gifAsync await in Swift: The Full Toolkit
377ae0333d0f4b7b97307c9eea5ee21a.gifMemory consumption when loading UIImage from disk
377ae0333d0f4b7b97307c9eea5ee21a.gifSwift Enums: Best Practices and Hidden Features
377ae0333d0f4b7b97307c9eea5ee21a.gifSized-to-fit SwiftUI bottom sheet
377ae0333d0f4b7b97307c9eea5ee21a.gifFormatting time in a Text view in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifLeveling Up Your Debugging Skills with LLDB Commands in Xcode
377ae0333d0f4b7b97307c9eea5ee21a.gifTop Interview Questions for Senior iOS Developer in 2024
377ae0333d0f4b7b97307c9eea5ee21a.gifWhat«s New in SF Symbols 6 — WWDC24
377ae0333d0f4b7b97307c9eea5ee21a.gif5 very useful functions from Swift Algorithms
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring Indie Life: Reducing Friction by CI/CD
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Coverflow Carousel
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMy Story & iOS Dev Career Advice
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuilding iOS 18 Photos App UI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngZoom Transitions SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCustom Operators in Swift
96716bcb926741e79bb1c284a88083ca.pngHealthLens — экспорт данных для HealthKit
96716bcb926741e79bb1c284a88083ca.pngSwift Testing Revolutionary — конвертер XCTest в Swift Testing

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Я победил замедление YouTube
• MVI в Eventbrite
• Как публиковать библиотеку в Maven Central Portal в 2024 году
• Разбираемся с новой уязвимостью Android-библиотеки Jetpack Navigation: как открыть любой фрагмент из вашего приложения?
• PinLockSreen на основе KeyStore. Kotlin. Jetpack Compose
• Разбираемся с MavenGate. Настолько ли он страшен на самом деле
• Реверсинг приложений под Android. Ищем уязвимости
• Как устроены аннотации в Kotlin. Часть 2
• Роман Елизаров про Kotlin, корутины и работу в Jetbrains
• Google объединяет 3 команды, чтобы сделать Play Store лучшей платформой для разработчиков
• В Google Play появились «Коллекции» и «Комиксы»
• Epic удаляет Fortnite из Galaxy Store
• Google переносит Android Studio в веб с помощью Project IDX
• Уязвимость в Telegram для Android позволяла скрывать файлы в поддельных видеороликах
• В Google Play начинается большая чистка
377ae0333d0f4b7b97307c9eea5ee21a.gifArchitecture related decisions in Android — Mapping
377ae0333d0f4b7b97307c9eea5ee21a.gifVariance (in & out) in Kotlin Explained
377ae0333d0f4b7b97307c9eea5ee21a.gifHow derivedStateOf works: a deep d (er)ive
377ae0333d0f4b7b97307c9eea5ee21a.gifDon«t Lock the Screen Orientation! Handling Orientation in Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding On-Device Face Recognition In Android
377ae0333d0f4b7b97307c9eea5ee21a.gifContainer Transform in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin sealed class VS sealed interface
377ae0333d0f4b7b97307c9eea5ee21a.gifPublish on Maven Central
377ae0333d0f4b7b97307c9eea5ee21a.gifEnhancing Code Quality with detekt for Static Analysis
377ae0333d0f4b7b97307c9eea5ee21a.gifPlaying with Compose Screenshot testing and Github Action
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin«s: Operator Explained
377ae0333d0f4b7b97307c9eea5ee21a.gifIntroduction of new Dependency Management (Version Control) and Kotlin DSL migration
377ae0333d0f4b7b97307c9eea5ee21a.gifMVI Made Easy: A Beginner«s Guide to MVI with Example and comparison with MVVM
377ae0333d0f4b7b97307c9eea5ee21a.gifBlinkit Interview Experience for SDE — Android Role 2024
377ae0333d0f4b7b97307c9eea5ee21a.gifRoom Tutorial (Part I): Grasping the Fundamentals
377ae0333d0f4b7b97307c9eea5ee21a.gifThe Path from Appium to Kaspresso
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAdvanced layout animations in Compose (Shared elements)
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngRefactoring to Expressive Kotlin
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFrom Zero to Billions: Building a High-Performance Kotlin App in Two Months
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngManaging Complexity With Ktor
96716bcb926741e79bb1c284a88083ca.pngPaperize — смена обоев с Kotlin, Jetpack Compose и Material 3
96716bcb926741e79bb1c284a88083ca.pngNext Player — видеоплеер для Android

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

• Flutter. Стиль кода — это все
• Как работают изоляты в Dart?
• Пишем собственный макрос на Dart 3.5: глубокий разбор
• Стать программистом: не с нуля не до профи (Flutter и не только)
• Полный гайд по тестированию на Flutter. Часть 3: Mocking и Stubbing + Часть 2: Простые модульные тесты
• Flutter Dev Podcast: навигация во Flutter
• Особенности сервиса Яндекс Про и будущее Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifXcode-Kotlin 2.0 Release
377ae0333d0f4b7b97307c9eea5ee21a.gifConvert Your Native Project to Kotlin Multiplatform: Why, When and How
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Create a Search Bar in Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifEnd-to-End Testing in React Native with Maestro: A Comprehensive Guide
377ae0333d0f4b7b97307c9eea5ee21a.gifsetState in Flutter — Exposed!
377ae0333d0f4b7b97307c9eea5ee21a.gifMigrating A Flutter Application From GetIt To Bloc
377ae0333d0f4b7b97307c9eea5ee21a.gifFree Flutter Icons by Hugeicons
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngThe Future of Flutter
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngPermission Handling in Compose Multiplatform
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCreate a Splash Screen in Compose Multiplatform for iOS & Android
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngUniting Native SDKs into Kotlin Multiplatform
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCompose Multiplatform on Mobile at Instabee for Over a Year

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

• Инженеры-программисты не являются (и не должны являться) техниками
• Результаты опроса разработчиков Stack Overflow 2024
• С какими проблемами сталкиваются дизайнеры, делая сервис для арабских пользователей
• Как модульное тестирование сокращает затраты программиста
• Дизайн-тренды 2025
• User-Centered Design (UCD) Process: Полное руководство
• Личный бренд разработчика
• Ход королевы: как российское шахматное приложение покорило мир
377ae0333d0f4b7b97307c9eea5ee21a.gifAudapolis: Edit audio files by word, not waveform
377ae0333d0f4b7b97307c9eea5ee21a.gif18 Ways Businesses are Launching New Products with Speech AI
377ae0333d0f4b7b97307c9eea5ee21a.gifThe Process That Kept Dying
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuilding an Effective Data Product Strategy
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSystem Design Concepts Course and Interview Prep

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

• Топ быстрорастущих приложений в России в июле
• Как управлять вниманием пользователя
• Что такое Web-to-app
377ae0333d0f4b7b97307c9eea5ee21a.gifJapan App Trends 2024 Report
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding an Effective Data Product Strategy

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

• Самопаркующийся авто за 500 строк кода
• История планшетных компьютеров. От древних времен до конца двадцатого века
• Сеть 6G: введение в архитектуру гибридной спутниковой сети
• Mistral выпускает Large 2 как ответ ChatGPT и Llama
• Вышла Llama 3.1, самая большая открытая модель ИИ

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

© Habrahabr.ru