В этом дайджесте — обновления Android, собственный движок для игр, симуляция волос и создание VHS-эффектов, No-Code платформы машинного обучения и доходы приложений. Приятного чтения!


У меня был простой рендер спрайтов и текста, простая система обработки ввода, из которой можно было получать информацию о мышке и нажатых клавишах, и всякие утилиты-обвязки вспомогательных систем движка. В общем какую-то простую картинку вывести я мог. В последствии это все очень сильно изменилось и поросло архитектурными хитростями. Начиная с 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 вдвое опережают продажи предыдущей версии

< Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.