Мобильная разработка за неделю #543 (17 — 23 июня)

В новом дайджесте деплоим свои приложения из XCode на старые iPhone и изучаем Swift Testing, исследуем приложение Zomato, чтобы создать свою собственную систему уведомлений, и добавляем Flutter в приложение, выкладываем приложение в Apple Store и Google Play, разбираемся в хороших сессиях и многое другое. Подключайтесь!

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

wfmkwuvuovfaduileghxwantiae.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Эти айфоны ещё будут жить: пишем и деплоим свои приложения из XCode на старые iPhone
• Введение в Swift Testing +Введение в тестирование на Swift Testing
• Swift 5.10
• iOS-приложения под защитой Apple! Или нет?
• Поваренная книга SwiftUI: изображения и иконки — Часть 4
• AccessorySetupKit будет проще подключать сторонние устройства
• У Apple «очень серьезные» проблемы с DMA
• Apple отложила разработку второй Vision Pro ради более дешевой модели
• Apple дает разработчикам возможность номинировать свои приложения на фичеринг в App Store
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHighlights of new technologies introduced at WWDC24
• 377ae0333d0f4b7b97307c9eea5ee21a.gifNew GitHub Organization for the Swift Project
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA New Direction for Testing in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAdvanced Core Image
• 377ae0333d0f4b7b97307c9eea5ee21a.gifZoom navigation transition in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifEnhanced replace transition for SF Symbols in iOS 18
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBringing native AI to your mobile apps with ExecuTorch
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCreate Node Modules in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFree, on-device translations with the Swift Translation API
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCreating Stunning Dynamic Text Effects with TextRender
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA preview of our upcoming UIKitNavigation library
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPreparing your App Icon for dark and tinted appearance
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwift Testing: Getting Started
• 377ae0333d0f4b7b97307c9eea5ee21a.gifiOS CI/CD With Azure DevOps: Automate Your Release Process
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngExplore Swift performance
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngXcode 16 Navigation Shortcuts in 12 Minutes
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Scroll To Hide Header View — iOS 18
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngDark mode icons in iOS 18 and Xcode 16
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMesh Gradient & Floating Tab bar (iPadOS)
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngiOS 18 Control Center Widget — SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngImage Carousel in SwiftUI
96716bcb926741e79bb1c284a88083ca.pngTPPDF — создание PDF для iOS и macOS приложений
96716bcb926741e79bb1c284a88083ca.pngCoobjc — корутины для Objective-C и Swift
96716bcb926741e79bb1c284a88083ca.pngCodableWrapper — улучшения для Codable

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Как я исследовал приложение Zomato, чтобы создать свою собственную систему уведомлений
• Что нового в безопасности пользователей на Android: доклад с Google I/O 2024
• Осваиваем ViewModel в Android: «можно» и «нельзя» — Часть 4 (3, 2, 1)
• Как избавиться от рекурсии, или Как мой код попал в Google
• Микширование аудиопотоков в Android
• Опыт внедрения Kotlin и Compose Multiplatform в продакшн-решение
• Как мы победили техдолг в проекте Android RuStore
• Android Device Streaming на базе Firebase в бета-версии
• 377ae0333d0f4b7b97307c9eea5ee21a.gifModernizing Application Settings in Kotlin Multiplatform with DataStore and Koin
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding Jetcaster on all Form Factors
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPride in Your App — Trying Out GraphQL on Android
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin DEVEX is not great, but Amper could fix it
• 377ae0333d0f4b7b97307c9eea5ee21a.gifChoosing Between Sealed Classes and Enum Classes in Kotlin
• 377ae0333d0f4b7b97307c9eea5ee21a.gifData Mapping In Kotlin Explained
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDive into Object-Oriented Programming with Kotlin
• 377ae0333d0f4b7b97307c9eea5ee21a.gifJetpack Glance
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCreating flexible components in Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifApp Architecture: Deeplinks
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTop 10 Coroutines Questions 2024
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhat is faster and in which tasks? Coroutines, RxJava, Executor?
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAI development assistance — Android Developers Backstage
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSimplifying Kotlin Build Configuration with Amper
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngWhy we can«t have nice things in Kotlin
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKotlin Language Features in 2.0 and Beyond
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMastering WebRTC for Large Conference Calls on Android
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngЗаписи докладов KotlinConf»24
96716bcb926741e79bb1c284a88083ca.pngKaml — YAML для kotlinx.serialization

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

• Flutter Add-to-App: как добавить Flutter в приложение
• От ручной работы к автоматизации: наш путь к идеальной доставке сборок Flutter
• Feature-Based Flutter Architecture
• 377ae0333d0f4b7b97307c9eea5ee21a.gifStep-by-Step Guide to Dockerizing Dart and Flutter Web for Deployment
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Mock HTTP Clients in Flutter Tests
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter Best Practices for 2024: Build Better Apps Faster
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKMP: Essential Tools and Plugins for Kotlin Multiplatform Application Development
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIntroducing Solidart: A Simplified Approach to Flutter State Management Inspired by SolidJS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Shapes and Clipping in Flutter
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Get the Height and Padding of the AppBar in Flutter
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe Ultimate Guide to React Native Optimization (2024 edition)
gtu1iaz0-ajkbqpeq8n6dmql4zq.png10 Takeaways for React Native Devs from the App.js conference
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngWhat Is Kotlin Multiplatform And How Does It Work?
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuilding Your First Compose Multiplatform Hello World App
gtu1iaz0-ajkbqpeq8n6dmql4zq.png10 Takeaways for React Native Devs from the App.js conference
96716bcb926741e79bb1c284a88083ca.pngConnectivity — мониторинг сети для Kotlin Multiplatform

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

• WebView: быстрый релиз, никаких ревью в сторах, а минусы есть?
• Как в 2024 выложить приложение в Apple Store и Google Play
• Легким движением руки приложение становится понятным. Как мы сделали уведомления в личном кабинете более заметными
• Усталость Senior-разработчиков
• Как решать задачи на Leetcode
• ИИ в работе: как упростить жизнь мобильного разработчика
• Дали менторить джуна… Все пропало?
• Как устроен сетевой код в играх
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPair Programming Antipatterns
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMocking is an Anti-Pattern
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow SMS Fraud Works and How to Guard Against It
• 377ae0333d0f4b7b97307c9eea5ee21a.gifLet«s write a video game from scratch like it«s 1987

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

• WWDC 24: что нового во встроенных покупках
• Что значит хорошая сессия в приложении — разбираемся в деталях
• Butterflies — новая социальная сеть для ИИ и людей
• Исследование приложений, которые могут стать ненужными в iOS 18
• Varioqub: за Mann-Whitney замолвите слово
• Топ быстрорастущих приложений в России в июне

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

• Я тебя с вертухи сломаю, если ещё раз заговоришь об ИИ
• Что умеет новая модель Claude 3.5 Sonnet?
• Кажется, LLM программирует лучше меня
• JetBrains интегрирует Gemini в AI Assistant
• Принтер печатает картинки из блоков Lego

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

© Habrahabr.ru