Мобильная разработка за неделю #547 (15 — 21 июля)

В новом выпуске создаем макросы без лида, ИТ-курсов и кредитов, прощаемся с XCAssets и пишем приложения для Android 1.0, программируем кастомные макеты в Compose и переосмысливаем Agile, определяем главный тренд экономики приложений, продвигаем аудиокниги в инновационной глобальной AR-кампании и многое другое. Подключайтесь!

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

er3q-g-65b66gb4c5t8ey3vk4co.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Пишем свой Swift макрос без лида, ИТ-курсов и кредитов
• Скрытая (на виду) сила KeyPath’ов
• Марко Армент переписал Overcast
• Как запустить нативный код из WKWebView
• Вышла первая открытая бета iOS 18
• Проверяем, есть ли новая версия приложения в App Store
• 10 вопросов с собеседования iOS-разработчика (+ все собеседования)
• Прощаемся с XCAssets. Экспорт картинок из Figma на CDN, а оттуда — в приложение
• SwiftPM — фреймворки вместо кофе
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to delay server requests for user«s search query with SwiftUI and Combine
377ae0333d0f4b7b97307c9eea5ee21a.gifNew visionOS sample code
377ae0333d0f4b7b97307c9eea5ee21a.gifSome tips & tricks with the new iOS 18 ScrollView API
377ae0333d0f4b7b97307c9eea5ee21a.gifBlend Modes in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifCreating custom particle emitters with RealityKit
377ae0333d0f4b7b97307c9eea5ee21a.gifUse FFmpeg to speed up iOS Simulator recordings
377ae0333d0f4b7b97307c9eea5ee21a.gifScrollView phase changes on iOS 18
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI: Use SwiftData outside a View (In a Manager Class/ViewModel)
377ae0333d0f4b7b97307c9eea5ee21a.gif1000«s applications, 2 interviews. Whats wrong with my resume?
377ae0333d0f4b7b97307c9eea5ee21a.gifDeveloping an Infinite Four-Direction Scrollable Pager with SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifSwift 6: Future of iOS Development
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCustom Button Styles like a PRO! (SwiftUI)
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFacebook* Messenger Gradient Effect — SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCustom SwiftUI Countdown Timer
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI: Drop Down Picker
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngExploring the Swift Algorithms Package
96716bcb926741e79bb1c284a88083ca.pngBookPlayer — iOS-плеер для аудиокниг
96716bcb926741e79bb1c284a88083ca.pngAnimatable — анимации для представлений SwiftUI
96716bcb926741e79bb1c284a88083ca.pngSwipeActions — свайпы для любого View

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Самый первый Android-смартфон в мире: каким был HTC Dream? Пишем приложения для Android 1.0 в 2024
• Jetpack Compose: отличная идея, но плохая реализация? — обсуждение на Reddit
• Топ-5 плагинов для Android Studio
• Кастомные макеты в Compose — стопка карточек с кошками
• Samsung выпустит Android XR гарнитуру осенью
• Android-разработка в 2024 году
• Вынос сборки Android-проектов с машины разработчика на сервер
377ae0333d0f4b7b97307c9eea5ee21a.gifOverscroll animations in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifType Safe Bottom Navigation in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifStack vs. Heap in Kotlin: Understanding Memory
377ae0333d0f4b7b97307c9eea5ee21a.gifRestartable functions from first principles
377ae0333d0f4b7b97307c9eea5ee21a.gifCreating Custom Text Views in Android: A Fun Exploration with SampleView
377ae0333d0f4b7b97307c9eea5ee21a.gifModeling Android Screen State
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Studio Ladybug 2024.1.3 Canary 1 now available
377ae0333d0f4b7b97307c9eea5ee21a.gifServer-Driven UI Android Implementation
377ae0333d0f4b7b97307c9eea5ee21a.gifReal-Time Pose Detection in Camera with ML Kit in Android
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin Serialization — Json mistakes I made with Polymorphism and More
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMicro optimizations — Android Developers Backstage
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngEdge-to-edge and insets | Compose Tips
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngExploring Exposed: A Kotlin Solution to Database Access
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngDebugging the Future: Exploring Coroutine Debugger Tools
96716bcb926741e79bb1c284a88083ca.pngFinch — меню для отладки Android-приложений
96716bcb926741e79bb1c284a88083ca.pngFilm Time — фильмы в современной Android-разработке

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

• Реализация доступности веб-приложений с помощью Flutter
• Компонентная архитектура приложений на Flutter: почему выбрать BLoC недостаточно
• Макросы на Dart: первые ощущения от использования и лайфхаки на будущее
• Полный гайд по тестированию на Flutter. Часть 1: Знакомство с методами тестирования
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter Design Systems: Exploring Modern Alternatives to Material Design
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Achieve Effortless List Item Animation and Reordering in Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifCompute in Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifIntroducing KoVibes a Kotlin Multiplatform library
377ae0333d0f4b7b97307c9eea5ee21a.gifReact Native + Expo: Simplifying Cross-Platform Mobile App Development
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Generate Executables in KMP (apk, iab, msi, dmg, deb)
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngLocal Preferences in Kotlin Multiplatform With DataStore
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngEnabling Kotlin Multiplatform Success: The Android Jetpack Journey
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMaking the Big Kotlin Multiplatform Decision

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

• Соавтор Манифеста Agile говорит о «переосмыслении» проекта
• Вакансии-призраки и как защититься от них
• Видео Yandex BDUI Conf 2024
• Mobile Performance: расшифровка метрик
377ae0333d0f4b7b97307c9eea5ee21a.gifWhy, after 6 years, I«m over GraphQL
377ae0333d0f4b7b97307c9eea5ee21a.gifWe need visual programming. No, not like that.
377ae0333d0f4b7b97307c9eea5ee21a.gifLessons learned in 35 years of making software
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding Pinterest Canvas, a text-to-image foundation model
377ae0333d0f4b7b97307c9eea5ee21a.gifHow I build simple Mac apps using Go
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMultithreading for Beginners

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

• Загрузки падают, а доходы растут — главный тренд экономики приложений
• Audible оживляет аудиокниги с помощью инновационной глобальной AR-кампании
• Presti использует генеративный ИИ для улучшения фотосъемки мебели
• Какие категории приложений получают больше всего загрузок и зарабатывают больше всего денег
• Самые скачиваемые и зарабатывающие приложения в мире в июне 2024
• Стресс-тест оплаты по QR на кассе в супермаркете. Сравниваем мобильные интерфейсы банков
377ae0333d0f4b7b97307c9eea5ee21a.gifHow we use friction logs to improve products at Stripe

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

• В 48 собесах от оффера в Гугл
• Бюджетный умный климат: как я заставил дешевый кондиционер поумнеть и слушаться Алису
• Mistral представил две новые ИИ-модели — Codestral Mamba для кода и Mathstral для научных изысканий
• Умная квартира с террасой на крыше: осталось уговорить мужа
• ProPainter, Удаление объектов на видео с помощью нейросети, Русская Портативная версия
• Особенности работы с беспроводными счетчиками импульсов Lora от Вега-Абсолют

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

© Habrahabr.ru