Мобильная разработка за неделю #549 (29 июля — 4 августа)

В новом дайджесте конвейеры мобильного развертывания за $0 и нестрашный Metal, Selenoid без симуляции и странные описания в Play Store, адаптивная верстка на React Native, упадок мобильной разработки, оптимизация пейвола и многое другое. Подключайтесь!

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

dg-sq88_thadzeiijjeb-lqx76u.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Конвейеры мобильного развертывания за $0
• Водитель приедет через 3 минуты: реализация Uber Live Activity на iOS
• Apple выпустила библиотеку гомоморфного шифрования для Swift
• Вышла бета-версии iOS 18.1 с зачатками Apple Intelligence
• Почему Metal перестал быть страшным
• Локализация iOS-приложения за 1$ в 2024 году
377ae0333d0f4b7b97307c9eea5ee21a.gifAccessibility Setting Nuggets from iOS 18
377ae0333d0f4b7b97307c9eea5ee21a.gifAsync and Await in Swift: Advanced Guide for Senior iOS Developers
377ae0333d0f4b7b97307c9eea5ee21a.gifThe Meme that gave me Imposter Syndrome
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI app lifecycle: issues with ScenePhase and using AppDelegate adaptors
377ae0333d0f4b7b97307c9eea5ee21a.gifUsing @DebugDescription in Xcode 16
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding Swift Executables
377ae0333d0f4b7b97307c9eea5ee21a.gifCreating a Sunburst Chart
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Tile Images in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifXcode is actually a great IDE
377ae0333d0f4b7b97307c9eea5ee21a.gifNavigation Patterns in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to programmatically parse the contents of an XCResult bundle
377ae0333d0f4b7b97307c9eea5ee21a.gifTranslating text in your SwiftUI app with the Translation framework
377ae0333d0f4b7b97307c9eea5ee21a.gifHow the Medium iOS team works effectively with legacy code
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding an iOS Networking SDK
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Floating Bottom Sheets
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Refactor SwiftUI into Reusable Views
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI App Intro Animation«s — Shape Morphing Effect
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngXcode File Headers and Macros
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Use TextField Keyboard Focus in SwiftUI with FocusState
96716bcb926741e79bb1c284a88083ca.pngSafeDI — безопасная Compile-time инъекция зависимостей в Swift
96716bcb926741e79bb1c284a88083ca.pngDominantColors — главные цвета на изображении

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Selenoid без симуляции: настройка, отладка и автоматизация на физическом Android-устройстве
• Вопросы доступности при использовании кастомного макета стопки карт
• Gradle + GitLab: эффективный и бесплатный билд-кэш
• Нужно ли учить Java для Android-разработки в 2024
• ИИ генерирует странные описания в Play Store
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid MVVM Architecture Interview Questions
377ae0333d0f4b7b97307c9eea5ee21a.gifCommand Your User Inputs with Jetpack Compose— Text Field Features Hidden in Plain Sight
377ae0333d0f4b7b97307c9eea5ee21a.gifLint Revisit: Providing Alternatives
377ae0333d0f4b7b97307c9eea5ee21a.gifCreating Scalable Composables in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifUsing kotlin-inject in a Kotlin/Compose Multiplatform project
377ae0333d0f4b7b97307c9eea5ee21a.gifArchitecture related decisions in Android — Response classes
377ae0333d0f4b7b97307c9eea5ee21a.gifAdvanced Kotlin Coroutine Cheat sheet
377ae0333d0f4b7b97307c9eea5ee21a.gifAssisted Injection a New Update in Hilt
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Interview Questions with Kotlin Coroutines
377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Regex Groups
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAdvanced layout animations in Compose (Shared elements)
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCompose Tips for Delightful UI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCompose Migration Side Effects — What Can Go Wrong?
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuilding Libraries for the Next 25 Years
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngTurbocharge Your Data: Harnessing Kotlin and gRPC to Handle Real-Time Data From Connected Cars
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngGrow with the Flow: How Kotlin Flow Became a Game Changer for our Business
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCoroutines: Concurrency in Kotlin
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKotlin Design Patterns & Best Practices — Part 1: Build a Chess Game
96716bcb926741e79bb1c284a88083ca.pngImageCropView — обрезка изображений в Jetpack Compose
96716bcb926741e79bb1c284a88083ca.pngGiphy Trending — популярное с Giphy

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

• Адаптивная верстка на React Native
• Полный гайд по тестированию на Flutter. Часть 5: Mocktail + Часть 4: продвинутое модульное тестирование
• Cтейт-менеджмент на Flutter. Введение в Bloc
• Упрощение Работы с Расширениями темам в Flutter: Инструменты и Пакеты для Генерации Стилей
• KMP на ОС Аврора: проблемы и пути их решения
377ae0333d0f4b7b97307c9eea5ee21a.gifReducing App Size and Memory Usage in Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifWhy Kotlin Multiplatform Teams Should Share Source, not Binaries
377ae0333d0f4b7b97307c9eea5ee21a.gifDesktop app development with Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifApp clip wi7th React Native and New Arch (and Swift)
377ae0333d0f4b7b97307c9eea5ee21a.gifShake It Up with CMPShakeDetection: Integrating Fun in Compose Multiplatform
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngThe Kotlinx DateTime API for Compose Multiplatform
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Implement Drag & Drop in Jetpack Compose
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Combine animations with AnimatedBuilder
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHitchhiker«s Guide to Kotlin Multiplatform Libraries
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuild an Uber clone with Flutter and Supabase
96716bcb926741e79bb1c284a88083ca.pngFantasy Premier League — фэнтези-футбол на Kotlin Multiplatform

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

• Упадок мобильной разработки
• Самые высокооплачиваемые вакансии июля в сфере разработки приложений
• Bumble и Hinge позволяли определять местоположение пользователей с точностью до 2 метров
• Алгоритмическая сессия на собеседовании
• Автоматическая генерация верстки под Server-driven UI из макетов Figma
• Учимся договариваться о деньгах — Офферы, Зарплаты, Повышение
• Дизайн системы — это слишком модно, возможно они вам не нужны
377ae0333d0f4b7b97307c9eea5ee21a.gifGoing Indie: From Side Project to Going Independent
377ae0333d0f4b7b97307c9eea5ee21a.gifGoogle«s secret to painless code reviews
377ae0333d0f4b7b97307c9eea5ee21a.gifHow Passwordless Authentication Works — A Deep Dive
377ae0333d0f4b7b97307c9eea5ee21a.gifPerfectionism — one of the biggest productivity killers in the engineering industry
377ae0333d0f4b7b97307c9eea5ee21a.gifI Built a 2D Game in 40 Minutes with Ebiten
377ae0333d0f4b7b97307c9eea5ee21a.gif80% of developers are unhappy. The problem is not AI, nor is coding
377ae0333d0f4b7b97307c9eea5ee21a.gifI recreated Shazam«s algorithm with Go
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to get a FAANG Dev Job in your 40s

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

• Оптимизация пейвола — история успеха
• MONOPOLY GO! быстрее всех заработала $3 млрд
• Рынок приложений в первом полугодии 2024 года — отчет Apptica
• Топ-3 приложения Short Drama стриминга зарабатывают $3 млн в день
• Сеть Chick-fil-A запустила в приложении игру и достигла наибольшего количества ежедневных загрузок в истории
• Метрики продуктового дизайна в Домклик

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

• Мастер-аккаунт Zeekr. Как Arduino поможет Вашему китайскому авто?
• Инженер по машинному обучению — новый путь обучения от Google

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

© Habrahabr.ru