Мобильная разработка за неделю #509 (02 — 08 октября)

В новой подборке фреймворк Observation в Swift и быстрый и безопасный DI на Kotlin, побочные эффекты Jetpack Compose и написание UX-текстов, генератор межъязыковых мостов, самые скачиваемые и зарабатывающие приложения в России и многое другое.

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

8-phu3u7wuvjeyathzyecjneuvs.jpeg

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Осваиваем фреймворк Observation в Swift
• Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений
• Как ускорить сборку проекта и не остановить разработку
• Забудь про UITableView
• Новые подходы к работе с регулярными выражениями в Swift. Просто о сложном
• О дивный новый мир со Swift Concurrency
• Поваренная книга SwiftUI: изображения и кнопки
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDebugging Improvements in Swift 5.9
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCrossing the Boundary
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCreating Shortcuts with App Intents
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTaking your Strings Catalogs to the Next Level
• 377ae0333d0f4b7b97307c9eea5ee21a.gifForce Update Mechanism
• 377ae0333d0f4b7b97307c9eea5ee21a.gifRecreate a Dribbble App Design with UIKit
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to build a Tuist plugin and publish it using SPM and version control
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA New Approach to Testing in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSync Data in SwiftUI Using NSUbiquitousKeyValueStore
• 377ae0333d0f4b7b97307c9eea5ee21a.gifOptimizing Binaries — How Does the Linker Help Reduce App Size
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe SOLID principles with practical examples in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAbstract Class vs. Protocol-Oriented Approach in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifComparing the Performance of the Top 6 Analytics SDKs for iOS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Optimize Your iOS App Performance
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUnderstanding SwiftUI ViewModifiers: A Comprehensive Guide
• 377ae0333d0f4b7b97307c9eea5ee21a.gifiOS Microapp Architecture
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUnveiling the Data Modeling Principles of SwiftData
• 377ae0333d0f4b7b97307c9eea5ee21a.gifRecreate a Dribbble App Design with UIKit
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSiri Intents for WatchOS
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCustom In-App Notification«s — Xcode 15 — SwiftUI Tutorials
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to get started with Swift Concurrency (Beginner Tutorial)
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngChanging Status Bar Style in 5 Min«s — SwiftUI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngBuild an Air Quality Index App with SwiftUI Map & Google AQI API
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Build a Custom Sheet in SwiftUI
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngNew and Deprecated APIs in iOS 17
• 96716bcb926741e79bb1c284a88083ca.pngPapyrus: типобезопасный HTTP клиент для Swift
• 96716bcb926741e79bb1c284a88083ca.pngMetaCodable: расширение Codable с помощью метапрограммирования макросов

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Библиотека Scout — быстрый и безопасный DI на Kotlin
• Побочные эффекты Jetpack Compose в подробностях
• Использование строковых ресурсов в ViewModel
• Миграция конфигурации сборки с Groovy на Kotlin
• Как устроена логика навигации флоу в приложении Тинькофф
• Введение в безопасность Android-приложений
• Удалил один класс, а сломался весь проект: Decoupling
• Корутинные загадки
• Измеряем sequence
• Вышел Android 14
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIntegrating Adaptability features into your Native Game
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA feature flag PSA
• 377ae0333d0f4b7b97307c9eea5ee21a.gifScreenshot testing in Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTesting Android PagingSource
• 377ae0333d0f4b7b97307c9eea5ee21a.gifOptimize thermal and CPU performance with the Android Dynamic Performance Framework
• 377ae0333d0f4b7b97307c9eea5ee21a.gifElegant Event Handling in Kotlin — A Refactoring Walkthrough
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUnlocking the Power of ProGuard in Android: A Comprehensive Guide
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding Kotlin Coroutine Framework from Scratch: Part 2 -Reinventing Dispatchers
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUnderstanding the Difference Between KSP and KAPS in Kotlin
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIntroducing RVTimeTracker — RecyclerView Time Tracker
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAndroid Custom Views — 1 (Matrix & PorterDuffXfermode)
• 377ae0333d0f4b7b97307c9eea5ee21a.gifElegant Event Handling in Kotlin — A Refactoring Walkthrough
• 377ae0333d0f4b7b97307c9eea5ee21a.gifRise of Jetpack Media 3 — Revolutionising Media Playback on Android
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMigration: Gson to Kotlinx.Serialization
• 377ae0333d0f4b7b97307c9eea5ee21a.gifScratch Card in Android jetpack compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifGestures in Jetpack compose — All you need to know
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHidden Mobile App Security Risks in Android Libraries
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAutomating Android Builds with GitHub Actions: From Debug to Release
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCommon Android Developer Interview Questions and Answers
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow we built a Jenkins-Powered Cloud CI/CD Pipeline for our Android App in 2023
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngNow in Android: 92 — Studio Bot expansion, Firebase integration, Android Studio, and much more!
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Build a Camera App With CameraX — Taking Photos
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to Build a Custom Gradle Plugin to Share Project Config — Multi-Module Architecture
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAdd Custom Google Fonts in your App
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to make and use BOM (Bill of Materials) dependencies in Android projects
• 96716bcb926741e79bb1c284a88083ca.pngNotify: заметки с MVVM, Compose и Material3
• 96716bcb926741e79bb1c284a88083ca.pngComposeFadingEdges: исчезающие края для Compose

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

• Модификаторы классов для сопровождающих API
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA fond farewell to Flutter and Dart
• 377ae0333d0f4b7b97307c9eea5ee21a.gifEfficient Dart: optimizing CPU-bound load in Flutter without missing a frame
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter: Seamless multi-device debugging
• 377ae0333d0f4b7b97307c9eea5ee21a.gifIntroducing Carbon for React Native
• 377ae0333d0f4b7b97307c9eea5ee21a.gifEverything you need to know about Enum with Flutter and Dart
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSupercharge Your Flutter Development: Top Plugins to Boost Productivity
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPushing Flutter to the Limit: The Ultimate Guide to Reducing Flutter App Size
• 377ae0333d0f4b7b97307c9eea5ee21a.gif7 Tips to Boost .NET MAUI Mobile App Performance
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding an offline-first React Native app with Expo, WatermelonDB, and Supabase
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to use Parcelable in KMP?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifReact Native performance optimization using Render Locks
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKMP Hopes & Dreamcatchers with Ritesh Gupta
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngGetting Started with Ignite
• 96716bcb926741e79bb1c284a88083ca.pngAnyPass: управление паролями на Compose Multiplatform

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

• Как дизайн-мышление превратило Airbnb из неудачного стартапа в бизнес с миллиардными оборотами
• Как писать UX-тексты: изучаем интерфейсы мессенджеров
• Почему дизайн должен начинаться с исследования, даже когда всё очевидно
• Дизайнер интерфейсов: кого ищут компании, 10 лет спустя
• Как коридорное исследование помогло обновить каунтеры тредов в мессенджере
• Генератор межъязыковых мостов для мобильных приложений PyDjinni
• GitHub Innovation Graph — как разработчики всего мира работают на GitHub
• Microsoft обновила Teams
• Beams помогает продуктовым командам сосредоточиться на работе
• Количество вакансий в IT в России выросло на 10% за год
• Ozon запустит собственную оболочку для Smart TV со встроенными сервисами VK
• Самые высокооплачиваемые вакансии сентября в области разработки приложений
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow To Create A Product Roadmap
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDatabase Migrations
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA Guide to Prototyping Automotive Interfaces
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWhich open-source monospaced font is best for coding?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifLessons from debugging a tricky direct memory leak
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to hire
• 377ae0333d0f4b7b97307c9eea5ee21a.gifDatabase Performance at Scale: A Free, Open Source Book

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

• Самые скачиваемые и зарабатывающие приложения в России в сентябре 2023
• Pokémon Sleep в первый же месяц обогнал другие приложения для отслеживания сна
• Promova помогает людям с дислексией учить языки
• Zoom представил офисный пакет для совместной работы Zoom Docs
• Telegram исполнилось 10 лет, а доходы стагнируют
• Потребительские расходы на мобильных устройствах в 2023 превысили $100 млрд в рекордный срок — отчет Data.ai за 3 квартал
• Как подружить бизнес и процессы
• Суд признал законным решение ФАС оштрафовать Apple на 1.2 млрд рублей
• Приложение Microsoft Lists стало доступно всем пользователям
• Apple готовит обновленный поиск для App Store и Spotlight

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

• Нейронные сети для планирования движения беспилотных автомобилей
• Как собрать бюджетный умный дом. Общие принципы проектирования на оборудовании Wiren Board
• Калибровка магнитометра: через вращения к компасу
• Как я делал бюджетное устройство мониторинга качества среды и что из этого вышло
• SAGE: коррекция орфографии с помощью языковых моделей
• KC868-ASR: креа-нода (креативная для креативных)
• Тестируем PCIe в новом Raspberry Pi 5
• Starting Electronics: руководство по веб-серверам на Arduino. Часть 17. Завершающий урок и итоги
• Google представил Pixel 8 и Pixel 8 Pro
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow Transformers Work

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

© Habrahabr.ru