В нашем новом дайджесте учимся работать с Metric и DivKit, превращаем макеты в код Compose, пишем тексты для экранов подтверждений и сообщений об ошибках, настраиваем Charles, создаем игру для Windows Mobile (самое время!) и делаем многое-многое другое!
Подключайтесь к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.
![](https://habrastorage.org/webt/jw/tz/uc/jwtzucwvwzhnizjueubklnekkqi.jpeg)
iOS
• Отслеживаем сбои приложения с MetricKit
• Server-Driven UI с DivKit
• Performance в SwiftUI
• Одна иконка приложения в Xcode 14
• Аналитика и нотификации для iOS
• Mac App Store стагнирует
• Обновлены гайдлайны App Store
• Стал доступен SKAdNetwork 4.0
• Apple готовится выпустить новые Mac
•
Visualise the Matthew Effect with Swift Charts
•
Three Ways to Refactor Massive SwiftUI
•
Creating a lane of our own for iOS automation
•
Form Validation in UIKit Made Easy With Combine
•
Design Patterns in iOS
•
Swift Composable Architecture
•
Tracking your iOS app crashes, OOMs and other terminations with MetricKit
•
Build a 3D Editor in SwiftUI and SceneKit
•
Fixing SwiftUI navigation with UIKit
•
UIView/NSView styling with @propertyWrapper
•
Create a Card with an Image Outside its Bounds in SwiftUI
•
Build a chat feature using Pusher Channels in Swift
•
iOS App As a Microservice. Using SwiftUI in Modular App
•
Accelerate Your iOS Build Time Process Within Xcode
•
How To Avoid Merge Conflicts In Xcode Projects
•
Custom Tabbar in SwiftUI (iOS 15+)
•
PhoneNumberKit: парсинг и форматирование телефонных номеров
•
OpenFind: поиск слов на фотографиях
•
AlertToast: уведомления и «тосты» для SwiftUI
Android
• Relay от Google превращает макеты в код Compose
• Китай, Android и чипы RISC-V: зачем китайские компании добавляют поддержку открытой архитектуры в мобильную ОС
• Разбор кода Pocket Casts
• Как в Android запрещали фоновую работу и улучшали расход батареи
• Coroutines: боль обработки ошибок
• Откуда возникает TransactionTooLargeException, если я ничего такого не делал?
• 7 плагинов Android Studio, ускоряющих разработку приложений
• Что там по автотестам на Android в 2022?
• Всем выйти из сумрака: как добавить тень на Android
• Приключения онлайн-кинотеатра Premier в Android TV, или Как мы javascript внедряли
• Экспресс до стора: как мы запускали релизный поезд
• Material Design 3 стал стабильным
•
Modelling dating cards navigation with Appyx
•
Migrating to Navigation with Jetpack Compose
•
Comparing StateFlow, SharedFlow, and CallbackFlow
•
Sealed classes in Kotlin
•
It’s Time for an App Icon Makeover!
•
From zero to 10 million lines of Kotlin
•
Persisting and sharing ink
•
Customizing the Switch Button in Android
•
Introducing KMMBridge for Teams
•
Gestures in Jetpack Compose: Getting Started
•
My Experience as an Android Engineer; One Year Later.
•
Now in Android: a Material 3 case study
•
Understand Android Jetpack’s WorkManager in 5 minutes
•
How to pause a coroutine
•
OkLayoutInflater
•
Turbocharge: Storytel’s Story of weekly mobile app releases
•
Sheets Compose Dialogs: готовые диалоги и View для Compose
•
Compose AnimatedList: анимированные списки
Кроссплатформа
• React Native is better than Flutter*
• Как стать Flutter-разработчиком, или Почему кроссплатформа сейчас — это лучший выбор
• Полезные плагины VS Code для разработки кроссплатформенных приложений с использованием React Native и Flutter
• Что почитать для Unity разработчика: Рендер
• Генерация кода API клиента приложения на основе пакета dart openapi generator
•
Shortening Flutter test feedback cycle in VS Code
•
Using Mason and bricks in your Flutter app: Beginner’s guide
•
SonarQube with Flutter
•
Simulate Birds Flocking Using Multi-Agent System and Flutter Flame
•
Flutter: Realtime Participants Counter
•
Make your Flutter projects more readable and effective with extensions!
•
How we made our app 80% faster
•
Input Chip In Flutter
Разработка
• Вы уверены? Как писать тексты для экранов подтверждения
• Как создавать лучшие сообщения об ошибках — опыт Wix
• Пишем 3D игру под Windows Mobile, ч.1
• Как настроить Charles
• Осознанная автоматизация тестирования в геймдеве
• Podlodka #291: продуктивность разработчика
• Как кастомизировать UI артефакты для Selenide + Selenoid + Allure (with TestOPS)
• Как превратить сайт в удобное мобильное приложение на примере интернет-банка «ВТБ Онлайн»
• Синхронизация в UX-дизайне: как поддерживать единую стилистику сервисов для разных устройств
• Создание кастомных чатов с помощью Firebase Realtime database
• Самые высокооплачиваемые вакансии октября в области разработки приложений
• Самые популярные языки программирования в рейтинге RedMonk
• GitHub достиг дохода $1 млрд в год
• Как в Gas уменьшили нагрузку Redis на CPU на 80%
• Видео Firebase Summit 2022
• Microsoft начинает продажи Windows Dev Kit 2023
•
How Discord Indexes Billions Of Messages?
•
The Secret Art of Storytelling in Programming
•
Mobile Design in 2022-2023
•
My software developer intern quit his job, after 3 working days
•
Faster hardware is a bad first solution to slow software
•
Kweb — веб-фреймворк для Kotlin
Аналитика, маркетинг и монетизация
• Не только tinder вероятно знает с кем вы спите. Патент No: 0342684 A1
• Сколько стоит любовь в Tinder? Unit-экономика финансового отчета 2021 Match Group
• Google приобрел аватары Alter
• Spotify называет правила Apple «душащими конкуренцию» + Spotify убрал покупку аудиокниг из iOS-приложения
• MyTracker запустил «Аудитории» — автоматическую передачу сегментов в рекламные платформы
• Apple открыла дополнительные рекламные места в App Store + Разработчики критикуют новую рекламу в App Store + Apple приостановила размещение рекламы «азартных игр и некоторых других категорий»
• Age of Empires снова выходит для мобильных устройств
• Российский рынок мобильных игр вырастет на 25% в 2022
• Duolingo приближается к $100 млн квартальной выручки
AI, Устройства, IoT
• Прогнозирование качества шампанского с помощью Machine Learning. Опыт Bollinger
• Нейросети на RISC-V с Movidius Neural Compute Stick
• ESP32 Tuya IoT adapter: родила царица в ночь…
• SWUpdate, Yoctо(ерный) театр и paperina
• Семь способов передачи телеметрии из Azure RTOS через интернет
• Bumble открывает свой ИИ для определения непристойных фотографий
•
How To Turn Yourself Into Pixar Character Using Stable Diffusion AI
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подключайтесь к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.
![](https://habrastorage.org/webt/jw/tz/uc/jwtzucwvwzhnizjueubklnekkqi.jpeg)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Отслеживаем сбои приложения с MetricKit
• Server-Driven UI с DivKit
• Performance в SwiftUI
• Одна иконка приложения в Xcode 14
• Аналитика и нотификации для iOS
• Mac App Store стагнирует
• Обновлены гайдлайны App Store
• Стал доступен SKAdNetwork 4.0
• Apple готовится выпустить новые Mac
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Relay от Google превращает макеты в код Compose
• Китай, Android и чипы RISC-V: зачем китайские компании добавляют поддержку открытой архитектуры в мобильную ОС
• Разбор кода Pocket Casts
• Как в Android запрещали фоновую работу и улучшали расход батареи
• Coroutines: боль обработки ошибок
• Откуда возникает TransactionTooLargeException, если я ничего такого не делал?
• 7 плагинов Android Studio, ускоряющих разработку приложений
• Что там по автотестам на Android в 2022?
• Всем выйти из сумрака: как добавить тень на Android
• Приключения онлайн-кинотеатра Premier в Android TV, или Как мы javascript внедряли
• Экспресс до стора: как мы запускали релизный поезд
• Material Design 3 стал стабильным
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
• React Native is better than Flutter*
• Как стать Flutter-разработчиком, или Почему кроссплатформа сейчас — это лучший выбор
• Полезные плагины VS Code для разработки кроссплатформенных приложений с использованием React Native и Flutter
• Что почитать для Unity разработчика: Рендер
• Генерация кода API клиента приложения на основе пакета dart openapi generator
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Вы уверены? Как писать тексты для экранов подтверждения
• Как создавать лучшие сообщения об ошибках — опыт Wix
• Пишем 3D игру под Windows Mobile, ч.1
• Как настроить Charles
• Осознанная автоматизация тестирования в геймдеве
• Podlodka #291: продуктивность разработчика
• Как кастомизировать UI артефакты для Selenide + Selenoid + Allure (with TestOPS)
• Как превратить сайт в удобное мобильное приложение на примере интернет-банка «ВТБ Онлайн»
• Синхронизация в UX-дизайне: как поддерживать единую стилистику сервисов для разных устройств
• Создание кастомных чатов с помощью Firebase Realtime database
• Самые высокооплачиваемые вакансии октября в области разработки приложений
• Самые популярные языки программирования в рейтинге RedMonk
• GitHub достиг дохода $1 млрд в год
• Как в Gas уменьшили нагрузку Redis на CPU на 80%
• Видео Firebase Summit 2022
• Microsoft начинает продажи Windows Dev Kit 2023
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Не только tinder вероятно знает с кем вы спите. Патент No: 0342684 A1
• Сколько стоит любовь в Tinder? Unit-экономика финансового отчета 2021 Match Group
• Google приобрел аватары Alter
• Spotify называет правила Apple «душащими конкуренцию» + Spotify убрал покупку аудиокниг из iOS-приложения
• MyTracker запустил «Аудитории» — автоматическую передачу сегментов в рекламные платформы
• Apple открыла дополнительные рекламные места в App Store + Разработчики критикуют новую рекламу в App Store + Apple приостановила размещение рекламы «азартных игр и некоторых других категорий»
• Age of Empires снова выходит для мобильных устройств
• Российский рынок мобильных игр вырастет на 25% в 2022
• Duolingo приближается к $100 млн квартальной выручки
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Прогнозирование качества шампанского с помощью Machine Learning. Опыт Bollinger
• Нейросети на RISC-V с Movidius Neural Compute Stick
• ESP32 Tuya IoT adapter: родила царица в ночь…
• SWUpdate, Yoctо(ерный) театр и paperina
• Семь способов передачи телеметрии из Azure RTOS через интернет
• Bumble открывает свой ИИ для определения непристойных фотографий
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.