Мобильная разработка за неделю #546 (8 — 14 июля)

В нашем новом дайджесте пишем виджет для Control Center и делаем куб для сторис, развенчиваем мифы про современную Android-разработку и оптимизируем приложение, переходим с Xamarin на Flutter, оцениваем важные вещи в программировании, используем темные паттерны, оцениваем самые скачиваемые и зарабатывающие приложения в России в июне. Подключайтесь!

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

2dnvoekpnycoza5hsdjeqyptl7m.png

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Расширяем возможности мобильного приложения на WebView. Опыт Ozon Банк
• Постепенный перенос проектов и пакетов на Swift 6
• Пишем виджет в Control Center (iOS 18)
• Изучаем новые структуры данных для iOS разработчика
• Куб для ваших сторис*
• Что нового в Swift 6?
• По оценкам IDC, в 2024 году Apple продаст менее 500 тысяч устройств Vision Pro
• Как работает AdAttributionKit
• Поваренная книга SwiftUI: кнопки — Часть 1
377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Animatable and AnimatablePair in SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI can be a bit… eager
377ae0333d0f4b7b97307c9eea5ee21a.gifZoom transitions
377ae0333d0f4b7b97307c9eea5ee21a.gifBackpressure in Combine
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding a custom application UI with SwiftUI & iOS 18 API
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding the inverted scroll of a messaging app
377ae0333d0f4b7b97307c9eea5ee21a.gifMobile Deployment Pipelines for $0
377ae0333d0f4b7b97307c9eea5ee21a.gif5 Strategies for Managing Image Resources Effectively in iOS
377ae0333d0f4b7b97307c9eea5ee21a.gifAutomating pre-production iOS app builds
377ae0333d0f4b7b97307c9eea5ee21a.gifRunning a package from Xcode Build phase
377ae0333d0f4b7b97307c9eea5ee21a.gifXCUITest (iOS) Automation with POM Techniques
377ae0333d0f4b7b97307c9eea5ee21a.gifWrite Clean and Maintainable XCUITests with Screen Chaining
377ae0333d0f4b7b97307c9eea5ee21a.gifAI features in Xcode 16: is it good?
377ae0333d0f4b7b97307c9eea5ee21a.gifCheck if your app has a newer version on the App Store using Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifStreamlining Menu Browsing with OCR Text Recognition
377ae0333d0f4b7b97307c9eea5ee21a.gifUtilizing Apple«s oslog for Enhanced Logging in Xcode
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngZoom Transitions — SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAI Features in Xcode 16: is it Good or Bad?
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngLaying out views with ContainerRelativeFrame in SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAnimated Scroll Wheel Picker — SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngRemoving More Button from Tab bar — SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCreate Interactive In-App Polls With SwiftUI
96716bcb926741e79bb1c284a88083ca.pngStreamUI — генерация видео в SwiftUI
96716bcb926741e79bb1c284a88083ca.pngDSFDropFilesView — NSView для drag-and-drop файлов

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Развенчиваем 6 мифов про современную Android-разработку
• Kotlin Coroutines под капотом
• Strong Skipping Mode — новый способ оптимизации стабильности в Jetpack Compose
• Создавай и упрощай: оптимизируем Android-приложение с видеоконтентом
• Видео с прозрачностью на Jetpack Compose — запросто
• Как обойти множественное наследование в Kotlin и Java. Агрегация и композиция
377ae0333d0f4b7b97307c9eea5ee21a.gifArchitecture related decisions in Android — Error handling and Monads
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin«s @Keep Annotation: Keeping Your Code Safe and Sound
377ae0333d0f4b7b97307c9eea5ee21a.gifLet«s clarify some misconceptions around android development these days
377ae0333d0f4b7b97307c9eea5ee21a.gifDeclarative Gradle
377ae0333d0f4b7b97307c9eea5ee21a.gifTop 5 Android Studio Plugins
377ae0333d0f4b7b97307c9eea5ee21a.gifWhich Map Transformation Should I Use?
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin Builder Inference Explained
377ae0333d0f4b7b97307c9eea5ee21a.gifRxJava to Kotlin Coroutines: The Ultimate Migration Guide
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Configure Android Build System?
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin Code Reuse: Composing like you«re Inheriting
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid MVVM Architecture for A Production Ready App
377ae0333d0f4b7b97307c9eea5ee21a.gifLeveraging BFF and Dynamic UI in Android Applications with Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifSafe your API Keys via Secrets Gradle plugin
377ae0333d0f4b7b97307c9eea5ee21a.gifTicket UI Using compose
377ae0333d0f4b7b97307c9eea5ee21a.gifImproving Perceived Performance with Delayed Visibility
377ae0333d0f4b7b97307c9eea5ee21a.gifFrom Zero to Billions: Building a High-Performance Kotlin App in Two Months
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngThe Top 5 Practices That Make My Android Architecture More Scalable
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngGenerating Kotlin SDKs with Smithy
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKotlin/Native BigDecimal: A drop-in replacement for java.math.BigDecimal
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngK2: How to Make a Better Compiler but Keep Kotlin the Same
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngIt«s Compose O«Clock, Draw on My Watch!
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCrashlytics for your Android apps
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKotlin Code Reuse: Composing like you«re Inheriting
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngExploring Material3 Adaptive Layout
96716bcb926741e79bb1c284a88083ca.pngValkyrie — генерация Compose ImageVector из SVG/XML
96716bcb926741e79bb1c284a88083ca.pngFig — Google Таблицы в качестве удаленного конфига

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

• Первый взгляд на переход с Xamarin Native на Flutter
• Как мы переходили с Xamarin на Flutter
• Rive-анимация для Flutter-приложений: почему мы любим ее больше Lottie, когда ее применять и какие фишки использовать
377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Date and Time Management in iOS with Kotlinx DateTime: A Step-by-Step Guide
377ae0333d0f4b7b97307c9eea5ee21a.gifBuild Android and iOS apps with SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifGoogle Pay Integration in Flutter App
377ae0333d0f4b7b97307c9eea5ee21a.gifCodemagic setup with flavors. Flutter CI/CD
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHTTP Requests in Kotlin Multiplatform With Ktor — KMP for Beginners
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCompose Multiplatform performance on iOS
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCode push for Flutter
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngRewriting freezed with Macros
96716bcb926741e79bb1c284a88083ca.pngFlowMVI — архитектурный фреймворк Kotlin Multiplatform на основе корутинов
96716bcb926741e79bb1c284a88083ca.pngColors AI — генератор цветовых схем с ИИ на Flutter

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

• Новый опрос Developer Nation
• Сам написал, сам полетал: как и зачем я разработал 3D-игру с нуля под компьютеры из 90-х в 2024 году?
• Важные вещи в программировании 2024
• Моё тестовое в Билайн на позицию стажёра
• РКН по ошибке снес безобидное приложение в AppStore, на волне последних чисток
• 5 советов по разработке игр от соло-разработчика
• System Design-интервью для практиков
• 10 тупых вопросов на собеседовании (и как на них отвечать) + все собеседования
• Локальная разработка в Авито
• Rust и Kotlin растут в TIOBE Index
• ChatGPT хорошо программирует в задачах, существовавших до 2021 года, но испытывает трудности с новыми
377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding and scaling Notion«s data lake
377ae0333d0f4b7b97307c9eea5ee21a.gifMobileLLM — Language Models for On-Device Use Cases
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to set priorities?
377ae0333d0f4b7b97307c9eea5ee21a.gifWeird things I learned while writing an x86 emulator
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAI on Mac Made Easy: How to run LLMs locally with OLLAMA in Swift/SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngLearn TypeScript — Full Course for Beginners

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

• Sekai получил лицензию на «Наруто» для разработки приложений для фанатов аниме
• 76% приложений и сайтов с подпиской использует темные паттерны
• Приложение для арт-терапии Scribble Journey позволяет выразить эмоции с помощью зарисовок
• Самые скачиваемые и зарабатывающие приложения в России в июне 2024
• Apple «временно» одобрила Epic Games Store, но потребовала изменений
• Pokemon Go: история революции в дополненной реальности
• Lamoda Tech Analytics Party: материалы встречи
• Wayther — приложение с прогнозом погоды, разработанное специально для автопутешествий
• Карты Google на iOS начали показывать спидометр (через 5 лет после Android)
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to improve funnel conversion
377ae0333d0f4b7b97307c9eea5ee21a.gifHow apps can innovate

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

• Обзор нейросетей для создания иллюстраций и артов
• Как жить в загородной бане, пока строится умный дом
• Как выбрать контроллер для DIY (сводная таблица по 30++ моделям с комментариями)
• Сравниваем новые чипы Qualcomm с процессорами Apple, Intel и AMD

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

© Habrahabr.ru