Собрали дайджест сразу за две недели — в нем материалы про Composable Architecture и новый компилятор K2, Room для Kotlin Multiplatform и будущее магазинов приложений, самые скачиваемые и зарабатывающие приложения в России в апреле, превращение игрушечного робота-доставщика в ровер и многое другое. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/r/w1560/webt/bg/xa/yt/bgxayt7nhrtirt2la8ewtduwyea.png)
iOS
• The Composable Architecture: мои 3 года использования
• Поля содержимого в SwiftUI
• Result builders in Swift
• SwiftUI уроки (часть 11)
• 38 iOS-разработчиков из примерно 65,000 подписалось на внешние платежи
• Что такое Optional в Swift — вопросы с собеседований
• Apple готовит ИИ-серверы на собственных процессорах
• Apple уточняет условия CTF и вводит правила для iPadOS
•
Developing Embedded Applications with Swift
•
Safely unwrap optional values in SwiftUI bindings
•
How to add a privacy manifest file to your app for required reason API usage?
•
Asking AI to Refactor Swift Code
•
How to solve problems with bitwise operators in Swift
•
The ContentUnavailableView In SwiftUI
•
Swift 6: Access level on import statements
•
How to refactor code with regular expressions
•
4 years of the Composable Architecture
•
Testing Network Layers with Stubs, Mocks, and Spies
•
Inspectors in SwiftUI
•
Extracting app logs from an .xcresult
•
Protocols in iOS Object-Oriented Programming
•
SwiftUI: Multi-Stage Animation
•
SwiftUI Inverting A Boolean Binding
•
Be Careful When You Initialize a State Object
•
Xcode Build Insights: Keep track of project compilation times
•
Design and build apps for watchOS 10
•
Make features discoverable with TipKit
•
Share files with SharePlay
•
YMFF — управление фичами и фиче-флагами
•
Sketch — простое рисование
•
SwiftOBD2 — набор инструментов для работы с OBD2
Android
• Как новый компилятор K2 ускоряет компиляцию Kotlin на 94%
• Anvil Utils: Assisted injection в многомодульных Android проектах без боли
• Новые коллекции в Android
• Как защитить свой код от Gemini in Android Studio
• Как зарегистрировать аккаунт разработчика в Google Play в 2024 году: пошаговая инструкция
• Всегда ли нужна чистая архитектура?
• Вышла Android Studio Jellyfish
• Android 15 позволит приложениям управлять «Режимом отхода ко сну»
• Android мигрирует с Google Fit API на Android Health
•
How to effectively A/B test power consumption for your Android app’s features
•
Kotlin Coroutine mechanisms: runBlocking v. launch
•
Toggle Labels With Icons — Personalizing Accessibility
•
The Road Less Starred: Lessons Learned from My Markdown Twain Library
•
Working On A Multiple Library Project
•
A Step-by-Step Guide to Performing Data Analysis With Kotlin DataFrame
•
Tools and libraries to help your Wear OS app satisfy Google Play app quality requirements
•
Readability of Optimized Kotlin Code
•
Update Your Compass — New Android Orientation API
•
Jetpack Compose to Compose Multiplatform: Transition Guide
•
Protect your code from Gemini in Android Studio
•
Only Show the Tip of the Iceberg
•
Dispatchers — IO and Default Under the Hood
•
What’s new in Android Studio Jellyfish
•
Now in Android: 104 — Android Studio Jellyfish, A/B testing power consumption, AndroidX, and more
•
Learn to Build a Multi-Module Running Tracker App + Wear OS App
•
Three Simple Rules for Subtypes
•
Reversing a Bluetooth LE gadget protocol
•
Survey View — опросы и анкеты на Jetpack Compose
•
Kafka — читайте, слушайте и скачивайте книги
Кроссплатформа
• Room для Kotlin Multiplatform. Пробуем нативное решение
• Интерфейсы для конструкторов в Dart
• Тестирование веб-приложений Flutter с помощью Selenium
• Особенности const в Dart и Flutter
• Microsoft прекращает поддержку Xamarin и Xamarin.Forms
• Google проводит сокращения в командах Flutter, Dart и Python
•
Jetpack Compose for iOS: Interoping with native Components
•
Creating a React Native “Curved Bottom Bar” with Handwritten SVG
•
How to publish a Kotlin Multiplatform Android app on Play Store with GitHub Actions
•
Using Jetpack Room in Kotlin Multiplatform shared code
•
How to Get User Feedback in Flutter
•
Road Fighter Compose — Kotlin Multiplatform Port
•
Mastering Deep Linking: A Comprehensive Guide for Flutter Developers
•
Show Info Message on both Android/iOS — MessageBar KMP Library
Разработка
• Как мы в 4 раза ускорили мобильную версию ВКонтакте
• Самые высокооплачиваемые вакансии апреля в сфере разработки приложений
• Stack Overflow заключает соглашение с OpenAI о предоставлении данных для моделей
• Будущее магазинов приложений
• 100% способ пройти собеседование
• Как увеличить свою продуктивность. Полный гайд по Notion
•
5 tips for a successful (iOS) take-home project
•
Case Study: Designing a Financial Advisory Platform UX and UI
•
3 Critical Skills You Need to Grow Beyond Senior Levels in Engineering
•
The Sound of Software
•
Tech Interview Handbook
•
The Personal Productivity Tech Stack
Аналитика, маркетинг и монетизация
• Самые скачиваемые и зарабатывающие приложения в России в апреле 2024
• Большой гид по гиперказуальным играм: от механик до монетизации
• Выход сериал Fallout привел к значительному росту доходов мобильной игры
• В LinkedIn добавили игры
• Как увеличить возврат инвестиций в продвижение на 657%: кейс bush.production и «Арабикл»
• Приложения для знакомств быстро растут
• У Airbnb лучший по загрузкам квартал в истории
AI, Устройства, IoT
• Как превратить игрушечного робота-доставщика в ровер с беспроводным управлением через мобильное приложение
• Универсальный контроллер моторов на ARM Cortex-M85. Трассировка
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/bg/xa/yt/bgxayt7nhrtirt2la8ewtduwyea.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• The Composable Architecture: мои 3 года использования
• Поля содержимого в SwiftUI
• Result builders in Swift
• SwiftUI уроки (часть 11)
• 38 iOS-разработчиков из примерно 65,000 подписалось на внешние платежи
• Что такое Optional в Swift — вопросы с собеседований
• Apple готовит ИИ-серверы на собственных процессорах
• Apple уточняет условия CTF и вводит правила для iPadOS
•
![](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/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](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)
• Как новый компилятор K2 ускоряет компиляцию Kotlin на 94%
• Anvil Utils: Assisted injection в многомодульных Android проектах без боли
• Новые коллекции в Android
• Как защитить свой код от Gemini in Android Studio
• Как зарегистрировать аккаунт разработчика в Google Play в 2024 году: пошаговая инструкция
• Всегда ли нужна чистая архитектура?
• Вышла Android Studio Jellyfish
• Android 15 позволит приложениям управлять «Режимом отхода ко сну»
• Android мигрирует с Google Fit API на Android Health
•
![](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/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](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)
• Room для Kotlin Multiplatform. Пробуем нативное решение
• Интерфейсы для конструкторов в Dart
• Тестирование веб-приложений Flutter с помощью Selenium
• Особенности const в Dart и Flutter
• Microsoft прекращает поддержку Xamarin и Xamarin.Forms
• Google проводит сокращения в командах Flutter, Dart и Python
•
![](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/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Как мы в 4 раза ускорили мобильную версию ВКонтакте
• Самые высокооплачиваемые вакансии апреля в сфере разработки приложений
• Stack Overflow заключает соглашение с OpenAI о предоставлении данных для моделей
• Будущее магазинов приложений
• 100% способ пройти собеседование
• Как увеличить свою продуктивность. Полный гайд по Notion
•
![](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/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Самые скачиваемые и зарабатывающие приложения в России в апреле 2024
• Большой гид по гиперказуальным играм: от механик до монетизации
• Выход сериал Fallout привел к значительному росту доходов мобильной игры
• В LinkedIn добавили игры
• Как увеличить возврат инвестиций в продвижение на 657%: кейс bush.production и «Арабикл»
• Приложения для знакомств быстро растут
• У Airbnb лучший по загрузкам квартал в истории
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Как превратить игрушечного робота-доставщика в ровер с беспроводным управлением через мобильное приложение
• Универсальный контроллер моторов на ARM Cortex-M85. Трассировка
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.