Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
В этом дайджесте — обновления Android, собственный движок для игр, симуляция волос и создание VHS-эффектов, No-Code платформы машинного обучения и доходы приложений. Приятного чтения!
![](https://habrastorage.org/webt/e4/vw/wz/e4vwwzbgrhpniykhisew3tv7_0g.png)
У меня был простой рендер спрайтов и текста, простая система обработки ввода, из которой можно было получать информацию о мышке и нажатых клавишах, и всякие утилиты-обвязки вспомогательных систем движка. В общем какую-то простую картинку вывести я мог. В последствии это все очень сильно изменилось и поросло архитектурными хитростями.
Начиная с Android 8 (у некоторых вендоров с 7.1) в системе появился новый механизм накатки OTA-обновлений, т. н. Seamless A/B OTA Updates — бесшовные обновления. В этом посте я опишу общие принципы его работы, рассмотрю механизм с точки зрения разработчика, а также проведу сравнение со старым (будем его называть recovery-based) подходом применения обновлений.
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
Telegram-канале.
iOS
• (+22) Navigation bar и анимация перехода
• Apple запустила генератор коротких ссылок и QR-кодов для App Store
• Apple отказалась от 30% налога ради малого бизнеса
•
Использование AVAudioEngine для записи, сжатия и потоковой передачи звука на iOS
•
SKOverlay в SwiftUI
•
Core Data и SwiftUI 2.0
•
Используем кастомные Debug Descriptions, чтобы упростить отладку Swift
•
10 запутанных, но важных функций Swift
•
2 способа исполнения MVVM iOS
•
SwiftUI и Firestore: обновление данных
•
Как сделать раздвигающийся TableView с помощью Swift
•
Instructions: пояснения и обучение работе с продуктом
•
Tiktok Clone: короткие видео на Swift и Firebase
•
Twitter Text: парсинг текста
Android
• (+8) Как разработать аналог Zoom для ТВ-приставок на RDK и Linux. Разбираемся с фреймворком GStreamer
• (+7) «Холодный» запуск Android-приложения
• (+6) Еще раз про многомодульность Android-приложений
• (+6) Как устроен Push Kit от Huawei
• (+4) Как спроектировать пошаговое заполнение данных в мобильном приложении
• (+4) Google Play In-App Review API: пошаговое руководство по внедрению
• (+1) Голос в мобильном приложении: учимся вызывать экраны и заполнять формы без рук
• Google упростит работу со сторонними магазинами в Android 12
• Google Play будет тщательнее следить за оплатой покупок в приложениях
•
Беспроводная Android-разработка с локальным устройством
•
Асинхронные сообщения с Kotlin и RabbitMQ
•
Первые мысли о Jetpack Compose
•
Изменение стартовых шаблонов Android
•
Splash Screen в Android
•
Время плыть: переход с Kotlin на Flutter
•
Исследуем Kotlin DSL
•
Развенчиваем мифы о производительности Android
•
Создание тепловых карт с помощью Google Maps для Android
•
Все, что вам нужно знать о биометрической библиотеке Android
•
JetMessenger: клон Facebook Messenger на Jetpack Compose
•
CircleMenu: круговое меню для Android
Разработка
• (+22) Plague M.D. Я остался в России и меня поглотила Чума. Сопли и нытье прогера
• (+16) Выводы, которые я сделал, помогая стартапу для секс-чатов повысить конверсию
• (+8) InheritedWidget во Flutter
• (+8) Симуляция волос и тканей с Unity Cloth на мобильных устройствах
• (+6) Создание эффекта VHS-видео в Unreal Engine
• (+6) «Flutter клёвенький — у меня только такое объяснение». Обзор лучших выпусков Flutter Dev Podcast
• (+6) Как создать мини-приложение: база знаний VK Mini Apps
• Podlodka #183: обратная связь
• Финал фестиваля программирования RuCode
• GitHub запускает сканирование кода на уязвимости
• Как изменить жизнь программиста с правилом 80/20
• Курсы “Как создавать мобильные приложения и игры” в Humble Bundle
• 4 расширения VS Code для того, чтобы «расслабиться» на работе
• Интервью с product-менеджером Flutter и Dart (Google)
•
Facebook против Google: битва межплатформенных фреймворков
•
Лучшие практики CI/CD
•
GitHub Codespaces: работа с Flutter
•
Лучший совет по созданию программного обеспечения от моего ментора
•
Четыре вещи, которые нужно забыть, чтобы стать лучшим программистом
•
Мои первые 24 часа с Flutter
•
7 способов действительно чему-то научиться из туториалов
Аналитика, маркетинг и монетизация
• (+25) Как приложения без возможности выигрыша вытягивают у пользователей миллионы долларов
• (+3) История Waze: от бессмыслицы до миллиардной компании
• (+1) Разбор игры RAID: Shadow Legends (монетизация через поведенческую психологию)
• (0) Локализационное тестирование: зачем оно нужно приложению или сайту?
• Сингл группы BLACKPINK «Lovesick girls» выходит в PUBG MOBILE
• IronSource открывает доступ к in-app bidding платформе для всех
• make sense: О выходе на зарубежный рынок
• Доходы приложений в 3 квартале выросли на 32% до $29 млрд.
• Epic и Apple отказались от суда присяжных
• В России вступил в силу Закон о блокировке пиратских приложений
• Почему инфлюэнсеры-звезды, такие как Ли Цзяци, так важны для бизнеса, нацеливающегося на Китай
• Rephrase.ai: генерация людей для рекламы
• Как мы запустили приложение для анимации фото на Product Hunt
•
Запуск инди-приложения
AI, Устройства, IoT
• (+27) Лучшие IDE для Raspberry Pi
• (+17) Знакомство с Node-RED и потоковое программирование в Yandex IoT Core
• (+12) Добавляем в плеер функцию Ambilight при помощи умных ламп Xiaomi
• (+1) NB-IoT. Non-IP Data Delivery или просто NIDD. Тестирование с коммерческим сервисом МТС
• (0) «Умный дом» в каждую квартиру многоквартирного дома. Детально о контроллере и шлюзах
• 8 No-Code платформ машинного обучения для мобильных разработчиков
• Продажи Apple Watch 6 вдвое опережают продажи предыдущей версии
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
![](https://habrastorage.org/webt/e4/vw/wz/e4vwwzbgrhpniykhisew3tv7_0g.png)
![]() |
Qt? ImGUI? wxWidgets? Пишем свое |
![]() |
Бесшовные A/B-обновления в Android: как они устроены |
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
![](https://habrastorage.org/webt/5e/k7/bf/5ek7bfhjzilma-pbharuioaa7lw.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• (+22) Navigation bar и анимация перехода
• Apple запустила генератор коротких ссылок и QR-кодов для App Store
• Apple отказалась от 30% налога ради малого бизнеса
•
![](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/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)
• (+8) Как разработать аналог Zoom для ТВ-приставок на RDK и Linux. Разбираемся с фреймворком GStreamer
• (+7) «Холодный» запуск Android-приложения
• (+6) Еще раз про многомодульность Android-приложений
• (+6) Как устроен Push Kit от Huawei
• (+4) Как спроектировать пошаговое заполнение данных в мобильном приложении
• (+4) Google Play In-App Review API: пошаговое руководство по внедрению
• (+1) Голос в мобильном приложении: учимся вызывать экраны и заполнять формы без рук
• Google упростит работу со сторонними магазинами в Android 12
• 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/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)
• (+22) Plague M.D. Я остался в России и меня поглотила Чума. Сопли и нытье прогера
• (+16) Выводы, которые я сделал, помогая стартапу для секс-чатов повысить конверсию
• (+8) InheritedWidget во Flutter
• (+8) Симуляция волос и тканей с Unity Cloth на мобильных устройствах
• (+6) Создание эффекта VHS-видео в Unreal Engine
• (+6) «Flutter клёвенький — у меня только такое объяснение». Обзор лучших выпусков Flutter Dev Podcast
• (+6) Как создать мини-приложение: база знаний VK Mini Apps
• Podlodka #183: обратная связь
• Финал фестиваля программирования RuCode
• GitHub запускает сканирование кода на уязвимости
• Как изменить жизнь программиста с правилом 80/20
• Курсы “Как создавать мобильные приложения и игры” в Humble Bundle
• 4 расширения VS Code для того, чтобы «расслабиться» на работе
• Интервью с product-менеджером Flutter и Dart (Google)
•
![](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)
• (+25) Как приложения без возможности выигрыша вытягивают у пользователей миллионы долларов
• (+3) История Waze: от бессмыслицы до миллиардной компании
• (+1) Разбор игры RAID: Shadow Legends (монетизация через поведенческую психологию)
• (0) Локализационное тестирование: зачем оно нужно приложению или сайту?
• Сингл группы BLACKPINK «Lovesick girls» выходит в PUBG MOBILE
• IronSource открывает доступ к in-app bidding платформе для всех
• make sense: О выходе на зарубежный рынок
• Доходы приложений в 3 квартале выросли на 32% до $29 млрд.
• Epic и Apple отказались от суда присяжных
• В России вступил в силу Закон о блокировке пиратских приложений
• Почему инфлюэнсеры-звезды, такие как Ли Цзяци, так важны для бизнеса, нацеливающегося на Китай
• Rephrase.ai: генерация людей для рекламы
• Как мы запустили приложение для анимации фото на Product Hunt
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• (+27) Лучшие IDE для Raspberry Pi
• (+17) Знакомство с Node-RED и потоковое программирование в Yandex IoT Core
• (+12) Добавляем в плеер функцию Ambilight при помощи умных ламп Xiaomi
• (+1) NB-IoT. Non-IP Data Delivery или просто NIDD. Тестирование с коммерческим сервисом МТС
• (0) «Умный дом» в каждую квартиру многоквартирного дома. Детально о контроллере и шлюзах
• 8 No-Code платформ машинного обучения для мобильных разработчиков
• Продажи Apple Watch 6 вдвое опережают продажи предыдущей версии
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.