Мобильная разработка за неделю #528 (26 февраля — 3 марта)

В новом выпуске возврат от SwiftUI к UIKit и машинное обучение на устройствах, стабильная Iguana и гибридный интерфейс в Wear OS, деплой Flutter-приложений, сложный повтор в мобильном календаре, весенние маркетологи в мобайле и многое другое. Подключайтесь!

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

-utoaznmsdbu1ltb1rwp2ab9iuk.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Почему Ollie перешел от SwiftUI к UIKit
• Как работает async/await в Swift
• Помощь на старте: 10 полезных ссылок для начинающих iOS-разработчиков
• Машинное обучение на устройствах с помощью MLX и Swift
• Task и structured concurrency в Swift
• SwiftUI уроки (часть 2)
• Apple опубликовала план развертывания подписей для SDK
• Пишем текстовую RPG
• Setapp от MacPaw станет первой альтернативной платформой для iOS в Европе
• Еврокомиссия расследует отказ Apple от PWA
• Минцифры узаконит установку сторонних приложений на iOS
• Поваренная книга SwiftUI: создание и доступ к переменным окружения в SwiftUI
• Себестоимость Vision Pro составляет около $1500
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to delay an animation in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifModding Plugins back into Xcode
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDesigning APIs with typed throws in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifEmbedding a privacy manifest into an XCFramework
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPicture in Picture Cheat Sheet
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to improve iOS build times with modularization
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDiscovering iOS memory leaks: A case study with Firefox app
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMaking Customizable SwiftUI Components
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI Got Isolation Wrong
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to determine where tasks and async functions run in Swift?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTwitter vs. X
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFinding a balance while coding
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhat«s the buzz about the 2024 OWASP Mobile Top 10 changes?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifGemini AI API implementation in iOS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to use VariadicView, SwiftUI«s Private View API
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThird-party libraries acknowledgments using a Settings bundle
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDiscovering Swift Async Algorithms package
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWorking with dates and Codable in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwift Predicate: Usage, Composition, and Considerations
• 377ae0333d0f4b7b97307c9eea5ee21a.gifExploring the SwiftUI«s Grid View
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Create 3D App Icons for visionOS
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to easily mock ANY network call with URLProtocol
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngElastic Custom Segmented Control — SwiftUI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCustom SwiftUI Calendar
• 96716bcb926741e79bb1c284a88083ca.pngVerticalSplit: контейнер SwiftUI с двумя View с настраиваемым разделением
• 96716bcb926741e79bb1c284a88083ca.pngEmojiKit: работа с эмодзи в Swift
• 96716bcb926741e79bb1c284a88083ca.pngMLX: фреймворк машинного обучения для Apple Silicon

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Прокси-сервер для Android на Go
• Android Studio Iguana стала стабильной
• Осознанная оптимизация Compose 2: В борьбе с композицией
• Android Lint: оптимизируем проверку мердж-реквестов
• Google представил гибридный интерфейс в Wear OS
• Что такое гибридный интерфейс в Wear OS
• Прекратите использовать тестовые теги в Jetpack Compose
• Настраиваем кросс-обновления Android-приложений между сторами
• Как писать приложения под Android
• Наш опыт внедрения Compose в большой проект
• Многомодульность: что это такое?
• Жизнь инди в Google Play
• Разработка новостного приложения. Часть 2
• Google TV обновляет домашний экран
• 377ae0333d0f4b7b97307c9eea5ee21a.gifNavigation in Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIns and Outs of Kotlin Variance
• 377ae0333d0f4b7b97307c9eea5ee21a.gifContainer transform animation with Jetpack Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifEasily add document scanning capability to your app with ML Kit Document Scanner API
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPreferences Datastore is slow, but you should still choose it over Shared Preferences
• 377ae0333d0f4b7b97307c9eea5ee21a.gifOverlapping Lists — Custom Composable Vs RecyclerView
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPriorityDispatcher — Priority based Dispatcher in Kotlin Coroutines
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow a Bubble Chat Increases Up to 90% of Seller«s Read Speed
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Pass Arguments to a HiltViewModel from Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifComprehensive Guide To Kotlin Context Receiver
• 377ae0333d0f4b7b97307c9eea5ee21a.gifJetpack Compose: Strong Skipping Mode Explained
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin inline value classes explained
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid: Scoped Storage
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFun with shapes in Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSnapshot Testing Libraries for Android: Paparazzi vs Shot
• 377ae0333d0f4b7b97307c9eea5ee21a.gifJetpack Compose Hacks: Top 3 Secret Jetpack Compose Modifiers
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThink of current Android Architecture from UseCase
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngThe Ultimate Package Structure Guide for Android Developers
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngModern Dependency Management With Version Catalogs
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngModularization at scale with Alireza Tizfahmfard
• 96716bcb926741e79bb1c284a88083ca.pngDecompose: BLoC с навигацией и подключаемым UI
• 96716bcb926741e79bb1c284a88083ca.pngLingshot: правильная архитектура Android-приложения

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

• Деплой Flutter-приложений и особенности платформ
• Пути внедрения поддержки скриптов в Dart/Flutter
• Самый простой CI/CD пайплайн для Flutter приложения с Codemagic. Часть 2 + Часть 1
• Организация данных на экране во Flutter
• Разработка интерфейса во Flutter
• Работа с виджетами во Flutter — 2 часть
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBuild a content recommendation app with Flutter and OpenAI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter«s 2024 roadmap
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Responsive UIs in Flutter: The Full Guide
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter vs. React Native: Which one to choose for 2024?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSupercharge Your Flutter Apps with Google«s App Architecture
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe missing guide to deep linking in Flutter apps

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

• «Не заставляйте меня вводить цифры»: реализуем сложный повтор в мобильном календаре
• Проектируем системный дизайн Spotify
• Диплом специалиста ИБ. Часть №4 — Мобильное приложение Smart Connect
• Топ 5 книг для синьора
• Как мы пытались растить выручку через персонализацию
• Самые высокооплачиваемые вакансии февраля в сфере разработки приложений
• VK расширяет программу оплачиваемой стажировки для молодежи
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAgile Cult
• 377ae0333d0f4b7b97307c9eea5ee21a.gifEngineering is more about people than tech
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBeware the parasite engineer
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCrafting a Custom Sports Activity Service with OpenAI and Node JS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSoftware engineering practices you should probably be following in 2024

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

• Маркетологи в мобайле (Spring Edition): Ярослава Адаменко (М.Видео и Эльдорадо)
• Маркетологи в мобайле (Spring Edition): Ольга Бигбашева (Rendez-Vous)
• Бывшие инженеры Twitter создают Particle, читалку новостей с ИИ
• Liveliness — сообщества для любителей спорта
• Кейс: разметка приложения с нуля на конкретном примере
• 377ae0333d0f4b7b97307c9eea5ee21a.gifNavigating Ramadan 2024: Insights and strategies for app marketers
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBumble looks to revive its friendship-focused BFF product in wake of dating app downturn
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSeatGeek«s new tools help fans resell tickets at the best price

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

• Как создать простой LoRa мессенджер: обмен зашифрованными текстовыми сообщениями между устройствами без интернета
• Исследователи обнаружили в Hugging Face вредоносные модели ИИ
• Умный дом с котом: мой опыт автоматизации домашней рутины
• Разработка производительного распознавателя автономеров для edge-устройств
• Осторожно, IoT: как бытовая техника становится проблемой для компаний
• Открытая модель StarCoder 2 работает на обычных GPU
• GitHub открывает доступ к Copilot Enterprise
• Apple закрыла проект создания электромобиля
• Qualcomm открывает AI Hub
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMachine Learning in 2024 — Beginner«s Course

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

© Habrahabr.ru