В новом дайджесте добавляем Image Playground в приложение и разбираемся с Android 15, делаtv свой DI за 10 минут и заставляем крутиться таймер, раскрываем внутреннюю архитектуру Flutter, проектируем мобильное приложение маркетплейса, оцениваем годовые доходы App Store и Google Play и многое другое. Подключайтесь!
Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков.

 iOS
 iOS
• Фоновая загрузка файлов на сервер в iOS
• Добавляем Image Playground в приложение
• Как заставить крутиться таймер – инструкция для iOS-разработчиков
• Ищем неиспользуемый код с Periphery
• iOS-разработчики игнорируют важную системную фичу, и это ломает их приложения
• Впервые в App Store эмулятор Delta добавил ссылку на Patreon
• Apple работает над складывающимся планшетом
• Noncopyable types in Swift
 Noncopyable types in Swift
• The Case for Another Cache
 The Case for Another Cache
• Translating an iOS/Mac app with AI and humans
 Translating an iOS/Mac app with AI and humans
• Exploring TabView Advancements in SwiftUI
 Exploring TabView Advancements in SwiftUI
• Integrating Extensions into Large-Scale iOS apps
 Integrating Extensions into Large-Scale iOS apps
• Enabling Tuist Cache: Enhancing the Developer Experience at Trendyol
 Enabling Tuist Cache: Enhancing the Developer Experience at Trendyol
• SwiftUI Button: Custom Styles, Variants, and Best Practices
 SwiftUI Button: Custom Styles, Variants, and Best Practices
• The Ultimate Guide to Validation Patterns in SwiftUI
 The Ultimate Guide to Validation Patterns in SwiftUI
• Traps and Countermeasures for Abnormal onAppear Calls in SwiftUI
 Traps and Countermeasures for Abnormal onAppear Calls in SwiftUI
• Sending vs Sendable in Swift
 Sending vs Sendable in Swift
• A generic SwiftUI Animated Segment Control
 A generic SwiftUI Animated Segment Control
• Be careful wrapping a throwing function in a Task
 Be careful wrapping a throwing function in a Task
• Avoid Crashes in Swift: How Overflow Operators Work
 Avoid Crashes in Swift: How Overflow Operators Work
• Stacked Cards — Looping Cards — SwiftUI
 Stacked Cards — Looping Cards — SwiftUI
• First Look at Xcode 16.2: New Swift Testing Feature
 First Look at Xcode 16.2: New Swift Testing Feature
• SwiftUI Searchable Modifier: Build a Search Feature in 15 Minutes
 SwiftUI Searchable Modifier: Build a Search Feature in 15 Minutes
• Ifrit — нечеткий поиск на Swift
 Ifrit — нечеткий поиск на Swift
• SRNetworkManager — современный сетевой слой
 SRNetworkManager — современный сетевой слой
• CoordinatorX — навигация для SwiftUI
 CoordinatorX — навигация для SwiftUI
 Android
 Android
• Всё, что нужно знать об Android 15: архивирование, защита данных и новые API
• Почему никогда не следует использовать!!! в Kotlin
• Dagger 2: как сделать свой DI за 10 минут
• Создание Custom Layout в Jetpack Compose
• Tracer для Android вышел в версии 1.0.0
• Вышла вторая Developer Preview версия Android 16
• Публикация Android и KMP библиотеки в Maven Central
• SDK Development; The Good, The Bad, The Ugly
 SDK Development; The Good, The Bad, The Ugly
• Understanding ViewModel Persistence Across Configuration Changes in Android
 Understanding ViewModel Persistence Across Configuration Changes in Android
• Automate Android Feature Creation with Gradle
 Automate Android Feature Creation with Gradle
• Koin’s Isolated Context
 Koin’s Isolated Context
• LLM Based Android UI Testing – “Journeys with Gemini”
 LLM Based Android UI Testing – “Journeys with Gemini”
• Get your apps ready for 16 KB page size devices
 Get your apps ready for 16 KB page size devices
• How to Enforce Type Constraints for Slot Parameters — Jetpack Compose
 How to Enforce Type Constraints for Slot Parameters — Jetpack Compose
• 5 minute guide on understanding Hilt annotations
 5 minute guide on understanding Hilt annotations
• Koin IDE Plugin: A Koin Configuration Tree
 Koin IDE Plugin: A Koin Configuration Tree
• What’s new in CameraX 1.4.0 and a sneak peek of Jetpack Compose support
 What’s new in CameraX 1.4.0 and a sneak peek of Jetpack Compose support
• Understanding Low Memory Management in Android: Kswapd & LMK
 Understanding Low Memory Management in Android: Kswapd & LMK
• Now in Android: 112 — Android 16 Developer Preview 1, Passkeys Spotlight Week, and more
 Now in Android: 112 — Android 16 Developer Preview 1, Passkeys Spotlight Week, and more
• Designing apps for Android XR
 Designing apps for Android XR
• Adapting Android apps for XR
 Adapting Android apps for XR
• Build immersive apps & experiences with OpenXR & Unity
 Build immersive apps & experiences with OpenXR & Unity
• How to Draw On a Canvas In Jetpack Compose
 How to Draw On a Canvas In Jetpack Compose
• Multi-dollar String Interpolation in Kotlin
 Multi-dollar String Interpolation in Kotlin
• Inure — красивый менеджер приложений для Android
 Inure — красивый менеджер приложений для Android
• ADBR-Server — Android Debug Bridge на Rust
 ADBR-Server — Android Debug Bridge на Rust
 Кроссплатформа
 Кроссплатформа
• Как мы раскрыли внутреннюю архитектуру Flutter и затащили его на собственную платформу
• Flutter в своей продакшн-эре и другие откровения на Flutter in Production
• Совместить DDD и MVVM: Разработка приложения-трекера расходов по правилу 50-30-20 на .NET MAUI
• Flutter Dev Podcast #49: многомодульность на Flutter
• Debugging Kotlin in Xcode with SPM Builds
 Debugging Kotlin in Xcode with SPM Builds
• Adaptive Layouts in Compose Multiplatform
 Adaptive Layouts in Compose Multiplatform
• Publish your Flutter app to App Store with Codemagic CI/CD
 Publish your Flutter app to App Store with Codemagic CI/CD
• Designing the Unexpected with CircularProgressIndicator
 Designing the Unexpected with CircularProgressIndicator
• How to develop an AI app with a local model in Kotlin Multiplatform
 How to develop an AI app with a local model in Kotlin Multiplatform
• Master KMP as an Android Developer by Building a Joke-Generator App
 Master KMP as an Android Developer by Building a Joke-Generator App
• Remind users to Rate your App — Compose Multiplatform
 Remind users to Rate your App — Compose Multiplatform
 Разработка
 Разработка
• Бесплатный доступ к GitHub Copilot в VS Code
• Как спроектировать мобильное приложение маркетплейса за 7 шагов
• Приземление дизайн-концепта на примере экрана платежей
• Как проектировать дизайн на космической скорости?
• Compose и SwiftUI: найди 10 отличий
• Запускаем мобильные UI-тесты эффективно
• Как мы писали проигрыватель с нуля под каждую платформу
• Как ВКонтакте измеряет перфоманс приложений
• Очевидные и неочевидные дыры безопасности в мобильной разработке
• Страх и ненависть в мобильных автотестах. Строим своё облачное решение
• Лучший UI фреймворк для разработки на Java — JavaFx, Swing, UI разработка
• Куда едут разработчики из России
• Firebase Data Connect в открытом превью
• Doing projects to learn can be bad advice
 Doing projects to learn can be bad advice
 Аналитика, маркетинг и монетизация
 Аналитика, маркетинг и монетизация
• В 2024 доходы App Store и Play выросли на 15.7%, но загрузки упали на 2.3%
• В MyTracker появился AI-ассистент для аналитики
• Temu — самое скачиваемое приложение в американском App Store в 2024 году
• Самые скачиваемые и зарабатывающие приложения в мире в ноябре 2024
• Рекламодатели смогут улучшить продвижение мобильных приложений
• How Ladder onboards and keeps users engaged
 How Ladder onboards and keeps users engaged
• The best growth advice of 2024
 The best growth advice of 2024
 AI, Устройства, IoT
 AI, Устройства, IoT
• Как разработчик вышел на $400 000/мес на AI-сервисе для написания эссе
• Поднимаем в облаке расшифровку речи в текст с помощью нейросетей. VPS на пределе возможностей
• Как поднять Wi-Fi на ESP8266 и не зашквариться об Arduino
• Низкоресурсный блокчейн для Интернета вещей: как с пользой «скрестить ежа с ужом»
• Новый физический симулятор Genesis обучает роботов в 430,000 раз быстрее, чем в реальности
• Nvidia выпустила дешевый микрокомпьютер для ИИ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков.

 iOS
 iOS• Фоновая загрузка файлов на сервер в iOS
• Добавляем Image Playground в приложение
• Как заставить крутиться таймер – инструкция для iOS-разработчиков
• Ищем неиспользуемый код с Periphery
• iOS-разработчики игнорируют важную системную фичу, и это ломает их приложения
• Впервые в App Store эмулятор Delta добавил ссылку на Patreon
• Apple работает над складывающимся планшетом
•
 Noncopyable types in Swift
 Noncopyable types in Swift•
 The Case for Another Cache
 The Case for Another Cache•
 Translating an iOS/Mac app with AI and humans
 Translating an iOS/Mac app with AI and humans•
 Exploring TabView Advancements in SwiftUI
 Exploring TabView Advancements in SwiftUI•
 Integrating Extensions into Large-Scale iOS apps
 Integrating Extensions into Large-Scale iOS apps•
 Enabling Tuist Cache: Enhancing the Developer Experience at Trendyol
 Enabling Tuist Cache: Enhancing the Developer Experience at Trendyol•
 SwiftUI Button: Custom Styles, Variants, and Best Practices
 SwiftUI Button: Custom Styles, Variants, and Best Practices•
 The Ultimate Guide to Validation Patterns in SwiftUI
 The Ultimate Guide to Validation Patterns in SwiftUI•
 Traps and Countermeasures for Abnormal onAppear Calls in SwiftUI
 Traps and Countermeasures for Abnormal onAppear Calls in SwiftUI•
 Sending vs Sendable in Swift
 Sending vs Sendable in Swift•
 A generic SwiftUI Animated Segment Control
 A generic SwiftUI Animated Segment Control•
 Be careful wrapping a throwing function in a Task
 Be careful wrapping a throwing function in a Task•
 Avoid Crashes in Swift: How Overflow Operators Work
 Avoid Crashes in Swift: How Overflow Operators Work•
 Stacked Cards — Looping Cards — SwiftUI
 Stacked Cards — Looping Cards — SwiftUI•
 First Look at Xcode 16.2: New Swift Testing Feature
 First Look at Xcode 16.2: New Swift Testing Feature•
 SwiftUI Searchable Modifier: Build a Search Feature in 15 Minutes
 SwiftUI Searchable Modifier: Build a Search Feature in 15 Minutes•
 Ifrit — нечеткий поиск на Swift
 Ifrit — нечеткий поиск на Swift•
 SRNetworkManager — современный сетевой слой
 SRNetworkManager — современный сетевой слой•
 CoordinatorX — навигация для SwiftUI
 CoordinatorX — навигация для SwiftUI Android
 Android• Всё, что нужно знать об Android 15: архивирование, защита данных и новые API
• Почему никогда не следует использовать!!! в Kotlin
• Dagger 2: как сделать свой DI за 10 минут
• Создание Custom Layout в Jetpack Compose
• Tracer для Android вышел в версии 1.0.0
• Вышла вторая Developer Preview версия Android 16
• Публикация Android и KMP библиотеки в Maven Central
•
 SDK Development; The Good, The Bad, The Ugly
 SDK Development; The Good, The Bad, The Ugly•
 Understanding ViewModel Persistence Across Configuration Changes in Android
 Understanding ViewModel Persistence Across Configuration Changes in Android•
 Automate Android Feature Creation with Gradle
 Automate Android Feature Creation with Gradle•
 Koin’s Isolated Context
 Koin’s Isolated Context•
 LLM Based Android UI Testing – “Journeys with Gemini”
 LLM Based Android UI Testing – “Journeys with Gemini”•
 Get your apps ready for 16 KB page size devices
 Get your apps ready for 16 KB page size devices•
 How to Enforce Type Constraints for Slot Parameters — Jetpack Compose
 How to Enforce Type Constraints for Slot Parameters — Jetpack Compose•
 5 minute guide on understanding Hilt annotations
 5 minute guide on understanding Hilt annotations•
 Koin IDE Plugin: A Koin Configuration Tree
 Koin IDE Plugin: A Koin Configuration Tree•
 What’s new in CameraX 1.4.0 and a sneak peek of Jetpack Compose support
 What’s new in CameraX 1.4.0 and a sneak peek of Jetpack Compose support•
 Understanding Low Memory Management in Android: Kswapd & LMK
 Understanding Low Memory Management in Android: Kswapd & LMK•
 Now in Android: 112 — Android 16 Developer Preview 1, Passkeys Spotlight Week, and more
 Now in Android: 112 — Android 16 Developer Preview 1, Passkeys Spotlight Week, and more•
 Designing apps for Android XR
 Designing apps for Android XR•
 Adapting Android apps for XR
 Adapting Android apps for XR•
 Build immersive apps & experiences with OpenXR & Unity
 Build immersive apps & experiences with OpenXR & Unity•
 How to Draw On a Canvas In Jetpack Compose
 How to Draw On a Canvas In Jetpack Compose•
 Multi-dollar String Interpolation in Kotlin
 Multi-dollar String Interpolation in Kotlin•
 Inure — красивый менеджер приложений для Android
 Inure — красивый менеджер приложений для Android•
 ADBR-Server — Android Debug Bridge на Rust
 ADBR-Server — Android Debug Bridge на Rust Кроссплатформа
 Кроссплатформа• Как мы раскрыли внутреннюю архитектуру Flutter и затащили его на собственную платформу
• Flutter в своей продакшн-эре и другие откровения на Flutter in Production
• Совместить DDD и MVVM: Разработка приложения-трекера расходов по правилу 50-30-20 на .NET MAUI
• Flutter Dev Podcast #49: многомодульность на Flutter
•
 Debugging Kotlin in Xcode with SPM Builds
 Debugging Kotlin in Xcode with SPM Builds•
 Adaptive Layouts in Compose Multiplatform
 Adaptive Layouts in Compose Multiplatform•
 Publish your Flutter app to App Store with Codemagic CI/CD
 Publish your Flutter app to App Store with Codemagic CI/CD•
 Designing the Unexpected with CircularProgressIndicator
 Designing the Unexpected with CircularProgressIndicator•
 How to develop an AI app with a local model in Kotlin Multiplatform
 How to develop an AI app with a local model in Kotlin Multiplatform•
 Master KMP as an Android Developer by Building a Joke-Generator App
 Master KMP as an Android Developer by Building a Joke-Generator App•
 Remind users to Rate your App — Compose Multiplatform
 Remind users to Rate your App — Compose Multiplatform Разработка
 Разработка• Бесплатный доступ к GitHub Copilot в VS Code
• Как спроектировать мобильное приложение маркетплейса за 7 шагов
• Приземление дизайн-концепта на примере экрана платежей
• Как проектировать дизайн на космической скорости?
• Compose и SwiftUI: найди 10 отличий
• Запускаем мобильные UI-тесты эффективно
• Как мы писали проигрыватель с нуля под каждую платформу
• Как ВКонтакте измеряет перфоманс приложений
• Очевидные и неочевидные дыры безопасности в мобильной разработке
• Страх и ненависть в мобильных автотестах. Строим своё облачное решение
• Лучший UI фреймворк для разработки на Java — JavaFx, Swing, UI разработка
• Куда едут разработчики из России
• Firebase Data Connect в открытом превью
•
 Doing projects to learn can be bad advice
 Doing projects to learn can be bad advice Аналитика, маркетинг и монетизация
 Аналитика, маркетинг и монетизация• В 2024 доходы App Store и Play выросли на 15.7%, но загрузки упали на 2.3%
• В MyTracker появился AI-ассистент для аналитики
• Temu — самое скачиваемое приложение в американском App Store в 2024 году
• Самые скачиваемые и зарабатывающие приложения в мире в ноябре 2024
• Рекламодатели смогут улучшить продвижение мобильных приложений
•
 How Ladder onboards and keeps users engaged
 How Ladder onboards and keeps users engaged•
 The best growth advice of 2024
 The best growth advice of 2024 AI, Устройства, IoT
 AI, Устройства, IoT• Как разработчик вышел на $400 000/мес на AI-сервисе для написания эссе
• Поднимаем в облаке расшифровку речи в текст с помощью нейросетей. VPS на пределе возможностей
• Как поднять Wi-Fi на ESP8266 и не зашквариться об Arduino
• Низкоресурсный блокчейн для Интернета вещей: как с пользой «скрестить ежа с ужом»
• Новый физический симулятор Genesis обучает роботов в 430,000 раз быстрее, чем в реальности
• Nvidia выпустила дешевый микрокомпьютер для ИИ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
 
          