В этом выпуске шейдеры на iOS и игра менее 1 Мб, Spotify без рекламы и простые привычки лучших инженеров, новая оплата в Unity, самые быстрорастущие приложения в сентябре, социальная сеть только для друзей и многое другое!
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/3j/pi/l1/3jpil1po8_utplcfixcnkm73_fa.jpeg)
iOS
• Хочите виртуальный macOS на своём PC? Их есть у меня
• Шейдеры в iOS для начинающих
• Скоро iOS 17, смотрим статистику по старым версиям
• Swift-уроки: дефолтный аватар как в Telegram
• Открыт прием размещений в App Store для последних версий ОС
• Поваренная книга SwiftUI: понимание представлений (View) и иерархий представлений в SwiftUI
•
Shake to undo in a SwiftUI app
•
SwiftUI Sensory Feedback
•
Develop with Cocoa for Apple Devices without using Objective-C
•
SwiftDataKit: Unleashing Advanced Core Data Features in SwiftData
•
An Architecture for Behaviour-Driven Development in Swift
•
SwiftUI Guide: Triggering Actions Solely on First View Appearance
•
Theming SwiftUI applications
•
SwiftUI Clean Architecture 101
•
Vending Non-Mutating Data in SwiftUI
•
If and switch expressions in Swift
•
Beginner’s Guide: SwiftUI and Additional Essentials
•
iOS Interview Guide: Swift Initializers
•
Unsafe Memory Access in Swift
•
How To Visualize The Safe Area
•
Working With UIViewRepresentable
•
StateObject vs ObservedObject
•
Different ways to map over Dictionary in Swift
•
Understanding Container Background for Widget in iOS 17
•
Using expanded SwiftUI support for MapKit
•
Comparing SwiftUI @StateObject, @ObservedObject and iOS17 @Observed macro
•
Simplifying iOS App Invocation Handling with Swift: A Comprehensive Guide
•
Level up your SwiftUI – Easy improvements you can apply to any SwiftUI app
•
SwiftUI Tag TextField
•
How To Use SwiftData with Preview
•
Scrolling Charts in iOS 17
•
SwiftUI: Hide Navigation Bar On Swipe
•
EmojiPalette: пикер эмодзи для SwiftUI
•
SDWebImageSwiftUI: загрузка изображений в SwiftUI
•
UI Examples: примеры красивого UI
Android
• Сам написал, сам поиграл: как я написал 2D-игру для Android полностью с нуля, весом менее 1мб?
• Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения
• Как я удалил рекламу из приложения Spotify
• Protobuf vs Reflection
• Мок-интервью Middle Android Developer
• Cобеседование Android-разработчика: Максим Качинкин (Dodo Engineering)
• Что нового в Android 14 для разработчиков
• В Android 15 откроют доступ к данным о заряде батареи
• Как мы сделали SPACE INVADERS: World Defense
• Android Studio for Platform — IDE для AOSP
•
Paging 3 on Android
•
How We Made SPACE INVADERS: World Defense, an AR game powered by ARCore
•
Understanding Density-Independent Pixels
•
•
Complex SemanticMatchers for Compose UI Testing
•
Kotlin Contracts: Empowering Your Code for Better Quality
•
Gradle and Java Version Compatibility: A Beginner’s Guide
•
Intro to Polymorphism with Kotlinx.Serialization
•
Google MLKit: Quick and easy Face Detection in Android
•
Automate screenshot testing for Compose previews via reflection
•
Building the WhatToEat Experience on Android
•
Success Story: How FlowMVI has changed the fate of our project
•
Parallax effect in Jetpack Compose
•
Animate borders in Jetpack Compose
•
Building Media-Rich Android Apps with MediaCodec and Vendor Extensions
•
Jetpack Compose for Wearables — Developing UIs for Smartwatches
•
How to automate SDK testing and sleep through the night — a sensor simulation story
•
Security Tips for Android Developers
•
How Qualcomm Added Audio Offload Support for ExoPlayer
•
Automate screenshot testing for Compose previews via reflection
•
Don’t Make These 2 Mistakes With Lists in Kotlin
•
Swipeable Tab Rows — UX With Material3
•
Android Jetpack Compose: The Perfect Splash Screen
•
ComposeShadowsPlus: тени для Compose
•
AAY-chart: графики для Android и Kotlin Multiplatform
Кроссплатформа
• Flutter на ОС Аврора
• Есть ли смысл начинать писать мобильное приложение не на Kotlin Multiplatform и Compose Multiplatform?
• Flutter — CI/CD Azure + App Center
• PWA vs Native: чек-лист, который поможет выбрать
• Puro — эффективный способ управления Flutter-версиями
• Нововведения фреймворка Flutter 3.13.Часть 2
• Compose for iOS под капотом
• Compose Multiplatform для iOS и Android
• Flutter Dev Podcast #42: DCM. Что нового?
•
Flutter State Management: Provider, BLoC, GetX, Riverpod, GetIt and MobX
•
What is BuildContext in Flutter
•
5 Advanced Architecture Patterns you should know as flutter developer
•
AdMob UMP SDK in Flutter — Implement your GDPR dialog
•
Integrating React Native as an SDK into a Native Android App
•
How to Improve Performance in Flutter: Replace SizedBox with Compile-Time Constants
•
Introducing the Flutter Consulting Directory
•
Exploring the Expandable Menu Package in Flutter
•
LÖVE: замечательный фреймворк для создания 2D-игр на Lua
Разработка
• Как работает SberPay под капотом
• 7 простых привычек 1% лучших инженеров
• Unity вводит новую систему оплаты для разработчиков + Что же беспокоит разработчиков в связи с Unity Runtime Fee? (TL;DR)
• Что не так с дизайнерами интерфейсов. Есть ли разница между UX/UI и продуктовым дизайнером?
• Тестирование внутреннего мобильного приложения «На связи»
• Как избежать обмана на работе: 5 эффективных стратегий
•
The Debugging Dilemma — Why So Many Beginners Give Up on Programming
•
Golden age of UX is over?
•
The Best Filter UI Design for Large-Scale Apps
•
Death by a thousand microservices
•
Philosophy of coroutines
•
How to use Strings Method to improve any UI design
•
How mobile apps illegally share your personal data
Аналитика, маркетинг и монетизация
• Тирания маржинального пользователя
• Яндекс выложил в опенсорс код AppMetrica
• В Sensor Tower провели увольнения
• Попадание в сеть: как игры становятся социальными сетями для зумеров и миллениалов
• Топ быстрорастущих приложений в России в сентябре
• Самые скачиваемые приложения в августе 2023
• Выходим на глобальный рынок: адаптация интерфейса под RTL
• Favs — социальная сеть только для друзей
• Коллажи с покупками переходят из Shuffles в главное приложение Pinterest
• Amazon возвращает встроенные покупки на Android
• Slingshot — быстрая отправка фото с помощью «рогатки»
• ASO.dev — как я снова продукт для Apple делал
• In-app purchases — за что и почему? Взгляд аналитика
• Яндекс представил Yandex Mobile Ads SDK 6
•
5 ways to improve your product analytics data
AI, Устройства, IoT
• ИИ-агенты с саморефлексией
• Создаём субтитры для любого видео в интернете с помощью нейросети в браузере
• Разработка систем генеративного ИИ на базе ML Platform: создаем конкурента ChatGPT без миллионных инвестиций
• Управление сервоприводами, часть 3. Управляем ШИМ/PWM сервоприводами с разъёмов GPIO компьютеров на примере Repka Pi
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/3j/pi/l1/3jpil1po8_utplcfixcnkm73_fa.jpeg)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Хочите виртуальный macOS на своём PC? Их есть у меня
• Шейдеры в iOS для начинающих
• Скоро iOS 17, смотрим статистику по старым версиям
• Swift-уроки: дефолтный аватар как в Telegram
• Открыт прием размещений в App Store для последних версий ОС
• Поваренная книга SwiftUI: понимание представлений (View) и иерархий представлений в SwiftUI
•
![](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/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/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.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)
• Сам написал, сам поиграл: как я написал 2D-игру для Android полностью с нуля, весом менее 1мб?
• Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения
• Как я удалил рекламу из приложения Spotify
• Protobuf vs Reflection
• Мок-интервью Middle Android Developer
• Cобеседование Android-разработчика: Максим Качинкин (Dodo Engineering)
• Что нового в Android 14 для разработчиков
• В Android 15 откроют доступ к данным о заряде батареи
• Как мы сделали SPACE INVADERS: World Defense
• Android Studio for Platform — IDE для AOSP
•
![](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/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/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.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 на ОС Аврора
• Есть ли смысл начинать писать мобильное приложение не на Kotlin Multiplatform и Compose Multiplatform?
• Flutter — CI/CD Azure + App Center
• PWA vs Native: чек-лист, который поможет выбрать
• Puro — эффективный способ управления Flutter-версиями
• Нововведения фреймворка Flutter 3.13.Часть 2
• Compose for iOS под капотом
• Compose Multiplatform для iOS и Android
• Flutter Dev Podcast #42: DCM. Что нового?
•
![](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/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Как работает SberPay под капотом
• 7 простых привычек 1% лучших инженеров
• Unity вводит новую систему оплаты для разработчиков + Что же беспокоит разработчиков в связи с Unity Runtime Fee? (TL;DR)
• Что не так с дизайнерами интерфейсов. Есть ли разница между UX/UI и продуктовым дизайнером?
• Тестирование внутреннего мобильного приложения «На связи»
• Как избежать обмана на работе: 5 эффективных стратегий
•
![](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/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Тирания маржинального пользователя
• Яндекс выложил в опенсорс код AppMetrica
• В Sensor Tower провели увольнения
• Попадание в сеть: как игры становятся социальными сетями для зумеров и миллениалов
• Топ быстрорастущих приложений в России в сентябре
• Самые скачиваемые приложения в августе 2023
• Выходим на глобальный рынок: адаптация интерфейса под RTL
• Favs — социальная сеть только для друзей
• Коллажи с покупками переходят из Shuffles в главное приложение Pinterest
• Amazon возвращает встроенные покупки на Android
• Slingshot — быстрая отправка фото с помощью «рогатки»
• ASO.dev — как я снова продукт для Apple делал
• In-app purchases — за что и почему? Взгляд аналитика
• Яндекс представил Yandex Mobile Ads SDK 6
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• ИИ-агенты с саморефлексией
• Создаём субтитры для любого видео в интернете с помощью нейросети в браузере
• Разработка систем генеративного ИИ на базе ML Platform: создаем конкурента ChatGPT без миллионных инвестиций
• Управление сервоприводами, часть 3. Управляем ШИМ/PWM сервоприводами с разъёмов GPIO компьютеров на примере Repka Pi
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.