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

В новом дайджесте закрытие CocoaPods и излишества чистой архитектуры, деструктуризация в Kotlin с примерами и знакомство с Flutter GPU, архитектура мобильного приложения в разрезе высоких нагрузок и построения экосистем, кто может стать программистом, сокращение количества вакансий для разработчиков и многое другое. Подключайтесь!

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

ggfcq-xc8leaoufbqijsntu3xvq.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Создание XCFramework из SPM пакета
• CocoaPods прекращает развитие и переходит в режим поддержки
• Как я бросила двустороннюю архитектуру и ушла к Redux со SwiftUI и SwiftData
• Основы фреймворка Combine для ML в Swift
• Поиск работы iOS разработчиком в текущих условиях 2024
• Apple открывает доступ к NFC в iOS 18.1
• Apple разрабатывает настольного робота
• Встраиваемый Swift: начинаем работу
• Реверс-инжиниринг iOS-приложения
377ae0333d0f4b7b97307c9eea5ee21a.gifTracking geometry changes in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifCancellable withObservationTracking in Swift• 377ae0333d0f4b7b97307c9eea5ee21a.gif
377ae0333d0f4b7b97307c9eea5ee21a.gifSwift Navigation: Powerful navigation tools for all Swift platforms
377ae0333d0f4b7b97307c9eea5ee21a.gifKey Lessons When Moving Towards a Modular Codebase
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring SwiftUI: Animating Mesh Gradient with Colors in iOS 18
377ae0333d0f4b7b97307c9eea5ee21a.gifConsiderations for Using Codable and Enums in SwiftData Models
377ae0333d0f4b7b97307c9eea5ee21a.gifExtend Your App«s Controls Across the System
377ae0333d0f4b7b97307c9eea5ee21a.gifExploring Local Storage in iOS: iStorageEnumV2.0
377ae0333d0f4b7b97307c9eea5ee21a.gifRecursive enums in Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifThe Tale of Method Sizzling: A Coding Adventure
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngExpandable Search Bar + Progressive Blur Effect
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngiOS 18 SwiftUI ScrollView DeepDive
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI: Test Push Notifications With iOS Simulators
96716bcb926741e79bb1c284a88083ca.pngPhraseKit — случайные, но читаемые фразы
96716bcb926741e79bb1c284a88083ca.pngSwift Fluent Icon — fluent иконки от Microsoft
96716bcb926741e79bb1c284a88083ca.pngSwift Semantic Search — семантический поиск в реальном времени на устройстве

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Использование Чистой Архитектуры в Android излишество? — Обсуждение на Reddit
• Вредные советы, как приходить с вопросами к техлиду
• Деструктуризация в Kotlin с примерами
• Когда ваше приложение умирает — жизненный цикл activity в Android для QA
• Передача данных между фрагментом и BottomSheetDialogFragment с использованием Dagger и Navigation Component
• Оптимизация Gradle: избавляемся от Android-модулей
• ByteWeaver. Инструментирование байт-кода во имя великого блага
• Используем библиотеку Android Security Lints для Android
377ae0333d0f4b7b97307c9eea5ee21a.gifAdvanced Kotlin Flow Cheat sheet (for Android Engineer)
377ae0333d0f4b7b97307c9eea5ee21a.gifMade by Google 2024
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Release Automation — Our Journey to Fully Automated Weekly Releases
377ae0333d0f4b7b97307c9eea5ee21a.gifComposing Suspend Functions
377ae0333d0f4b7b97307c9eea5ee21a.gifJetpack Compose Theme with Composition Local: Spacing, Shaping, and Status Colors
377ae0333d0f4b7b97307c9eea5ee21a.gifEfficient Render Passes — On Tile-Based Rendering Hardware
377ae0333d0f4b7b97307c9eea5ee21a.gifPrefer Composition over Inheritance
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Process Lifecycle + Coroutines == ❤
377ae0333d0f4b7b97307c9eea5ee21a.gifAdvanced Bottom Sheet With Flexible Configuration for Compose
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Get Access to ALL External Media Files (Works on Android 15!)
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Pass Custom NavTypes in Compose Type-Safe Navigation
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKotlin«s Elegant Deceptions Simple APIs, Unusual Tactics
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHarmonizing Kotlin codebases with Konsist
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAndroid, Compose, Multiplatform & Server — Inject them all with Koin
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngElevating Android App Resilience: Incident Management Strategies
96716bcb926741e79bb1c284a88083ca.pngJetpack Compose Endless Horizontal Pager Animation — демо горизонтального пейджера
96716bcb926741e79bb1c284a88083ca.pngCat Activity — трансляция активности в IDE в Discord

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

• Как мы создали приложение для ТСД на Flutter с интеграцией 1С и внедрили его на 200 фабриках в Китае
• Внедрять Kotlin Multiplatform легко. Масштабировать сложно.
• От Web к Native с React
• PWA vs Native: где приложения для iOS и Android больше никогда не пригодятся
• Знакомимся с Flutter GPU
• Оптимизация производительности Flutter приложений
• Что думают про Flutter техлиды: инсайты из опроса
• Полный гайд по тестированию на Flutter. Часть 9: Best practices написания Unit-тестов + Части 7–8: Ошибки, которые усложняют написание тестов
• Почему вам не нужен Kotlin Multiplatform
• Создание indoor-карты здания во Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifRust GUI library via Flutter, done simple
377ae0333d0f4b7b97307c9eea5ee21a.gifForeground Services in Flutter: Run tasks when your App is minimized
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter Magic: Changing App Icons Dynamically (Even on Stubborn Android!)
377ae0333d0f4b7b97307c9eea5ee21a.gifEnsuring Seamless User Experience: Implementing In-App Updates in Flutter
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngDiving into Advanced Compose Multiplatform Modifiers and Their Impact on Multiplatform Development

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

• Как мы соединили обучение с рабочими задачами и не остались в пустой аудитории. Опыт подготовки команды к SwiftUI
• Архитектура мобильного приложения в разрезе высоких нагрузок и построения экосистем
• Кто реально может стать программистом?
• 30 вопросов команде и себе — техника и практика формулировка хороших вопросов
• VK Звонки: поднимаем планку качества WebRTC-звонков
• Как пользоваться DivKit
• Количество вакансий для разработчиков сокращается
• CodeRabbit получил $16 млн на ИИ для Code Review
• Cursor, конкурент GitHub Copilot, привлек Cерию A на $60 млн при оценке в $400 млн
377ae0333d0f4b7b97307c9eea5ee21a.gifHow we deleted 4195 code files in 9 hours
377ae0333d0f4b7b97307c9eea5ee21a.gifEnterprise Mobile Apps Development Principles
377ae0333d0f4b7b97307c9eea5ee21a.gifVariability, Not Repetition, is the Key to Mastery
377ae0333d0f4b7b97307c9eea5ee21a.gifFollowing Industry Trends Can Be a Career Trap
377ae0333d0f4b7b97307c9eea5ee21a.gifHow I Created 175 Fonts Using Rust
377ae0333d0f4b7b97307c9eea5ee21a.gifPractices of Reliable Software Design
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngApple Design Award Winner Devin Davies Shares His Learning Strategies
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKotlin for Data Analysis: Exploring Dataframes and Visualizations in Notebooks
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAWS Certified Developer Associate Certification Course
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngDesign a Car mobile app for iOS 18 in Figma

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

• Epic Games Store с Fortnite запустился на iOS
• Epic Games предоставила грант AltStore PAL и тот стал бесплатным
• Spotify начал показывать цену на сайте в iOS
• Deep Live Cam заменяет лицо в трансляции в реальном времени
• Apple Search Ads заблокировали для российских аккаунтов
• Patreon будет платить 30% комиссию Apple

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

• Я больше не верю публичным датасетам
• Открытый проект Wi-Fi Bluetooth микророутера

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

© Habrahabr.ru