В нашем новости дайджеста анонсы с Google I/O 2022 и выселение Carthage из git, загадочный WorkManager и замена натива веб-приложением, регрессионное тестирование, вопросы с собеседования, миллиарды уведомлений в месяц и многое другое. Подключайтесь!
![](https://habrastorage.org/r/w780q1/webt/dz/tg/ap/dztgapinsu8v9fcjeapupf0drzc.jpeg)
У нас есть Telegram-канал Mobile Insights, где подборки статей и новостей выходят каждый день, а так же AppFiles с библиотеками и самыми интересными статьями о мобильной разработке!
iOS
• Как нативно визуализировать голос в iOS
• Выселяем Carthage из git, или Как мы связали Carthage + Rome + S3 в нашем проекте
• Заполнители типа в Swift: что это такое и когда их следует использовать
• Apple реструктурирует Сервисы и выделяет рекламу в отдельное направление
• Apple Music выкидывает другие приложения из дока iOS
• 5 актуальных расширений Xcode для оптимизации разработки
•
Об архитектуре iOS-приложений
•
Как читать веб-сайты в SwiftUI — парсинг данных в iOS
•
6 советов по улучшению кода Swift
•
Пользовательская геометрия в SceneKit в SwiftUI
•
Core Data Relationship в Swift 5 — проще простого
•
Анимированный рейтинг в SwiftUI
•
Моделирование ошибок в Swift
•
Пишите красивый код с помощью Swift Result Builder
•
Создание списка для выбора с использованием дженериков
•
SwiftUI: выбор архитектуры приложения
•
Как мы используем SwiftUI в приложении Medium для iOS
•
Возможен ли полумодальный View в SwiftUI?
•
Измерение производительности приложения в Swift
•
AR-приложение в Swift — туториал
•
20 лучших вопросов на собеседовании по iOS для уровня от начального до среднего
•
CHIPageControl: анимированные индикаторы страниц
•
UIPilot: типобезопасная навигация для SwiftUI
Android
• Как мы используем фича-флаги в мобильном приложении QIWI Кошелек
• Загадочная история сбоя WorkManager
• Письмо счастья: как мы разделили наши сборки для AppGallery и Google Play
• Работа с памятью в Android: GC, ARC, RAM
• Kotlin, обрабатываем исключения в корутинах правильно
• Android Studio. Kotlin. Подключение Google календаря через Content Provider
• Android и Play на Google I/O 2022
• Расширение Google Home для Visual Studio Code
• Google Play запускает кастомные продуктовые страницы и события
• Google Play предлагает предоплаченную подписку и снижает минимальную цену до 5 центов
• Вышла стабильная версия Android Studio Chipmunk
•
Новое в инструментах Android-разработки
•
Jetpack Compose Beta 1.2
•
Jetpack Compose для Wear OS
•
Вторая бета Android 13 для всех
•
Google Play SDK Index
•
Новый Health Connect — API для безопасного доступа к данным о здоровье
•
Хак для экономии времени при работе с Jetpack Compose
•
Доступность в приложении с двумя экранами
•
Сворачивание тулбара в Jetpack Compose — проблема, решения и альтернативы
•
Понимание файлов, сгенерированных Proguard, и ручная деобфускация Stacktrace
•
Принципы S.O.L.I.D. с примерами на Kotlin
•
Создаем собственный плагин проверки кода IntelliJ
•
Надежные тесты для Android-уведомлений
•
7 вещей, о которых нужно помнить при создании Jetpack Composable
•
Dagger 2 и Hilt для Android менее чем за 10 минут
•
Andromeda — система дизайна Jetpack Compose с открытым исходным кодом
•
Now in Android: лучшие практики Android-разработки
•
PowerSpinner: выпадающие меню для Android
•
Compose Animated Music Card: анимированные карточки
Кроссплатформа
• Я заменил нативное iOS-приложение кроссплатформенным веб-приложением — и никто не заметил!
• Представлен Flutter 3
• Flutter для Apple TV
• Jugger – внедрение зависимостей как в Android
• Flutter Dev Podcast #35: безопасность инфраструктуры для Flutter-разработки
•
Почему деление на 0 не приводит к ошибке в Dart
•
Flutter и работа с нативным кодом
•
7 крутых особенностей языка Dart
•
Основные ошибки, которые допускают разработчики при разработке Flutter-приложения
•
Flutter: полная дорожная карта 2022
Разработка
• Всё что нужно знать про ECS
• К ориентиру по хлебным крошкам, или базовые приёмы левел-дизайна
• Как мы потратили на разработку игры 1.000.000 рублей, а заработали 80.000 рублей
• QA без рутины: как мы автоматизировали регрессионное тестирование
• Конец Продуктового менеджмента
• Сравниваю UX/UI сервисов доставки продуктов: Яндекс Лавка, Самокат, Сбермаркет, Ozon Fresh, Утконос
• Как мы создавали движок на Unity (часть 0)
• Зачем разработчикам игр на Unity использовать статический анализ?
• 10 советов от Unity по геймдизайну для начинающего разработчика игр
• Отправляем миллиард уведомлений в месяц
• Podlodka #266: рекрутмент как продукт
• Podlodka #267: кодеки
• $6.6 млн в посевном раунде: Novu — открытая инфраструктура уведомлений
• $80 млн в Серии B: Supabase — альтернатива Firebase
• Firebase обновляется
• Fleksy выпускает свой SDK для клавиатуры
• Appwrite открывает фонд для поддержки проектов с открытым исходным кодом
• 10 вещей, которым я научился при проектировании децентрализованных финансовых приложений
•
Формула собеседования, благодаря которой вы получите офер FAANG/MAANG
•
Мой вопрос на собеседовании по программированию в Google
•
Никто не должен использовать резиновую уточку для отладки в 2022
•
Ваша история коммитов Git должна читаться как историческая книга
•
Я прощаюсь с Firebase
•
Самая грустная история «Just Ship It»
•
Полное руководство по системному дизайну 2022
•
Если бы я мог выучить только 6 языков программирования в своей жизни, я бы выучил эти
•
Как стать Web3 разработчиком
Аналитика, маркетинг и монетизация
• Зачем в Альфа-Банке создали команды Growth Hacking, или «Кнопки мы и сами поменяем»
• 78% пользователей отказывается от персонализированной рекламы в App Store
• Match Group: компания является «заложником» Google
• Отчет «State of Customer Messaging 2022» от OneSignal
• Самые зарабатывающие приложения США в апреле
AI, Устройства, IoT
• Как улучшить распознавание скелетов в MediaPipe
• Как и для чего мы построили ML Space
• Google представил Pixel 6a
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
![](https://habrastorage.org/webt/dz/tg/ap/dztgapinsu8v9fcjeapupf0drzc.jpeg)
У нас есть Telegram-канал Mobile Insights, где подборки статей и новостей выходят каждый день, а так же AppFiles с библиотеками и самыми интересными статьями о мобильной разработке!
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Как нативно визуализировать голос в iOS
• Выселяем Carthage из git, или Как мы связали Carthage + Rome + S3 в нашем проекте
• Заполнители типа в Swift: что это такое и когда их следует использовать
• Apple реструктурирует Сервисы и выделяет рекламу в отдельное направление
• Apple Music выкидывает другие приложения из дока iOS
• 5 актуальных расширений Xcode для оптимизации разработки
•
![](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/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)
• Как мы используем фича-флаги в мобильном приложении QIWI Кошелек
• Загадочная история сбоя WorkManager
• Письмо счастья: как мы разделили наши сборки для AppGallery и Google Play
• Работа с памятью в Android: GC, ARC, RAM
• Kotlin, обрабатываем исключения в корутинах правильно
• Android Studio. Kotlin. Подключение Google календаря через Content Provider
• Android и Play на Google I/O 2022
• Расширение Google Home для Visual Studio Code
• Google Play запускает кастомные продуктовые страницы и события
• Google Play предлагает предоплаченную подписку и снижает минимальную цену до 5 центов
• Вышла стабильная версия Android Studio Chipmunk
•
![](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/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/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
• Я заменил нативное iOS-приложение кроссплатформенным веб-приложением — и никто не заметил!
• Представлен Flutter 3
• Flutter для Apple TV
• Jugger – внедрение зависимостей как в Android
• Flutter Dev Podcast #35: безопасность инфраструктуры для 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/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Всё что нужно знать про ECS
• К ориентиру по хлебным крошкам, или базовые приёмы левел-дизайна
• Как мы потратили на разработку игры 1.000.000 рублей, а заработали 80.000 рублей
• QA без рутины: как мы автоматизировали регрессионное тестирование
• Конец Продуктового менеджмента
• Сравниваю UX/UI сервисов доставки продуктов: Яндекс Лавка, Самокат, Сбермаркет, Ozon Fresh, Утконос
• Как мы создавали движок на Unity (часть 0)
• Зачем разработчикам игр на Unity использовать статический анализ?
• 10 советов от Unity по геймдизайну для начинающего разработчика игр
• Отправляем миллиард уведомлений в месяц
• Podlodka #266: рекрутмент как продукт
• Podlodka #267: кодеки
• $6.6 млн в посевном раунде: Novu — открытая инфраструктура уведомлений
• $80 млн в Серии B: Supabase — альтернатива Firebase
• Firebase обновляется
• Fleksy выпускает свой SDK для клавиатуры
• Appwrite открывает фонд для поддержки проектов с открытым исходным кодом
• 10 вещей, которым я научился при проектировании децентрализованных финансовых приложений
•
![](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/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Зачем в Альфа-Банке создали команды Growth Hacking, или «Кнопки мы и сами поменяем»
• 78% пользователей отказывается от персонализированной рекламы в App Store
• Match Group: компания является «заложником» Google
• Отчет «State of Customer Messaging 2022» от OneSignal
• Самые зарабатывающие приложения США в апреле
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Как улучшить распознавание скелетов в MediaPipe
• Как и для чего мы построили ML Space
• Google представил Pixel 6a
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.