Мобильная разработка за неделю #577 (24 февраля — 2 марта)

В новом дайджесте укрощение анимаций и оживление смартфона, эффективный бэкграунд, уродливый код и глупые вещи, потери денег от плохого дизайна, индекс цифрового рынка за 4 квартал, Gemini Code Assist для всех и многое другое. Заходите!

fenq0df7a8t7yizusp2dr5uhbg4.jpeg

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

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Протокол Animatable: укрощение анимаций в SwiftUI
• Task.sleep () и Task.yield (): в чем разница
• Переходим на SwiftUI
• Задачи с собеседования: LeetCode — Перестановка в строке
377ae0333d0f4b7b97307c9eea5ee21a.gifSharingGRDB: A SwiftData Alternative
377ae0333d0f4b7b97307c9eea5ee21a.gifUsing SwiftUI«s Improved TabView with Sidebar on iOS 18
377ae0333d0f4b7b97307c9eea5ee21a.gifQuick guide on home screen quick actions for SwiftUI
377ae0333d0f4b7b97307c9eea5ee21a.gifFrom Natural Language to Swift Action: Demystifying LLM Function Calling
377ae0333d0f4b7b97307c9eea5ee21a.gifMusic recognition with ShazamKit
377ae0333d0f4b7b97307c9eea5ee21a.gifHow I Slashed My Xcode Build Times by 85%
377ae0333d0f4b7b97307c9eea5ee21a.gifTapping on Stack Views
377ae0333d0f4b7b97307c9eea5ee21a.gifHow to write Metal Shaders on iOS
377ae0333d0f4b7b97307c9eea5ee21a.gifEquatable Vs Comparable Protocols in Swift
377ae0333d0f4b7b97307c9eea5ee21a.gifVisual Studio Code setup for iOS development with Copilot
377ae0333d0f4b7b97307c9eea5ee21a.gifAn Ode to Swift Enums: The View Models That Could
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI: Peer-to-Peer (P2P) with Multipeer Connectivity Framework
377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI: Locate Peers with Nearby Interaction Framework
377ae0333d0f4b7b97307c9eea5ee21a.gifSimple Modularization setup for a New App
377ae0333d0f4b7b97307c9eea5ee21a.gifWhat«s new in Swift 6.1?
377ae0333d0f4b7b97307c9eea5ee21a.gifSymmetrical and asymmetrical transitions in SwiftUI with the Scroll Transition modifier
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngApple Books Scroll Animation — Complex UI — SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngPower of new Scroll APIs — Custom Scroll Indicators — SwiftUI
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMastering Images in SwiftUI — Assets, Bundles, Remote URLs & Effects
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftUI Ripple Transition Effects — Custom Transitions
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngTrie Data Structure Explained in Swift: The Ultimate Guide to Efficient Search
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCapture & Share SwiftUI Views as Images with ImageRenderer & ShareLink
96716bcb926741e79bb1c284a88083ca.pngXcodebuild.nvim — разработка iOS-приложений в Neovim
96716bcb926741e79bb1c284a88083ca.pngYams — парсер YAML для Swift

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Остерегайтесь READ_MEDIA_IMAGES
• Как оживает смартфон: Android на старте
• Эффективный бэкграунд: организация стабильной фоновой работы в связке двух мобильных медтех приложений
• Как я прототипирую цвета в Jetpack Compose
• Android на Snapdragon 8 Elite будет поддерживаться 8 лет
• Производительность sequence, stream и collection в JVM
• Непростые вопросы про Kotlin Coroutines
377ae0333d0f4b7b97307c9eea5ee21a.gifFlat approach for tabbed Navigation in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifGradle Plugins Best Practices
377ae0333d0f4b7b97307c9eea5ee21a.gifHandling Token Expiration in Retrofit: Automatic Token Refresh with OkHttp
377ae0333d0f4b7b97307c9eea5ee21a.gifReliable Timekeeping with the TrustedTime API in Android
377ae0333d0f4b7b97307c9eea5ee21a.gifWhy Your Network Calls on the Main Thread Aren«t Crashing your Android App
377ae0333d0f4b7b97307c9eea5ee21a.gifVersioning your Android app like a Leetcode problem
377ae0333d0f4b7b97307c9eea5ee21a.gifDeploy Android App on Play Store using Github Action
377ae0333d0f4b7b97307c9eea5ee21a.gifMaking basicMarquee-Modifier More Accessible
377ae0333d0f4b7b97307c9eea5ee21a.gifLocalization in Jetpack Compose
377ae0333d0f4b7b97307c9eea5ee21a.gifServer-Driven UI with Compose Remote Layout
377ae0333d0f4b7b97307c9eea5ee21a.gifAdvanced Coroutines Patterns
377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid System Design: Building a Stopwatch from Handlers to Coroutines (MVVM + Flow)
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSingle State Fields VS. State Data Class In Your ViewModel — What«s Best?
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngJunie — The New AI Coding Agent from JetBrains — Can it build a Compose Desktop app?
96716bcb926741e79bb1c284a88083ca.pngVideo Player App — приложение для просмотра видео на MVVM и Kotlin
96716bcb926741e79bb1c284a88083ca.pngLucky Wheel View Compose — колесо удачи на Compose

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

377ae0333d0f4b7b97307c9eea5ee21a.gifCommon mistakes with TextFormFields in Flutter
377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin Multiplatform Scalability Challenges on a Large Project
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter 3.29 and Dart 3.7: Making Our Dev Lives Even Easier
377ae0333d0f4b7b97307c9eea5ee21a.gifCustomize Flutter DataGrid for Enhanced Data Visualization
377ae0333d0f4b7b97307c9eea5ee21a.gifHow stable is Flutter?
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter. Gradient cheat sheet
377ae0333d0f4b7b97307c9eea5ee21a.gifMastering Native Bridging in Flutter: A Deep Dive
377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter Deep Linking: A Complete Guide
96716bcb926741e79bb1c284a88083ca.pngBikeShare — шаринг велосипедов на Kotlin Multiplatform

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

• Полтора года с телефоном на «Авроре»: плюсы и минусы российской ОС с точки зрения обычного пользователя
• Уродливый код и глупые вещи
• Смартфон «из коробки» — большие риски маленького гаджета
• Сколько денег теряет бизнес из-за плохого дизайна? Мы посчитали
• Чем полезен Server Driven UI
• 5 лет опыта ИЛИ 5 раз по 1 году?
• Протестировал две российские системы работы с кодом. Что у меня (не) получилось
• Сделай удобно: подборка UI/UX-кейсов из цифровых и нецифровых продуктов
• Самые высокооплачиваемые вакансии февраля в сфере разработки приложений
• Архитектурный надзор и анализ трейсов в Авито
• Логистические системы — Логистика, доставка, трекинг посылки
377ae0333d0f4b7b97307c9eea5ee21a.gifMinecraft from scratch
377ae0333d0f4b7b97307c9eea5ee21a.gif5 Code Review Anti-Patterns You Can Eliminate with AI
377ae0333d0f4b7b97307c9eea5ee21a.gif8 best open source analytics tools you can self-host
377ae0333d0f4b7b97307c9eea5ee21a.gifCafe Maria. A functional cooking sim game played entirely in MariaDB.
377ae0333d0f4b7b97307c9eea5ee21a.gifHow I Review Code As a Senior Developer For Better Results
377ae0333d0f4b7b97307c9eea5ee21a.gifCode, Sweat, and Tears: Why Imposter Syndrome Never Really Leaves Developers
gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKubernetes and EKS for Beginners — Crash Course

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

• Индекс цифрового рынка за 4 квартал 2024 года: цифровая экономика завершает 2024 год с новыми рекордами
• Фил Шиллер рассказал, что высказывал опасения по поводу комиссий App Store
• RuStore: молодые люди могут тратить в мобильных играх больше 2000 рублей в месяц
• Маркетологи в мобайле: Вячеслав Филимонов (директор по маркетингу Ёбидоёби)
• Дуо умер, да здравствует Duolingo
• Вопреки распространенному мнению, рынок приложений для знакомств продолжает расти — на 10% в 2024 году
• От MVP до приложения с миллионной аудиторией. Кейс развития мобильного приложения для ритейлера Kassir.ru
• Мышление аналитика: как цифры превращаются в деньги
• Apple объявила об инвестиционном плане на $500 млрд и 20 тысяч рабочих мест в США

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

• Встречаем YandexGPT 5 — в Алисе, облаке и опенсорсе
• Gemini Code Assist стал доступен для всех
• Распознавание текста в банке: трудности и решения
• Искусственный интеллект в ритейле: как он предсказывает вашу следующую покупку в приложении
• Получение SMS через SMPP Exolve на ESP8266
• Собираем прошивку NapiLinux и Raspberry Pi OS для микрокомпьютера с помощью Yocto

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

© Habrahabr.ru