В нашем новом дайджесте пишем виджет для Control Center и делаем куб для сторис, развенчиваем мифы про современную Android-разработку и оптимизируем приложение, переходим с Xamarin на Flutter, оцениваем важные вещи в программировании, используем темные паттерны, оцениваем самые скачиваемые и зарабатывающие приложения в России в июне. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/2d/nv/oe/2dnvoekpnycoza5hsdjeqyptl7m.png)
iOS
• Расширяем возможности мобильного приложения на WebView. Опыт Ozon Банк
• Постепенный перенос проектов и пакетов на Swift 6
• Пишем виджет в Control Center (iOS 18)
• Изучаем новые структуры данных для iOS разработчика
• Куб для ваших сторис*
• Что нового в Swift 6?
• По оценкам IDC, в 2024 году Apple продаст менее 500 тысяч устройств Vision Pro
• Как работает AdAttributionKit
• Поваренная книга SwiftUI: кнопки — Часть 1
•
Mastering Animatable and AnimatablePair in SwiftUI
•
SwiftUI can be a bit… eager
•
Zoom transitions
•
Backpressure in Combine
•
Building a custom application UI with SwiftUI & iOS 18 API
•
Building the inverted scroll of a messaging app
•
Mobile Deployment Pipelines for $0
•
5 Strategies for Managing Image Resources Effectively in iOS
•
Automating pre-production iOS app builds
•
Running a package from Xcode Build phase
•
XCUITest (iOS) Automation with POM Techniques
•
Write Clean and Maintainable XCUITests with Screen Chaining
•
AI features in Xcode 16: is it good?
•
Check if your app has a newer version on the App Store using Swift
•
Streamlining Menu Browsing with OCR Text Recognition
•
Utilizing Apple’s oslog for Enhanced Logging in Xcode
•
Zoom Transitions — SwiftUI
•
AI Features in Xcode 16: is it Good or Bad?
•
Laying out views with ContainerRelativeFrame in SwiftUI
•
Animated Scroll Wheel Picker — SwiftUI
•
Removing More Button from Tab bar — SwiftUI
•
Create Interactive In-App Polls With SwiftUI
•
StreamUI — генерация видео в SwiftUI
•
DSFDropFilesView — NSView для drag-and-drop файлов
Android
• Развенчиваем 6 мифов про современную Android-разработку
• Kotlin Coroutines под капотом
• Strong Skipping Mode — новый способ оптимизации стабильности в Jetpack Compose
• Создавай и упрощай: оптимизируем Android-приложение с видеоконтентом
• Видео с прозрачностью на Jetpack Compose – запросто
• Как обойти множественное наследование в Kotlin и Java. Агрегация и композиция
•
Architecture related decisions in Android — Error handling and Monads
•
Kotlin’s @Keep Annotation: Keeping Your Code Safe and Sound
•
Let’s clarify some misconceptions around android development these days
•
Declarative Gradle
•
Top 5 Android Studio Plugins
•
Which Map Transformation Should I Use?
•
Kotlin Builder Inference Explained
•
RxJava to Kotlin Coroutines: The Ultimate Migration Guide
•
How to Configure Android Build System?
•
Kotlin Code Reuse: Composing like you’re Inheriting
•
Android MVVM Architecture for A Production Ready App
•
Leveraging BFF and Dynamic UI in Android Applications with Jetpack Compose
•
Safe your API Keys via Secrets Gradle plugin
•
Ticket UI Using compose
•
Improving Perceived Performance with Delayed Visibility
•
From Zero to Billions: Building a High-Performance Kotlin App in Two Months
•
The Top 5 Practices That Make My Android Architecture More Scalable
•
Generating Kotlin SDKs with Smithy
•
Kotlin/Native BigDecimal: A drop-in replacement for java.math.BigDecimal
•
K2: How to Make a Better Compiler but Keep Kotlin the Same
•
It’s Compose O’Clock, Draw on My Watch!
•
Crashlytics for your Android apps
•
Kotlin Code Reuse: Composing like you’re Inheriting
•
Exploring Material3 Adaptive Layout
•
Valkyrie — генерация Compose ImageVector из SVG/XML
•
Fig — Google Таблицы в качестве удаленного конфига
Кроссплатформа
• Первый взгляд на переход с Xamarin Native на Flutter
• Как мы переходили с Xamarin на Flutter
• Rive-анимация для Flutter-приложений: почему мы любим ее больше Lottie, когда ее применять и какие фишки использовать
•
Mastering Date and Time Management in iOS with Kotlinx DateTime: A Step-by-Step Guide
•
Build Android and iOS apps with SwiftUI
•
Google Pay Integration in Flutter App
•
Codemagic setup with flavors. Flutter CI/CD
•
HTTP Requests in Kotlin Multiplatform With Ktor — KMP for Beginners
•
Compose Multiplatform performance on iOS
•
Code push for Flutter
•
Rewriting freezed with Macros
•
FlowMVI — архитектурный фреймворк Kotlin Multiplatform на основе корутинов
•
Colors AI — генератор цветовых схем с ИИ на Flutter
Разработка
• Новый опрос Developer Nation
• Сам написал, сам полетал: как и зачем я разработал 3D-игру с нуля под компьютеры из 90-х в 2024 году?
• Важные вещи в программировании 2024
• Моё тестовое в Билайн на позицию стажёра
• РКН по ошибке снес безобидное приложение в AppStore, на волне последних чисток
• 5 советов по разработке игр от соло-разработчика
• System Design-интервью для практиков
• 10 тупых вопросов на собеседовании (и как на них отвечать) + все собеседования
• Локальная разработка в Авито
• Rust и Kotlin растут в TIOBE Index
• ChatGPT хорошо программирует в задачах, существовавших до 2021 года, но испытывает трудности с новыми
•
Building and scaling Notion’s data lake
•
MobileLLM — Language Models for On-Device Use Cases
•
How to set priorities?
•
Weird things I learned while writing an x86 emulator
•
AI on Mac Made Easy: How to run LLMs locally with OLLAMA in Swift/SwiftUI
•
Learn TypeScript — Full Course for Beginners
Аналитика, маркетинг и монетизация
• Sekai получил лицензию на «Наруто» для разработки приложений для фанатов аниме
• 76% приложений и сайтов с подпиской использует темные паттерны
• Приложение для арт-терапии Scribble Journey позволяет выразить эмоции с помощью зарисовок
• Самые скачиваемые и зарабатывающие приложения в России в июне 2024
• Apple «временно» одобрила Epic Games Store, но потребовала изменений
• Pokemon Go: история революции в дополненной реальности
• Lamoda Tech Analytics Party: материалы встречи
• Wayther — приложение с прогнозом погоды, разработанное специально для автопутешествий
• Карты Google на iOS начали показывать спидометр (через 5 лет после Android)
•
How to improve funnel conversion
•
How apps can innovate
AI, Устройства, IoT
• Обзор нейросетей для создания иллюстраций и артов
• Как жить в загородной бане, пока строится умный дом
• Как выбрать контроллер для DIY (сводная таблица по 30++ моделям с комментариями)
• Сравниваем новые чипы Qualcomm с процессорами Apple, Intel и AMD
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/2d/nv/oe/2dnvoekpnycoza5hsdjeqyptl7m.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Расширяем возможности мобильного приложения на WebView. Опыт Ozon Банк
• Постепенный перенос проектов и пакетов на Swift 6
• Пишем виджет в Control Center (iOS 18)
• Изучаем новые структуры данных для iOS разработчика
• Куб для ваших сторис*
• Что нового в Swift 6?
• По оценкам IDC, в 2024 году Apple продаст менее 500 тысяч устройств Vision Pro
• Как работает AdAttributionKit
• Поваренная книга SwiftUI: кнопки — Часть 1
•
![](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/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)
• Развенчиваем 6 мифов про современную Android-разработку
• Kotlin Coroutines под капотом
• Strong Skipping Mode — новый способ оптимизации стабильности в Jetpack Compose
• Создавай и упрощай: оптимизируем Android-приложение с видеоконтентом
• Видео с прозрачностью на Jetpack Compose – запросто
• Как обойти множественное наследование в Kotlin и Java. Агрегация и композиция
•
![](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/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)
• Первый взгляд на переход с Xamarin Native на Flutter
• Как мы переходили с Xamarin на Flutter
• Rive-анимация для Flutter-приложений: почему мы любим ее больше Lottie, когда ее применять и какие фишки использовать
•
![](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/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Новый опрос Developer Nation
• Сам написал, сам полетал: как и зачем я разработал 3D-игру с нуля под компьютеры из 90-х в 2024 году?
• Важные вещи в программировании 2024
• Моё тестовое в Билайн на позицию стажёра
• РКН по ошибке снес безобидное приложение в AppStore, на волне последних чисток
• 5 советов по разработке игр от соло-разработчика
• System Design-интервью для практиков
• 10 тупых вопросов на собеседовании (и как на них отвечать) + все собеседования
• Локальная разработка в Авито
• Rust и Kotlin растут в TIOBE Index
• ChatGPT хорошо программирует в задачах, существовавших до 2021 года, но испытывает трудности с новыми
•
![](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/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Sekai получил лицензию на «Наруто» для разработки приложений для фанатов аниме
• 76% приложений и сайтов с подпиской использует темные паттерны
• Приложение для арт-терапии Scribble Journey позволяет выразить эмоции с помощью зарисовок
• Самые скачиваемые и зарабатывающие приложения в России в июне 2024
• Apple «временно» одобрила Epic Games Store, но потребовала изменений
• Pokemon Go: история революции в дополненной реальности
• Lamoda Tech Analytics Party: материалы встречи
• Wayther — приложение с прогнозом погоды, разработанное специально для автопутешествий
• Карты Google на iOS начали показывать спидометр (через 5 лет после Android)
•
![](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)
• Обзор нейросетей для создания иллюстраций и артов
• Как жить в загородной бане, пока строится умный дом
• Как выбрать контроллер для DIY (сводная таблица по 30++ моделям с комментариями)
• Сравниваем новые чипы Qualcomm с процессорами Apple, Intel и AMD
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
error911
Полезно, спасибо!