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

В новой подборке сторонние платежи в iOS-приложениях в России, использование Swift и SwiftUI в iOS 17, русификация китайского Android и поиск лишних Component Dependencies, камеры и Flutter, шесть платформ, 15 лет программной инженерии и многое другое!

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

5w4evlz3yvmi1c66vktil_xp5h8.jpeg

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Apple разрешает сторонние платежи в России
• Использование компанией Apple Swift и SwiftUI в iOS 17
• Скорее жив, чем мёртв: тенденция по развитию iOS технологий
• Какие инструменты позволили существенно улучшить iOS-разработку
• Архитектура SwiftUI + VIPER: модульный подход к разработке iOS‑приложений
• Навигация в iOS приложении — паттерн Координатор
• Нарисуй свой TabBar
• Async/Await: лучшие практики, советы и особенности
• SwiftUI — уже пора?
• Гармония статики и динамики: погружаемся в mergeable libraries
• Поваренная книга SwiftUI: Формы в SwiftUI
• Apple будет обновлять ПО iPhone перед продажей
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAdvanced SwiftUI Animations: CustomAnimation
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAdding an Info.plist file to a Swift executable
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to dismiss Keyboard in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifXcode Parallel Test Execution of XCUITest is a Joke
• 377ae0333d0f4b7b97307c9eea5ee21a.gifOptimizing work in iOS runtime
• 377ae0333d0f4b7b97307c9eea5ee21a.gif8 Tips to Optimize your iOS App
• 377ae0333d0f4b7b97307c9eea5ee21a.gifConcurrent Programming in SwiftData
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThread dispatching and Actors: understanding execution
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBeing a good citizen in the land of SwiftSyntax
• 377ae0333d0f4b7b97307c9eea5ee21a.gifContent Unavailable Views
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to customize Enum Decoding in Swift with code samples
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Concurrency with Dispatch Groups in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwift Parameter Packs
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow MEGA engineered its iOS design tokens module
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMasking Third Party Dependencies
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHey World! A SwiftUI list of countries with TCA
• 377ae0333d0f4b7b97307c9eea5ee21a.gifStart your first iOS Application Pentest with me…
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCreate Python Shortcuts on iOS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifManaging Constant With Enum in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifObjective-C Internals
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Preview macro in Swif
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCombine charts to create stunning designs with Swift Charts
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngВсе видео NSSpain XI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.png8 Tips to Optimize your iOS App
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngContentUnavailableView in iOS 17
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngLock SwiftUI View With Biometric/Custom Number Lock
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Progress Based Hero Animation Effect — Custom Matched Geometry Effect
• 96716bcb926741e79bb1c284a88083ca.pngSwiftyJSON: работа с данными JSON
• 96716bcb926741e79bb1c284a88083ca.pngGrape: визуализация графов

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Ломаем Android. Русификация китайских авто
• Измеряя sequences
• Как я создавал мобильное приложение для хранения прочитанных книг BookDesk
• Оптимизируем Android приложение в пару подходов
• Поиск лишних Component Dependencies с помощью Dagger SPI
• TDD вместо тысячи слов и туториалов или как работать с новичками
• Автоматическая SMS-верификация в Android с помощью SMS Retriever API
• Play Protect будет сканировать код приложений при установке
• Публикация в F-Droid с помощью Fastlane
• Xiaomi представила новую HyperOS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAchieve Compile-Time Safety with Koin in Record Time
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHandling Loading states of Android Paging 3
• 377ae0333d0f4b7b97307c9eea5ee21a.gifExploring Android 14: Screenshot Detection
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPublishing to F-Droid with Fastlane and Flavors
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTesting Android apps for flaky network situations with Flaker
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding a search screen with Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAvoid return statements in Jetpack Compose!
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAndroidX moving to minSdkVersion 19
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMinimizing APK Size: Techniques for Shrinking Android App Size
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhat Are the Differences Between KAPT and KSP in Android?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTaking pictures using Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifLamps lights in Android Studio with Kotlin A Step by Step Tutorial
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Pentesting 101: A Novice«s Handbook to Getting Started
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHandling «What are Kotlin Coroutines?» Interview question
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDeep Dive Into Android Memory
• 377ae0333d0f4b7b97307c9eea5ee21a.gifinline, noinline, crossinline. What are they? — Kotlin The Series
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSealed Classes: An Alternative Approach To The Visitor Pattern In Kotlin And Java 21
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTop 15 Common Android Interview Questions for Experienced Android Developers
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to pass data between ViewModels?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUnderstanding JvmField, JvmOverloads Annotations
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Implement Pinch Zoom Gestures in Jetpack Compose
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngNow in Android: 93 — Android 14, Wear OS 4, Gestures in Jetpack Compose, and more!
• gtu1iaz0-ajkbqpeq8n6dmql4zq.png#TheAndroidShow: faster and easier to build excellent apps, across devices!
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngDevice Streaming in Android Studio, Image Generation in MediaPipe, and more developer news!
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngImage Caching with Coil Compose — Everything You Need to Know
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Implement Pinch Zoom Gestures in Jetpack Compose
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMaestro: Android modern UI Testing
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngВсе видео droidcon NYC 2023
• 96716bcb926741e79bb1c284a88083ca.pngTivi: шоу и сериалы в современной Android-разработке

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

• Как быстро интегрировать Систему быстрых платежей (СБП) в приложение на Flutter
• Камера и Flutter
• Как мы удвоили разрешение фотографий с помощью камеры Flutter на iOS
• Event Bus: пишем шину событий во Flutter-приложении
• React Native: cостояние, скорость работы, конкуренция, будущее.
• Android-Driven KMM
• KMM + Composable Architecture в Умной Камере
• Как мы Kotlin Multiplatform внедряли
• React Native: cостояние, скорость работы, конкуренция, будущее
• Android-Driven KMM
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKMP Team Workflows with KMMBridge
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKonsist: Protect Kotlin Multiplatform projects from architecture guidelines violations
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAutomate Flutter app delivery to AppCenter with GitHub Actions
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMocking Bluetooth in Flutter: Updated
• 377ae0333d0f4b7b97307c9eea5ee21a.gifRaising the Dead: How to Learn Flutter and Dart by Reviving Old Examples
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Design an Effective Bloc State Management in Flutter Development
• 377ae0333d0f4b7b97307c9eea5ee21a.gifXCode 15 React Native Troubleshooting Guides
• 377ae0333d0f4b7b97307c9eea5ee21a.gifInstant Page Loads with LRU State Cache in Flutter BloC
• 377ae0333d0f4b7b97307c9eea5ee21a.gifExplore Tic-Tac-Toe Game In Flutter
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter Animations Beyond the Basics
• 377ae0333d0f4b7b97307c9eea5ee21a.gifImplementing the latest from Flutter to build our Guided Journaling Library
• 96716bcb926741e79bb1c284a88083ca.pngCookit Recipes App: кроссплатформенные рецепты на Compose

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

• Одна игра, один человек, шесть платформ: хорошие, плохие, злые
• Как упростить себе жизнь: удобные юнит-тесты с JUnit и AssertJ
• Из микро в макро: как адаптировать мобильное приложение под ТВ-платформу
• Случайные мысли о 15 годах в программной инженерии
• Part 1. Инструменты автоматизации тестирования
• Почему джунов не берут на работу
• Microsoft запускает Radius, открытую платформу облачных приложений
• C# скоро обгонит Java по популярности
• Культ Obsidian: почему люди одержимы приложением для заметок
• JetBrains запускает инструмент для работы с документацией Writerside
• Stack Overflow проводит увольнения
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPull vs push architecture for Mobile
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow Discord Stores Billions of Messages — Big Surprises in System Design
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTransition animations: a practical guide
• 377ae0333d0f4b7b97307c9eea5ee21a.gifLeetCode-style algorithms in interviews suck. Cut it out.
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe inverse value of UX and Art
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWrite more «useless» software
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe State of WebAssembly 2023
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow we built a Streaming SQL Engine
• 96716bcb926741e79bb1c284a88083ca.pngFlaker: симулятор нестабильной сети

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

• Топ быстрорастущих приложений в России в октябре
• Как приоритизировать фичи с помощью Unit-экономики?
• Discord расширяет программу вознаграждения разработчиков
• Apple увольняет сотрудников App Store в Китае из-за потенциальных сделок с разработчиками игр
• RuStore назвал самые популярные игры и приложения в регионах
• Supercell анонсировала новую игру mo.co
• Crunchyroll вошел в клуб миллиардеров
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA checkout designed for impulse purchases
• 377ae0333d0f4b7b97307c9eea5ee21a.gifGG: The Journey of Building and Marketing an App
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to create a high-performing app store listing for your mobile app

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

• Посторонись, Copilot: подборка разнообразных AI-инструментов для разработчиков
• ChatGPT для разработчиков: API, лимиты, как втягивать в него базу знаний, что нельзя сделать, что лучше делать осторожно
• ShIoTiny5 — новые веяния и маленькое устройство
• Варианты беспроводного подключения для приложений интернета вещей — сравнение технологий
• Яндекс представил нейросеть YandexART
• Qualcomm анонсирует первый в истории массового рынка RISC-V Android SoC
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAdvanced ChatGPT Prompting Techniques for Developers

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

© Habrahabr.ru