Мобильная разработка за неделю #554 (2 — 8 сентября)

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

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

lzu0npdwhgx6oad4okrcfkzyzwy.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Все, что вы хотели знать о флагах в эмодзи (но не знали, что вам это нужно)
• Как я решал задачу получения доступа к данным банковских приложений на iOS
• Дружим iPhone и ESP32. Часть 1. ESP Arduino Core
• Как встроить распознавание звуков в ваше iOS приложение на Swift с использованием SoundAnalysis
• Время сборки и верификация модулей
• Поваренная книга SwiftUI: списки и навигация — Часть 1
• Я получил новый iPhone, но мой аккаунт в социальных сетях заблокирован
• Apple забанила аккаунт компании победителя WWDC
377ae0333d0f4b7b97307c9eea5ee21a.gifТемная сторона однонаправленных архитектур Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifJavaScript to Swift and back: Bridging location services in WKWebView
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftData«s new Index and Unique macros
377ae0333d0f4b7b97307c9eea5ee21a.gifElevate Your Testing Game with Swift Testing
377ae0333d0f4b7b97307c9eea5ee21a.gifLimit Swift Concurrency«s cooperative pool
377ae0333d0f4b7b97307c9eea5ee21a.gifCustom hover effects in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifBackport SwiftUI modifiers
377ae0333d0f4b7b97307c9eea5ee21a.gifHiding A SwiftUI View From Switch Control
377ae0333d0f4b7b97307c9eea5ee21a.gifAnimating SF Symbols on iOS 18
377ae0333d0f4b7b97307c9eea5ee21a.gifThe AirDrop Conundrum: Passing Custom Models From and To Your App
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI Modifiers Deep Dive: containerRelativeFrame
377ae0333d0f4b7b97307c9eea5ee21a.gifHow-to: Symbolicate MetricKit Crashdiagnostics
377ae0333d0f4b7b97307c9eea5ee21a.gifWalmart Software Engineer III — IOS (IN3) My Interview Experience
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Custom Popups — iOS 17 & 18
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI TextRenderer
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Reorderable Scroll View — Custom Drag & Drop With Scroll Detection — iOS 18
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCreate Modular iOS Apps with Swift Packages: Step-by-Step Guide!
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI — Reorder a List (2 Ways)
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFix This Problem with SwiftUI Lists
96716bcb926741e79bb1c284a88083ca.pngVerge — надежный фреймворк управления состоянием
96716bcb926741e79bb1c284a88083ca.pngSwift AST Explorer — визуализация абстрактного синтаксического дерева
96716bcb926741e79bb1c284a88083ca.pngSSNeumorphicView — неоморфизм для UIKit и SwiftUI

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Интересные приёмы, взятые из исходников Android
• Создаем атомный лоадер на Jetpack Compose
• Композим иконки. Улучшаем семантику и скорость отрисовки
• NFC на Android: создание системы предоплаты с использованием NDEF меток
• Фокус в Android TV
• Многопоточность в Android: тогда и сейчас
• Советы по обработке Insets для обеспечения edge-to-edge на Android 15
• Как я разрушил свои стереотипы об автотестах, или Мой путь от Appium до Kaspresso
• Защита мобильных приложений. Записки охотника: Почему Appdome иногда такой себе Dome
• Организация кода в проекте — в какой пакет положить Kotlin класс
• Android 15 опубликован в AOSP
377ae0333d0f4b7b97307c9eea5ee21a.gifString vs StringBuffer vs StringBuilder
377ae0333d0f4b7b97307c9eea5ee21a.gifCoroutine Testing — Never ending tests & backgroundScope
377ae0333d0f4b7b97307c9eea5ee21a.gifAvoiding unintentional device exclusion in an Android app
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Studio Koala Feature Drop is Stable!
377ae0333d0f4b7b97307c9eea5ee21a.gifTransforming Figma UI Designs into Jetpack Compose Code with Google AI Studio: A Step-by-Step Guide
377ae0333d0f4b7b97307c9eea5ee21a.gifComposable-scoped ViewModel: An interesting experiment
377ae0333d0f4b7b97307c9eea5ee21a.gifLoading Initial Data in LaunchedEffect vs. ViewModel
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Provide Photos to the Gallery for Running UI Automated Tests
377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Navigation in Jetpack Compose: A Guide to Using the inclusive Attribute
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Create an Atomic Loader in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifInsets handling tips for Android 15«s edge-to-edge enforcement
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin KSP — how to automate everything in the world
377ae0333d0f4b7b97307c9eea5ee21a.gifBest way to keep state in a ViewModel
377ae0333d0f4b7b97307c9eea5ee21a.gifUnlock Android Jetpack Components: Hidden Tricks to Build Successful App
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Compose Videos with ExoPlayer
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid dev very overengineered and difficult to get into?
377ae0333d0f4b7b97307c9eea5ee21a.gifAnti-Pattern: Stop Leaking Kotlin Flow Collectors in Your Android ViewModel
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuilding for the future of Android
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngWhat«s new in Android Studio Koala
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMaster Kotlin Coroutines & Flows
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuild your own compiler with KSP
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngApplying the State Pattern in Kotlin
96716bcb926741e79bb1c284a88083ca.pngVoice — минималистичный плеер аудиокниг
96716bcb926741e79bb1c284a88083ca.pngaDp — масштабирование дизайна Compose для разных экранов

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

• Flutter Web. Часть 1
377ae0333d0f4b7b97307c9eea5ee21a.gifWriting a Kotlin Multiplatform App from Start to Store
377ae0333d0f4b7b97307c9eea5ee21a.gifUsing Native iOS Navigation from Compose Multiplatform
377ae0333d0f4b7b97307c9eea5ee21a.gifThe 5 Design Patterns For Every Flutter Engineer
377ae0333d0f4b7b97307c9eea5ee21a.gif5 Essential Design Patterns Every Flutter Engineer Should Master
377ae0333d0f4b7b97307c9eea5ee21a.gifShrink Your KMP Build: The Power of «Internal» Functions
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter State Management & Design Patterns: Do You Really Need Them?
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuild an Animated Search Bar in Flutter

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

• Следим за производительностью SDK. Доклад Яндекса
• Оставляйте что-нибудь на завтра
• Анализируй-сокращай. Как мы перешли от вендоров на инхаус и как это сказалось на UX и архитектуре
• Новый подход к редизайну: как мы создаем удобный интерфейс для главного экрана платежей и переводов
• SkillStaff: рынок ИТ-аутстаффинга вырастет до 265 млрд к концу 2024 год
• Самые высокооплачиваемые вакансии августа в сфере разработки приложений
• Архитектурное собеседование — по обе стороны баррикад •
• Backend-Driven UI и конструкторы. Благо или зло?
• Открытое собеседование — технический руководитель: разбор кейса
• Как работает авторизация и аутентификация — OAuth, JWT, webauthn, RBAC, ABAC
377ae0333d0f4b7b97307c9eea5ee21a.gifAI development and agile don«t mix well, study shows
377ae0333d0f4b7b97307c9eea5ee21a.gifSynchronizing pong to music with constrained optimization
377ae0333d0f4b7b97307c9eea5ee21a.gifExplicit is better than implicit
377ae0333d0f4b7b97307c9eea5ee21a.gifThe Boolean Trap

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

• AppsFlyer представил Attribution Reporting API для Android Privacy Sandbox
• Почему и как мы платим за свою же органику в сторах
• Маркетологи в мобайле: Всеволод Самсонов (Flowwow)
• Hello Wonder — браузер с ИИ для детей
• Пуш-уведомления. Интересны, временами непонятны
377ae0333d0f4b7b97307c9eea5ee21a.gifKey languages for localization: Here«s how demand changed in 2023
377ae0333d0f4b7b97307c9eea5ee21a.gifHacking sales as an introvert

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

• Как Яндекс создавал новую end2end-модель генерации коротких видео
• LoRa. Рекорды дальности связи
• Создание пользовательского интерфейса на дисплее Guition с ESPHome и библиотекой LVGL
• Стандарт Ki предлагает беспроводное питание для кухонных приборов

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

Habrahabr.ru прочитано 4427 раз