Мобильная разработка за неделю #583 (7 — 13 апреля)

В новом дайджесте рассказываем как банки живут в заблокированном App Store, как создать UI-конструктор с помощью Compose Multiplatform, исследуем новый фреймворк внедрения зависимостей для Android и портируем кроссплатформенную С++ игру на iOS, изучаем Google Firebase Studio и многое другое. Заходите!

3rirvhd5xl0ez7eye4vk5izdubs.jpeg

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

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• App Store блокирует аккаунты разработчиков, а банки всё равно в сторах. Рассказываем, как они это делают
• Расширяем Text в SwiftUI с помощью динамической стилизации содержимого
• SwiftUI или UIKit: что выбрать для iOS-приложений?
• SwiftUI: Реализация разделенного координатора совместно с DeepLink (Universal link)
• SwiftUI: Пишем простое фитнес-приложение с использованием HealthKit
• Воспроизведение и редактирование видео с AVFoundation. Часть 2. Ассеты продвинутые
• Что делать после блокировки ADEP: MDM-системы, PWA или Android?
• Нервное смузи из Swift Package Registry
• Альтернативы XCUITest, или Как и зачем разработчику писать автотесты
377ae0333d0f4b7b97307c9eea5ee21a.gifSwift 6.1 Released
377ae0333d0f4b7b97307c9eea5ee21a.gifDocC for Multi-Platform Documentation
377ae0333d0f4b7b97307c9eea5ee21a.gifModern URL construction in Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifCross Compiling Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifWhy I never subclass UITableViewCell or UICollectionViewCell
377ae0333d0f4b7b97307c9eea5ee21a.gifCreate flexible interfaces in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifTesting remote iOS push notifications in a simulator with simctl
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI: A Simple Copy Cat of the Calendar + Reminder App
377ae0333d0f4b7b97307c9eea5ee21a.gifDisassembling Apple Exclaves
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding WASM Applications with Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifSupercharging SwiftUI Text with Dynamic Content Styling
377ae0333d0f4b7b97307c9eea5ee21a.gifIntegrating TimelineView in a SwiftUI app
377ae0333d0f4b7b97307c9eea5ee21a.gifKeeping your Swift apps» sensitive data secret
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSet Up a Local Test Server with Swift in Under 5 Minutes + iOS app SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngExpandable Header with Hero Effect — Slack Header Animation | SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI — Scratch to Reveal animation
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngWhat«s new in Swift 6.1?
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Micro-interactions — Slide To Confirm
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngXcode 16.3 is Available Today (What«s New?)
96716bcb926741e79bb1c284a88083ca.pngDDKitSwift — набор инструментов отладки для iOS-приложений
96716bcb926741e79bb1c284a88083ca.pngSmartCodable — лучшие Codable

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Как я создал UI-конструктор с помощью Compose Multiplatform, который экспортирует код Compose
• Узнаём какое аниме будет самым рейтинговым еще до выхода
• Лучшие приложения с открытым исходным на Kotlin
• Демоприложения: как жить, когда у вас 90+ application-модулей
• Metro — новый фреймворк внедрения зависимостей для Android
• Kotlin-bench — тест ИИ-моделей для Android-разработки
• Плавная миграция на Kotlin 2.1.0
• Полное руководство по созданию многоцветных тематических и адаптивных иконок для Android-приложений
• A/B-тестирование в Android-разработке: гайд для middle+ разрабов
• Почему нельзя использовать RecyclerView в NestedScrollView и как это исправить?
• Modo в действии: быстрая и гибкая навигация для Jetpack Compose
• Как сделать своп движка звонков в легаси-коде и не выгореть
• Backup в Android, или Как сэкономить бизнесу миллионы
• Экзоскелет для ExoPlayer
• Gemini в Android Studio для предприятий
377ae0333d0f4b7b97307c9eea5ee21a.gifRoutines to Coroutines: How Kotlin Revolutionized Asynchronous Programming
377ae0333d0f4b7b97307c9eea5ee21a.gifFinding unnecessary Component Dependencies with Dagger SPI
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to build offline maps with OpenStreetMap on android
377ae0333d0f4b7b97307c9eea5ee21a.gifFire and Forget with Kotlin Coroutines
377ae0333d0f4b7b97307c9eea5ee21a.gifImproving the Modal Bottom Sheet API in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifCompose Meets YouTube: Production-Ready YouTube Playback with Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifA gentle introduction to coroutines in Kotlin, for Android developers
377ae0333d0f4b7b97307c9eea5ee21a.gifAdaptive Camera: Smooth Tabletop Mode with Animations
377ae0333d0f4b7b97307c9eea5ee21a.gifDynamic Language Switching in Android: Real-World Lessons From Google Play Bundles
377ae0333d0f4b7b97307c9eea5ee21a.gifTop 3 Android Use Cases for Every SOLID Principle (with Code)
377ae0333d0f4b7b97307c9eea5ee21a.gif6 steps to make a «Slide to unlock» button in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifCreating and Publishing an Android SDK: A Simple Step-by-Step Guide That Actually Works
377ae0333d0f4b7b97307c9eea5ee21a.gifStop using Dispatchers.IO
377ae0333d0f4b7b97307c9eea5ee21a.gifSystem Design of an Atlassian Android App
377ae0333d0f4b7b97307c9eea5ee21a.gifClean Permission Management in Android
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngLinting on the Side of Caution: Safety & Security — Android Developers Backstage
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngGoogle Play PolicyBytes — April 2025 policy updates
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKotlin 2.1.20 — Atomics, UUIDs, and more! — TypeAlias Show
96716bcb926741e79bb1c284a88083ca.pngKyoku — музыкальный стриминг с 70 тысячами песен
96716bcb926741e79bb1c284a88083ca.pngEscape — минималистичный лаунчер для Android

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

• Как сделать GitLab CI/CD вашим лучшим другом для сборки и доставки Flutter приложений. Часть 1
• Это вам не игрушки: портирование кроссплатформенной С++ игры на iOS
• Accessibility Flutter-приложений, или Как увеличить трафик на 20
• Зачем мне Kotlin в iOS-разработке? Я только Swift выучил!
• Как мы сделали ставку на KMP
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter issues make apps look cheap and untrustworthy
377ae0333d0f4b7b97307c9eea5ee21a.gifFrom Phone to Dashboard: Build an Android Auto App with Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifHot Reload For Flutter Web is Finally in Beta
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter + Supabase + Metabase — The Best Tech Stack Combo
377ae0333d0f4b7b97307c9eea5ee21a.gifDeep Dive into Background Processing in React Native
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter vs React Native — My Highly Opinionated Experience
377ae0333d0f4b7b97307c9eea5ee21a.gifDeep Dive into Background Processing in React Native
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngLynx Tutorial — JS Framework for Cross Platform Development
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHot Reload For Flutter Web is Finally in Beta

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

• Конец продуктовой разработки в том виде, в котором мы ее знаем
• Многопоточность в мобильных приложениях: руководство для QA-инженеров
• Почему компании не исправляют ошибки
• Google Firebase Studio — облачная AI-платформа для разработки приложений
• У нас в проекте был Compose Multiplatform, но снова я бы так не делал
• Сделай удобно: подборка UI/UX-кейсов из цифровых и нецифровых продуктов
• Как дизайнить доступность для скринридера
• Проблемы маленьких приложений при увеличении нагрузки по данным
• Как выжать все соки из Jenkins
• Perl вернулся в TIOBE 20, а Kotlin и Swift выпали из нее
377ae0333d0f4b7b97307c9eea5ee21a.gifGoogle«s principles for measuring developer productivity
377ae0333d0f4b7b97307c9eea5ee21a.gifThe Reality of Tech Interviews in 2025
377ae0333d0f4b7b97307c9eea5ee21a.gifUsing LLM To Transcribe Restaurant Menu Photos
377ae0333d0f4b7b97307c9eea5ee21a.gifDon«t Mock Your Framework: Writing Tests You Won«t Regret
377ae0333d0f4b7b97307c9eea5ee21a.gifThe day I taught AI to think like a Senior Developer
377ae0333d0f4b7b97307c9eea5ee21a.gifWhat it«s like to interview a software engineer preparing with AI
377ae0333d0f4b7b97307c9eea5ee21a.gifStaying productive as an indie developer
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngTop 5 Mobile System Design Concepts Explained
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngFreelancing as Mobile Dev vs. Full-time Job — Which Path Is Best For YOU?
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngIntroducing Agent Development Kit

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

• Самые скачиваемые и зарабатывающие приложения в России в марте 2025
• Как правильно проводить и оценивать A/B-тесты в ASO

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

• Антарктида, солнечные панели и пингвины: как автоматизировали лагерь на краю света
• Я работал в продуктовой команде 7 лет, а потом пришла нейросеть
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngTrain Your Own LLM — Tutorial

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

© Habrahabr.ru