Мобильная разработка за неделю #582 (31 марта — 6 апреля)

В этом выпуске конкатенация против интерполяции, дизайн-система для мобильных устройств и TV, применение zero/empty объектов, игра на LUA для часов Xiaomi Redmi Watch 4, уродливые пейволы, навыки флирта с ИИ-персонажами и многое другое. Заходите!

cndkcfygf-wqttp51rwln13r5pg.jpeg

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

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Конкатенация против интерполяции текста в SwiftUI
• Как правильно организовать проект c модульной архитектурой в iOS-разработке
• Документируем код с помощью DocC
• Google AI Studio: макеты Figma → iOS приложение на Gemini 2.5 Experimental
• Воспроизведение и редактирование видео с AVFoundation. Часть 1. Ассеты простые
• Обзор Copilot в Xcode на SwiftUI
• Одна билд-система, чтоб править всеми
• Влияние Swift Runtime на производительность приложения
• Разрабатываем CLI-инструменты на Swift
• Бразилия расследует деятельность Apple и App Tracking Transparency
• Вышел swiftly 1.0
• Apple работает над масштабным обновлением приложения Health
• SwiftUI Grid, LazyVGrid, LazyHGrid Explained with Code Examples
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding a dependency injection framework
377ae0333d0f4b7b97307c9eea5ee21a.gifFast & Fluid: Integrating Rust egui into SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifProfiling apps using Instruments
377ae0333d0f4b7b97307c9eea5ee21a.gifModelActor is Just Weird
377ae0333d0f4b7b97307c9eea5ee21a.gifHow Trendyol Achieved 70% Faster Build Time with iOS App Revamp
377ae0333d0f4b7b97307c9eea5ee21a.gifPresenting an Inspector with SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI Craftsmanship: State Management
377ae0333d0f4b7b97307c9eea5ee21a.gifThe Dark Side of Apple Development: Why Developers Are Struggling On Apple«s Increasingly Hostile Platforms
377ae0333d0f4b7b97307c9eea5ee21a.gifSay Goodbye to dismiss: A State-Driven Path to More Maintainable SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifCreate a Custom Single Select Button in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifTransform your LLM into an Xcode project copilot
377ae0333d0f4b7b97307c9eea5ee21a.gifRegion-Specific Language Control: Implementing Forced Localization in iOS Apps
377ae0333d0f4b7b97307c9eea5ee21a.gifNew in Swift 6.1: Test Scoping Traits
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngDisable Interactive Dismissal of Navigation Zoom Transition
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngLocalizing Apple UI in 2025
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMonitoring iOS apps
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI in UIKit?! Watch Me Inject Animations into a UIKit App
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Animation Bugs? Here«s How I Fixed Them!
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAnimated Dialogs Like Family App Using SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCreating an Over Top View in SwiftUI: A Unique Way to Present Edit Views
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwift Protocols — An Introduction
96716bcb926741e79bb1c284a88083ca.pngVDAnimation — декларативные анимации для SwiftUI
96716bcb926741e79bb1c284a88083ca.pngDriftCheck — обнаружение утечек памяти

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Все знают, какие приложения установлены на вашем телефоне
• Как мы сделали дизайн-систему для мобильных устройств и TV
• Жизнь после отвала eMMC: Загружаем Android с MicroSD
• Lissen: как я красивый плеер для аудиокниг писал
• Как я писал проводник для Wear OS и что из этого вышло
• Разбираем чистую архитектуру в Android: от, а до я
• Изучайте многомодульную архитектуру в Compose как можно скорее
• Валидация полей формы в Android приложении и не только
• Поддержка webextensions под Андроид, вторая серия
• BundledSQLiteDriver: новый взгляд на SQLite в Android и Kotlin Multiplatform
• Как мы разработали свой фреймворк SingleState-навигации на Android
• Танцы вокруг дерева семантики: UI-тесты Compose-экранов
• Многомодульность — ответы на вопросы с экспертами
• Как работает Android Work Profile
• Разбор кода магазина приложений
• Google внедряет сторонний биллинг в Google Play в Великобритании
377ae0333d0f4b7b97307c9eea5ee21a.gifAPK vs AAB: How We Deliver Android Apps
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Architecture — Fetchers update
377ae0333d0f4b7b97307c9eea5ee21a.gifHome sweet home: some thoughts on storing files
377ae0333d0f4b7b97307c9eea5ee21a.gifMake WebViews edge-to-edge
377ae0333d0f4b7b97307c9eea5ee21a.gifMedia3 1.6.0 — what«s new?
377ae0333d0f4b7b97307c9eea5ee21a.gifLocal Database: Comparing Realm, SQLDelight, and Room
377ae0333d0f4b7b97307c9eea5ee21a.gifSimplifying Dependency Injection in Android Jetpack Compose with Hilt
377ae0333d0f4b7b97307c9eea5ee21a.gifProfile & Benchmark Android Builds
377ae0333d0f4b7b97307c9eea5ee21a.gifUnderstanding Dispatchers: Main and Main.immediate
377ae0333d0f4b7b97307c9eea5ee21a.gifHybrid Encryption in Android: Secure Communication Between Mobile and Backend Systems
377ae0333d0f4b7b97307c9eea5ee21a.gifWhy Kotlin«s callbackFlow can cause memory leak (And How to Fix It!)
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAndroid Builds: Simple Recipes to Enhance Developer Productivity
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngEnhancing app performance in Android
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAnatomy of the SDK Runtime
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngNo more Manual Koin Initialization — New Context Binding is Awesome
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAndroid Builds: Simple Recipes to Enhance Developer Productivity
96716bcb926741e79bb1c284a88083ca.pngGradle, Kotlin, Spring Skeleton — пример многомодульной сборки
96716bcb926741e79bb1c284a88083ca.pngTack Android — красивый метроном для Android
96716bcb926741e79bb1c284a88083ca.pngAnimationSequence — последовательные анимации для Jetpack Compose

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

• Dart/Flutter — применяя zero/empty объекты ко всему
• Реализация простого SSE клиента на Dart
• Kotlin в GitHub Actions. Расширяем горизонты KMP
• Как я перестал бояться и полюбил компилятор Dart
377ae0333d0f4b7b97307c9eea5ee21a.gifExposing SwiftUI Views to React Native: An Integration Guide
377ae0333d0f4b7b97307c9eea5ee21a.gifDeep Dive into Haptics: Enhancing User Experience through Tactile Feedback
377ae0333d0f4b7b97307c9eea5ee21a.gifDevelop Your Own Networking Client In Compose MultiPlatform
377ae0333d0f4b7b97307c9eea5ee21a.gifShopping list and Compose Multiplatform
377ae0333d0f4b7b97307c9eea5ee21a.gifBuild Gen AI Apps Fast with Firebase and Flutter: A Hands-On Starter Guide
377ae0333d0f4b7b97307c9eea5ee21a.gifLeveraging Dart FFI for high-performance ML in Flutter — a practical implementation
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Implement Swipe Actions in Flutter with Slidable
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter Routing Done Right: A Scalable Approach
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngUsing Platform-Specific APIs in KMP Apps
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFlutter Belgium Meetup #23
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngThe Ultimate React Native Course — Build Your First Mobile App in 2025

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

• Как работать в разработке в условиях спада
• Разработка топ мобильной игры в соло, с нуля, без бюджета, без движка, без знания языка программирования. Начало
• Это весело и забавно… пока ваш босс не узнает про вайб-кодинг
• Нет никакого вайб-инжиниринга
• Пишем игру на LUA для часов Xiaomi Redmi Watch 4.Часть 1. Знакомство с экосистемой Xiaomi
• Отказоустойчивая распределённая архитектура для UX-аналитики
• Avito UX meetup: взаимодействие, метрики и мемы
• Полный обзор новой операционной системы HarmonyOS Next. Получилось ли?
• Профессия: cистемный аналитик
• Открытое алгоритмическое собеседование
377ae0333d0f4b7b97307c9eea5ee21a.gifDeploying a Swift Server App to Fly.io and Railway
377ae0333d0f4b7b97307c9eea5ee21a.gifSetting up a translation system for your Android and iOS app
377ae0333d0f4b7b97307c9eea5ee21a.gifHow our Meditation App Broke Records Overnight, almost crashing our servers
377ae0333d0f4b7b97307c9eea5ee21a.gifWattWise: Terminal-Based Power Monitoring Using Smart Plugs
377ae0333d0f4b7b97307c9eea5ee21a.gifMaking Uber«s ExperimentEvaluation Engine 100x Faster
377ae0333d0f4b7b97307c9eea5ee21a.gifThe 13 software engineering laws
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFull 2025 Backend Dev Crash Course for Beginners With Spring Boot (Kotlin, JWT Auth, MongoDB)
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Survive in 2025 Tech Job Market?

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

• Протестируйте уродливый пейвол: вот почему вам стоит это сделать
• Тим Суини назвал Apple и Google «бандитскими» компаниями
• Skylight — альтернатива TikTok, созданная на основе Bluesky
• Новая игра Tinder проверяет ваши навыки флирта с ИИ-персонажами
• Apple Invites не разрушили рынок, а создали его заново
• Инди-геймдев и A/B тесты: совместить несовместимое
377ae0333d0f4b7b97307c9eea5ee21a.gifPush Notifications Statistics (2025)

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

• Открываем instruct-версию YandexGPT 5 Lite
• Блокбастер на коленке с НЛО, коровами и Ван Даммом. Тестируем нейросети для видео
• Пилим игровой мультиплеерный сервер на базе esp32: завершение. Портируем игру на esp32
• Что вам нужно знать, если вы решили внедрить LLM
• Как мы пишем ML-приложения с использованием паттерна пайплайнов
• Дистанционное управление шлагбаумом с помощью MTC Exolve и GSM модуля
• Что скрывает тупой пульт в вашем умном доме
• «ИИ-агенты для начинающих» — бесплатный курс Microsoft
• Train & Weather Tracker with Raspberry Pi & E-Ink
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCode DeepSeek V3 From Scratch in Python — Full Course

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

Habrahabr.ru прочитано 7414 раз