В нашей новой еженедельной подборке стенд для UI-тестирования iOS-приложений и реверсинг приложений под Android, Android Studio в вебе и будущее Flutter, результаты опроса разработчиков Stack Overflow 2024, дизайн-тренды
2025, топ быстрорастущих приложений в России в июле и многое другое. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/iv/ls/4t/ivls4tfpot0ijwp6tjfxv1zcxta.png)
iOS
• Подсветка элементов онбординга. Spotlight onboarding / Highlight element. SwiftUI iOS15+
• Разворачиваем стенд для UI-тестирования iOS на базе Selenoid
• Как уменьшить расход памяти при загрузке UIImage с диска
• Удобная навигация в SwiftUI для iOS 16 и выше
• Разработка игр под Apple Vision Pro: ARKit, realityKit, Reality Composer Pro
• iOS 18 PHAsset URL из requestAVAsset
• Разбор SwiftUI проекта стартапа с AI на борту
• Вам не нужно хранилище в приложении
• В AltStore PAL появились первые сторонние приложения
• Slack представляет виджеты для iPhone
• Поваренная книга SwiftUI: кнопки — Часть 2
•
Adding values to the SwiftUI environment with Xcode 16’s Entry macro
•
Exploring SwiftUI: Make SF Symbols Wiggle Wiggle
•
Best vs. Worst Coding Practices in Swift: 20 Key Examples
•
Async await in Swift: The Full Toolkit
•
Memory consumption when loading UIImage from disk
•
Swift Enums: Best Practices and Hidden Features
•
Sized-to-fit SwiftUI bottom sheet
•
Formatting time in a Text view in SwiftUI
•
Leveling Up Your Debugging Skills with LLDB Commands in Xcode
•
Top Interview Questions for Senior iOS Developer in 2024
•
What’s New in SF Symbols 6 — WWDC24
•
5 very useful functions from Swift Algorithms
•
Exploring Indie Life: Reducing Friction by CI/CD
•
SwiftUI Coverflow Carousel
•
My Story & iOS Dev Career Advice
•
Building iOS 18 Photos App UI
•
Zoom Transitions SwiftUI
•
Custom Operators in Swift
•
HealthLens — экспорт данных для HealthKit
•
Swift Testing Revolutionary — конвертер XCTest в Swift Testing
Android
• Я победил замедление YouTube
• MVI в Eventbrite
• Как публиковать библиотеку в Maven Central Portal в 2024 году
• Разбираемся с новой уязвимостью Android-библиотеки Jetpack Navigation: как открыть любой фрагмент из вашего приложения?
• PinLockSreen на основе KeyStore. Kotlin. Jetpack Compose
• Разбираемся с MavenGate. Настолько ли он страшен на самом деле
• Реверсинг приложений под Android. Ищем уязвимости
• Как устроены аннотации в Kotlin. Часть 2
• Роман Елизаров про Kotlin, корутины и работу в Jetbrains
• Google объединяет 3 команды, чтобы сделать Play Store лучшей платформой для разработчиков
• В Google Play появились «Коллекции» и «Комиксы»
• Epic удаляет Fortnite из Galaxy Store
• Google переносит Android Studio в веб с помощью Project IDX
• Уязвимость в Telegram для Android позволяла скрывать файлы в поддельных видеороликах
• В Google Play начинается большая чистка
•
Architecture related decisions in Android — Mapping
•
Variance (in & out) in Kotlin Explained
•
How derivedStateOf works: a deep d(er)ive
•
Don’t Lock the Screen Orientation! Handling Orientation in Compose
•
Building On-Device Face Recognition In Android
•
Container Transform in Jetpack Compose
•
Kotlin sealed class VS sealed interface
•
Publish on Maven Central
•
Enhancing Code Quality with detekt for Static Analysis
•
Playing with Compose Screenshot testing and Github Action
•
Kotlin’s :: Operator Explained
•
Introduction of new Dependency Management (Version Control) and Kotlin DSL migration
•
MVI Made Easy: A Beginner’s Guide to MVI with Example and comparison with MVVM
•
Blinkit Interview Experience for SDE — Android Role 2024
•
Room Tutorial(Part I): Grasping the Fundamentals
•
The Path from Appium to Kaspresso
•
Advanced layout animations in Compose (Shared elements)
•
Refactoring to Expressive Kotlin
•
From Zero to Billions: Building a High-Performance Kotlin App in Two Months
•
Managing Complexity With Ktor
•
Paperize — смена обоев с Kotlin, Jetpack Compose и Material 3
•
Next Player — видеоплеер для Android
Кроссплатформа
• Flutter. Стиль кода — это все
• Как работают изоляты в Dart?
• Пишем собственный макрос на Dart 3.5: глубокий разбор
• Стать программистом: не с нуля не до профи (Flutter и не только)
• Полный гайд по тестированию на Flutter. Часть 3: Mocking и Stubbing + Часть 2: Простые модульные тесты
• Flutter Dev Podcast: навигация во Flutter
• Особенности сервиса Яндекс Про и будущее Flutter
•
Xcode-Kotlin 2.0 Release
•
Convert Your Native Project to Kotlin Multiplatform: Why, When and How
•
How to Create a Search Bar in Flutter
•
End-to-End Testing in React Native with Maestro: A Comprehensive Guide
•
setState in Flutter — Exposed!
•
Migrating A Flutter Application From GetIt To Bloc
•
Free Flutter Icons by Hugeicons
•
The Future of Flutter
•
Permission Handling in Compose Multiplatform
•
Create a Splash Screen in Compose Multiplatform for iOS & Android
•
Uniting Native SDKs into Kotlin Multiplatform
•
Compose Multiplatform on Mobile at Instabee for Over a Year
Разработка
• Инженеры-программисты не являются (и не должны являться) техниками
• Результаты опроса разработчиков Stack Overflow 2024
• С какими проблемами сталкиваются дизайнеры, делая сервис для арабских пользователей
• Как модульное тестирование сокращает затраты программиста
• Дизайн-тренды 2025
• User-Centered Design (UCD) Process: Полное руководство
• Личный бренд разработчика
• Ход королевы: как российское шахматное приложение покорило мир
•
Audapolis: Edit audio files by word, not waveform
•
18 Ways Businesses are Launching New Products with Speech AI
•
The Process That Kept Dying
•
Building an Effective Data Product Strategy
•
System Design Concepts Course and Interview Prep
Аналитика, маркетинг и монетизация
• Топ быстрорастущих приложений в России в июле
• Как управлять вниманием пользователя
• Что такое Web-to-app
•
Japan App Trends 2024 Report
•
Building an Effective Data Product Strategy
AI, Устройства, IoT
• Самопаркующийся авто за 500 строк кода
• История планшетных компьютеров. От древних времен до конца двадцатого века
• Сеть 6G: введение в архитектуру гибридной спутниковой сети
• Mistral выпускает Large 2 как ответ ChatGPT и Llama
• Вышла Llama 3.1, самая большая открытая модель ИИ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/iv/ls/4t/ivls4tfpot0ijwp6tjfxv1zcxta.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Подсветка элементов онбординга. Spotlight onboarding / Highlight element. SwiftUI iOS15+
• Разворачиваем стенд для UI-тестирования iOS на базе Selenoid
• Как уменьшить расход памяти при загрузке UIImage с диска
• Удобная навигация в SwiftUI для iOS 16 и выше
• Разработка игр под Apple Vision Pro: ARKit, realityKit, Reality Composer Pro
• iOS 18 PHAsset URL из requestAVAsset
• Разбор SwiftUI проекта стартапа с AI на борту
• Вам не нужно хранилище в приложении
• В AltStore PAL появились первые сторонние приложения
• Slack представляет виджеты для iPhone
• Поваренная книга SwiftUI: кнопки — Часть 2
•
![](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/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Я победил замедление YouTube
• MVI в Eventbrite
• Как публиковать библиотеку в Maven Central Portal в 2024 году
• Разбираемся с новой уязвимостью Android-библиотеки Jetpack Navigation: как открыть любой фрагмент из вашего приложения?
• PinLockSreen на основе KeyStore. Kotlin. Jetpack Compose
• Разбираемся с MavenGate. Настолько ли он страшен на самом деле
• Реверсинг приложений под Android. Ищем уязвимости
• Как устроены аннотации в Kotlin. Часть 2
• Роман Елизаров про Kotlin, корутины и работу в Jetbrains
• Google объединяет 3 команды, чтобы сделать Play Store лучшей платформой для разработчиков
• В Google Play появились «Коллекции» и «Комиксы»
• Epic удаляет Fortnite из Galaxy Store
• Google переносит Android Studio в веб с помощью Project IDX
• Уязвимость в Telegram для Android позволяла скрывать файлы в поддельных видеороликах
• В Google Play начинается большая чистка
•
![](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/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)
• Flutter. Стиль кода — это все
• Как работают изоляты в Dart?
• Пишем собственный макрос на Dart 3.5: глубокий разбор
• Стать программистом: не с нуля не до профи (Flutter и не только)
• Полный гайд по тестированию на Flutter. Часть 3: Mocking и Stubbing + Часть 2: Простые модульные тесты
• Flutter Dev Podcast: навигация во Flutter
• Особенности сервиса Яндекс Про и будущее Flutter
•
![](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/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Инженеры-программисты не являются (и не должны являться) техниками
• Результаты опроса разработчиков Stack Overflow 2024
• С какими проблемами сталкиваются дизайнеры, делая сервис для арабских пользователей
• Как модульное тестирование сокращает затраты программиста
• Дизайн-тренды 2025
• User-Centered Design (UCD) Process: Полное руководство
• Личный бренд разработчика
• Ход королевы: как российское шахматное приложение покорило мир
•
![](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/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Топ быстрорастущих приложений в России в июле
• Как управлять вниманием пользователя
• Что такое Web-to-app
•
![](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/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Самопаркующийся авто за 500 строк кода
• История планшетных компьютеров. От древних времен до конца двадцатого века
• Сеть 6G: введение в архитектуру гибридной спутниковой сети
• Mistral выпускает Large 2 как ответ ChatGPT и Llama
• Вышла Llama 3.1, самая большая открытая модель ИИ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.