Apple забанила аккаунт компании победителя WWDC
Компания Apple забанила аккаунт компании Appstun, созданной одним из победителей студенческого конкурса WWDC 2021 года. Согласно объявлению, опубликованному на сайте Appstun, Apple решила закрыть аккаунт разработчика после многочисленных отказов в публикации приложения, которое, по мнению Apple, нарушает правила App Store.
• Сооснователь Appstun Батухан Карабаба говорит, что он и еще один сооснователь пытались проработать с Apple отказы App Store. «Мы отвечали прозрачно и сотрудничали с Apple, чтобы убедиться, что наше приложение не нарушает никаких правил. Однако по мере того, как процесс продолжался, мы начали сталкиваться с отказами по тем вопросам, которые, как мы думали, уже были решены в предыдущих заявках. Apple не сочла наше решение достаточно хорошим».
• В Appstun делали настраиваемые циферблаты Apple Watch. Они придумала обходной путь, но это были не совсем циферблаты в традиционном понимании, а скорее пользовательские изображения и анимации, работающие независимо от системы циферблатов App Watch. По сути, приложение занимало экран, показывая изображение, похожее на циферблат часов, что позволяло предлагать больше возможностей для настройки.
Apple неправа? Да, но есть нюанс:
• Производитель iPhone заявил, что приложение Appstun неоднократно пыталось ввести пользователей в заблуждение, что оно предлагает функции и возможности, которые не поддерживает, а также продвигало приложение с помощью обманчивой рекламы, что привело к негативным оценкам и отзывам о приложении. Среди жалоб конечных пользователей было то, что пользовательские анимации или изображения не работали как настоящие циферблаты часов, как они надеялись. «Я купил это, чтобы получить то, что выглядит как циферблат часов Rolex… это не циферблат, это просто картинка… стрелки даже не двигаются», — написал один из покупателей. «Есть ли у этой компании разрешение от Rolex на это? Я сомневаюсь в этом. Чистое мошенничество, чтобы получить деньги от людей. Я хочу вернуть деньги, это неприемлемо. Я также сообщу в Rolex и посмотрю, сделают ли они что-нибудь». В многочисленных отзывах указывалось, что приложение не реализует рекламируемые циферблаты, а другие задавались вопросом, как приложение может иметь 4.4 звезды, когда так много письменных отзывов были негативными жалобами.
Скроллить истории, чтобы быть осознанным? А то ж. Приложение Calm запускает ряд новых функций. В частности, приложение запускает Taptivities — интерактивные текстовые истории, на чтение которых уходит минута или две. С помощью Taptivities пользователи могут получать небольшие сеансы медитации подобно сториз в других приложениях. Сессии затрагивают такие темы, как благодарность, самоанализ, обоснование и глубокое дыхание. В Calm говорят, что в следующий раз, когда вы обнаружите, что бесцельно прокручиваете социальные сети, чтобы расслабиться, попробуйте вместо этого почитать Taptivity. Ну или сделайте наконец истории в своем приложении.
Разработка
• Зарплаты разработчиков в первом полугодии 2024
• Самые популярные языки программирования 2024 от IEEE Spectrum
• 2,5 тысяч экрано-состояний и тесты на сотнях устройств: как мы с нуля делали темную тему в приложении
• Как Google победил Skynet или подготовка обучения модели на мобильном устройстве
• Programming With ChatGPT
• Cognitive Load is what matters
Маркетинг
• Calm запускает «осознанные» истории
Кроссплатформа
• Flutter tutorial: Sliding and resize image with CustomScrollView and Slivers
• Flutter Reload: What’s Under the Hood
#mobile
iOS
• ARC в Swift: лучшие практики для предотвращения утечек памяти
• Marking Swift Properties Available by iOS Version
• Working with UDP in SwiftNIO
• Exploring WidgetKit: Creating Configurable Control Widgets in iOS 18 and SwiftUI
• Everything you never thought you wanted to know about emoji flags
• dikidwid0/mastering-navigation-in-swiftui-using-coordinator-pattern-833396c67db5">Mastering Navigation in SwiftUI Using Coordinator Pattern
• GuillemBruix/design-your-dark-and-tinted-versions-of-your-app-icon-for-ios-18-827444a31851">Design Your Dark and Tinted Versions of Your App Icon for iOS 18
#ios
Самые популярные языки программирования 2024 от IEEE Spectrum
Организация IEEE Spectrum опубликовала 11-й ежегодный рейтинг самых популярных языков программирования. В нем объединили множество показателей из разных источников, чтобы создать три мета-рейтинга. Рейтинг «Спектр» составлен с учетом того, что используют члены IEEE, рейтинг «Тренды» направлен на выявление языков, которые находятся в тренде, а рейтинг «Работа» определяет, что ищут работодатели.
• В рейтинге “Спектр” первая тройка - Python, Java, JavaScript. Kotlin на 17 месте, Dart на 19, Swift на 21.
• В рейтинге “Тренды” Dart на 16 месте, Kotlin на 20, сразу за ним Swift на 21.
• В рейтинге “Работа” на первом месте SQL, на втором Python, на третьем Java. Kotlin на 11 месте (в 2022 был на 17), Dart на 20, Swift на 22 (в 2022 был на 23).
И что: Kotlin растет, Swift при своих, а учить нужно Dart 🦋
Android
• Подходы к многомодульной функциональной архитектуре на Android
• Compose Stopwatch — секундомер на Jetpack Compose
• Mapping объектов с помощью MapStruct
• Как переход на AGP&Gradle 8.* изменил взгляд на работу с производительностью сборки
• An effective testing strategy for Android – Unit Testing
• Convergence in a multi-module application
• How to implement Synchronization in Room Database in Kotlin
#android
В release notes для откатывания бета-версии Android 15 и возврата к стабильной ОС обнаружили упоминание, что нормальная версия выйдет только в октябре. Google позже подтвердил это и говорит, что работает над повышением стабильности. Собственно и ладно бы с ним, но какой интересный способ донесения информации до всех ☺️
Разработка
• Better CI/CD with GitHub Actions and deployment tracking
• Designing Apps: 5 Methods to improve your workflow
• How we run migrations across 2,800 microservices
Маркетинг
• The Shippies — первый конкурс RevenueCat для приложений с подпиской
• Niantic стремится создать более насыщенную 3D-карту мира с помощью новой версии приложения Scaniverse
• Большое UX/UI исследование мобильных приложений аптек
• Cheap! Cheap! The Perils of Low Cost Being your ONLY Advantage
Кроссплатформа
• ethiel97/enums-on-steroids-with-dart-best-enum-features-ever-ff7ba7996b87">Enums on Steroids with Dart. Best Enum features ever!
iOS
• Settings iOS — Настройки на SwiftUI
• Dynamic Library vs. Static Library: Optimising iOS App Performance
• Upload iOS App to TestFlight with GitHub Actions and Fastlane Match – 2024 Tutorial with Example
• SwiftUI Tip: Avoid Nesting ObservableObjects
• Impress at Job Interviews by Inspecting their App Bundle
#ios
Если вы вдохновлены Server Driven UI (он же Backend Driven UI), то почитайте “6 причин не использовать его”. Некоторые, конечно, слегка надуманные (например, зависимость от сетевого подключения - такое впечатление, что автор не знает про кеширование), но в целом здравое зерно есть. Такую категоричность (“SDUI может сделать распределение кода и ответственности беспорядочным и трудноорганизуемым, даже если все находятся на одной волне. Это решение также может лишить вас гибкости в отношении новых решений в области дизайна и функциональности”) вряд ли можно поддержать, но в целом еще один пример того, что к внедрению новых технологий надо подходить со всей настороженностью.
Разработка
• Server Driven UI: 6 причин не использовать его
• Задача на логику из собеседования в Amazon
• Ozon Tech Community TeamLead Meetup
• Как успевать больше, оставаясь эффективным, и не выгореть
• Кайфовый дизайн: Как сделать приложение, которое не захочется удалить
• Less Is More: Principles for Simple Comments
Маркетинг
• У Telegram лучший месяц по доходам
• Самые скачиваемые и зарабатывающие приложения в мире в июле 2024
• The Shippies 2024: Recognizing the best in subscription apps
Кроссплатформа
• Почему вам стоит учить/использовать Kotlin Multiplatform
• mmartosdev/pushing-the-boundaries-of-compose-multiplatform-with-agsl-shaders-d6d47380ba8a">Pushing the Boundaries of Compose Multiplatform with AGSL Shaders
• A deep dive into freezed: Data classes, cloning, and (de)serialization
#mobile
iOS
• Apple все еще стоит на пути магазина приложений Epic
• Профилирование приложений на SwiftUI с помощью Instruments
• На iPhone в ЕС можно будет менять телефон и приложения для обмена сообщениями по умолчанию
• Let’s build iOS 18’s navigation title card in SwiftUI
• SwiftUI for Mac 2024
• Understanding container values in SwiftUI
• Exploring SwiftUI: Working with Rotate Gesture
#ios
У Telegram лучший месяц по доходам
В июле мессенджер Telegram продемонстрировал мощный рост доходов, «сделав» лучший месяц в своей истории.
• Данные App Intelligence от AppFigures показывают, что большую часть этого года рост доходов Telegram практически стагнировал. В среднем мессенджер зарабатывал чуть более $5 млн чистой выручки в месяц (стоит, конечно, отметить, что это выручка только в магазинах приложений, в то время как большинство подписок наверняка оформляется через встроенного бота). В марте было немного выше, но этот всплеск не закрепился.
• В июле чистая выручка Telegram выросла до $7.4 млн. Это не только самый высокий доход за всю историю приложения для обмена сообщениями, но и самый большой рост за один месяц.
И что: интересно, повлияет ли задержание Дурова на доходы? Посмотрим по итогам августа и сентября.
Разработка
• Задачи с собеседований: Leetcode — Является ли число палиндромом
• VK Education открывает набор на бесплатные образовательные IT-курсы
• Как я сделал успешный побочный проект и возненавидел его
• Server Driven UI: 6 reasons to not use it
• How DoorDash Defines Great Engineering Management
Кроссплатформа
• Flutter clean code and best practices
• Comprehensive Guide to Testing Riverpod Providers
iOS
• Руководитель App Store покидает свой пост, Apple готовится к организационным изменениям
• Springboard в iOS падает при вводе четырех символов
• Swift MMIO — типобезопасный MMIO
• SwiftUI+MapKit: Maps, Styles, Overlays and Controls
• Typed throws in Swift
#ios
Как я сделал успешный побочный проект и возненавидел его
Прекрасная история от разработчика нескольких специфических скриптов для построения биржевых графиков. Он создал их на основании своих потребностей, потом организовал продажу и даже заработал на них не такие уж большие деньги. Но потом и сам перестал ими пользоваться, и подвыгорел от общения с толпой бездумных трейдеров и "витринных покупателей".
Ужасная истина, которую большинство программистов усваивают с трудом, заключается в том, что выпуск продукта - это только начало. После его выпуска вам придется его поддерживать: исправлять ошибки, внедрять новые функции, разбираться со спорами или мошенничеством и отвечать на множество писем (часто от любопытных покупателей, которые так и не превращаются в платящих клиентов).
Это легче делать, если у вас больше продуктов и вы занимаетесь массовой поддержкой. Или если ваш проект может заменить вам работу на полный рабочий день, и его поддержка - единственное, чем вы занимаетесь в течение дня. Но если вы занимаетесь этим помимо своей обычной работы, то это ужасная потеря времени. Вам нужно установить определенные границы. Иначе работа над проектом будет занимать все ваше свободное время.
Android
• OTP Helper — автоматическое получение кодов из уведомлений
• mickcolai/guide-to-identify-anr-issues-uncover-the-hidden-culprits-aab4b5d38496">Guide to Identify and Solve ANR Issues: Uncover the Hidden Culprits
• Kotlin reified Explained (no more type erasure)
• Teaching a Composable to jump
• Learn Kotlin and Android With Dove Letter
#android
Вышло интересное сравнение производительности Flutter и React Native. Сравнивали работу большого списка, множества анимаций изображений и множества анимаций Lottie. TLDR: Flutter победил практически во всех трех тестах (кроме анимаций Lottie, но в новой версии Flutter 3.22 производительность рендеринга Lottie значительно улучшилась), причем как по FPS, так и по потреблению памяти и процессора, по размеру приложения и скорости сборки. Впрочем, как справедливо отмечали в комментариях, вакансий все равно на RN больше 👨🏻💻.
Разработка
• Избегайте "неиспользуемых сценариев" в многоуровневой архитектуре
• Crazy debugging stories - Recursion
• Algorithms we develop software by
Маркетинг:
• Топ быстрорастущих приложений в России в августе
• Казуальные игры в первой половине 2024.
Кроссплатформа
• Flutter против React Native — тест производительности
• Flutter: Module-based Code Coverage Thresholds
#mobile
Видео и подкасты за неделю @AppFiles
• (iOS Ru)
Стратегия автотестирования для iOS приложений
• (iOS Ru)
5 вопросов для iOS разработчика
• (iOS Ru)
Борьба с утечками памяти: от задачи до победы
• (iOS En)
Import & Export Swift Data with Password
• (iOS En)
Interactive Expandable Header - SwiftUI
• (And Ru)
5 уроков из опыта реализации pixel-perfect тестирования дизайн-системы в Android
• (And Ru)
Gradle-сборка. Измеряем самое важное
• (And Ru)
Шифруем файлы в Android
• (And En)
Now in Android: 109 - Android 15 Beta 4, Samsung Galaxy Unpacked, Google Play's new feature, & more
• (And En)
Hot Flows vs. Cold Flows In Kotlin - When to Use What?
• (And En)
5 Kotlin Coroutine Secrets I Wish I Knew Earlier
•(And En)
Kotlin After 2.0
• (And En)
Revamping and Extending Kotlin's Type System
• (And En)
The state of code coverage for Kotlin
• (Crs En)
There's more than a mouse in Compose Multiplatform for Desktop
• (Dev Ru)
Как писать чистый код — угадываем что ввел юзер и дизайним с нуля Clean Code Approach
• (Dev Ru)
Егор Бугаенко про ТикТок, Huawei и ленивых разработчиков
• (Dev Ru)
Зачем учить язык Си в 2024 году — Как выбрать между C или C++ или Rust
#ios #android #mobile #video
Android
• Supercool App — пример использования паттерна Use Case
• Jetpack Compose and collectAsLazyPagingItems
• Create a Gradle Convention Plugin for Effortless Library Publishing
• Why using Channels is considered anti-pattern?
• KaushalVasava/data-structures-and-algorithms-are-used-in-androids-architecture-and-components-b570b2fc9c3e">Data structures and Algorithms are used in Android’s Architecture and Components
• Mastering Color Theming in Jetpack Compose
• wagnerarcieri/custom-koin-test-rule-instrumented-android-tests-41664eaf50a3">Custom Koin Test Rule & Instrumented Android Tests in Multi-Module Architectures
• Creating Pixel-Perfect UI with Jetpack Compose
#android
Зарплаты разработчиков в первом полугодии 2024
Вот еще про языки и зарплаты, только теперь в России. Хабр Карьера провела анализ зарплат разработчиков разных языков и квалификаций в первой половине 2024.
• Стажёры заняли первое место по изменению зарплат — их зарплаты выросли на 7.8%.
• Сильнее всего изменились зарплаты Kotlin-разработчиков — в среднем рост на 16.3%. Медианная зарплата Kotlin-разработчиков в первом полугодии 2024 — 292 тысячи. Джуны зарабатывали 90 985 ₽ (-9%), мидлы — 182 250 ₽ (-4.1%), сеньоры — 320 000 ₽ (+11.5%), лиды — 357 917 ₽ (+10.1%).
• Медианная зарплата Swift-разработчиков в первом полугодии 2024 — 275 тысяч (+9.5% по сравнению со вторым полугодием 2023, но практически вровень с первой половиной). Джуны зарабатывали 100 000 ₽ (без изменений), мидлы — 235 000 ₽ (+22.8%), сеньоры — 350 833 ₽ (-5.1%), лиды — 467 250 ₽ (+3.8%).
• Когда специалист растет от джуна к мидлу, самый ощутимый рост зарплаты наблюдается у TypeScript-, PHP-, Kotlin-, Swift-разработчиков — в 2.3 раза.
• Самая большая разница между зарплатами джунов и лидов у Swift-разработчиков — 4.7 раз, а самая маленькая у C-разработчиков — 3.1 раза.
• Среди лидов самым высокооплачиваемым языком стал Swift с зарплатой 467 250 ₽, меньше всего получают лиды в PHP — 320 000 ₽.
Разработчики в Snapchat 📒 вообще ребята! 13 (прописью - тринадцать) лет понадобилось, чтобы выпустить приложение для iPad. Правда, пока, до конца не осилили - приложение работает только в портретном режиме. К тому же, как докладывают с мест, оно периодически глючит. Понадобиться ли Snapchat еще 13 лет, чтобы довести его до ума? Думаю, что управляться быстрее. Года за 3. Какие ваши ставки?
Разработка
• How we sped up Notion in the browser with WASM SQLite
Маркетинг
• Snapchat запустился на iPad
Кроссплатформа
• Как я ускорил свое мобильное приложение BookDesk на React Native в 3 раза?
• Cross-Platform Swift: Building a Swift app for the browser
#mobile
iOS
• Карточка навигации для iOS 18 на SwiftUI
• Проверяем пакет iOS-приложения
• How to make ZStack content fully scrollable in a SwiftUI ScrollView
• Send data Between iOS Apps and Extensions Using Darwin Notifications
• Transcribing audio from a file using the Speech framework
• SwiftUI Modifiers Deep Dive: containerBackground
• dhananjayshchauhan/arc-in-swift-best-practices-to-avoid-memory-leaks-353d5d3f1404">ARC in Swift: Best Practices to Avoid Memory Leaks
#ios
Android
• 10 самых распространенных ошибок с Jetpack Compose
• Выпуск Android 15 перенесен на октябрь
• Автообновление приложений через GutHub releases с помощью Hilt и Retrofit в Android
• Kotlin Coroutines. От А до Я
• NFC on Android: Creating a prepaid payment system using NDEF tags
• Approaches for Multi-Module Feature Architecture on Android
• Hard-earned Learnings From Navigating Google Play App Rejections
• Kotlin Extensions: A Complete Guide to Extension Functions in Kotlin
#android
The Shippies - первый конкурс RevenueCat для приложений с подпиской
The Shippies - это первая награда RevenueCat за выдающиеся достижения в области приложений с подпиской. На ежегодной конференции App Growth компания наградит самые инновационные, удобные и успешные приложения года.
• Конкурс открыт для всех приложений, независимо от того, используют они платформу RevenueCat или нет.
• Всего в нем 6 категорий — лучшее новое приложение, лучшее новое приложение от соло-разработчика, лучший опыт онбординга, лучшая стратегия монетизации, лучшая стратегия уменьшения оттока пользователей, лучший дизайн пейвола.
• Выигравшие приложения будут выбираться экспертами компании и рядом привлеченных профессионалов.
• Прием заявок идет до 3 сентября.
Android
• ArtMaker — рисование с Jetpack Compose
• Фантастические баги: как их ловить и править
• Reorderable — перетаскивание элементов в Lists и Grids в Jetpack Compose
• Effective Map Composables: Draggable Markers
• Kotlin Granular Analytics With Lifecycle Delegate
• Add powerful analytics modifiers in Jetpack Compose with ModifierLocal
• Strikt Unit Testing In Kotlin
• Adding 16 KB Page Size to Android
#android
Куда и как расти IT-специалисту — разберём на конкретных примерах
Чувствуете, что достигли потолка, и не понимаете, куда двигаться дальше? Хотите расти в должности и доходе, но не знаете, какие скилы нужно осваивать для этого? На все эти и другие вопросы ответим на большом онлайн-событии.
Разработчик, проджект, аналитик и дизайнер из IT-компании ecom.tech расскажут, как выросли до руководителей. Обсудим на конкретных примерах, как и куда развиваться, чтобы повысить свой уровень и получить новую должность.
→ Бесплатно, 28 августа в 19:00 мск
Вы узнаете:
— какие навыки прокачивать, чтобы повысить свой уровень;
— куда и как расти в карьере разным IT-специалистам;
— что должны уметь джун, мидл и синьор;
— как устроен рабочий день в ecom.tech;
— как руководители стали руководителями — истории пути;
— какая ситуация на рынке труда и как сейчас проходит найм.
Спикеры:
◾️Владимир Тимошенко — технический руководитель продукта
◾️Александр Маркин — руководитель группы логистических кросс-продуктовых проектов
◾️Сергей Коваленко — руководитель направления продуктовой архитектуры
◾️Дмитрий Деменков — руководитель отдела машинного обучения коммерческих продуктов
◾️Иван Емелюшкин — старший продуктовый дизайнер
→ Зарегистрируйтесь на онлайн-событие
Видео и подкасты за неделю @AppFiles
• (iOS En)
SwiftUI App Theme Switcher - iOS 17 & 18
• (iOS En)
SwiftUI Task Modifier Lifecycle Handling
• (iOS En)
MeshGradients in iOS 18 and Xcode 15
• (iOS En)
Floating Tab Bar - iOS 17 & 18
• (And Ru)
Фантастические баги: как их ловить и править
• (And En)
Fragments in Compose
• (And En)
How to Show Snackbars From ANY Place In Your Compose App
• (And En)
How to Render PDFs on Android in Jetpack Compose (+ Search Function!)
• (And En)
Going fast with Kotlin
• (And En)
From Code to Streams
• (And En)
Dynamic Exploration of Static Analysis with Compose
• (And En)
Applying the Decorator Pattern in Kotlin
• (Crs Ru)
Почему вам стоит учить/использовать Kotlin Multiplatform
• (Crs En)
The rollercoaster of releasing an Android, iOS, and macOS app with KMP
• (Crs En)
Using C & native platforms in Kotlin: Building a multi-platform advanced library
• (Crs En)
Mastering Concurrency: End to End Stress Testing with Kotlin Multiplatform
• (Crs En)
React Native MacOS App Tutorial – Book Management System
• (Dev Ru)
Задача на логику из собеседования в Amazon
• (Dev Ru)
Ozon Tech Community TeamLead Meetup
• (Dev Ru)
Как успевать больше, оставаясь эффективным, и не выгореть
#ios #android #mobile #video
Android
• Kotlin 2.0.20 Released
• dobri.kostadinov/jetpack-compose-top-10-mistake-we-all-have-made-a324b52366b8">Jetpack Compose: Top 10 mistake we all have made
#android #kotlin
Стать сотрудником Яндекса быстрее и проще, чем кажется. Участвуйте в днях быстрого найма: решите тестовое, пройдите несколько секций собеседования и получите офер за несколько дней.
Ближайшие Fast Track мероприятия:
• 7-8 сентября — для Android- и iOS-разработчиков, офер за 2 дня в команды Еды и Лавки.
Кстати, вчера еще обозрел топ быстрорастущих приложений в России и на первом месте в росте по выручке - Owl Diary: For Owlet. Снаружи выглядит как приложение для любителей сов 🙈, но, вероятно, "совы не то, чем кажутся" - очень смущает "возраст 17"+и "большое/значительное количество тем откровенного содержания, предназначенные только для взрослых". ХЗ что там на самом деле (ставлю на подобие Chaturbate) - посмотрите кто отважный, расскажите потом нам всем. Ну и как обычно вопрос к модераторам Apple - как такое пропустили 🦉
Разработка
• Exploring Indie Life: Reducing Friction by Analytics
• tarang0510/the-2024-landscape-of-mobile-apps-development-8323a7a383b0">The 2024 Landscape of Mobile Apps Development
• I've Built My First Successful Side Project, and I Hate It
Маркетинг
• Конструктор графики для App Store и Google Play
Кроссплатформа
• Валидация форм во Flutter как PRO. Мастер-класс по использованию form_model и BLoC
• Flutter: Google Maps Autocomplete SearchBar with Debouncing
iOS
• Concurrency шаг за шагом — сетевой запрос
• От Cocoapods к Tuist+SPM быстрыми шагами
• Performance Testing для iOS
• jpmtech/creating-a-swipeable-view-that-is-backward-compatible-with-ios-16-aa6b3ab3e624">Creating a Swipeable View that is Backward Compatible with iOS 16
• The Hidden Treasures of Crash Reports
• techmsy/exploring-interactive-and-useful-features-in-swift-6-dbe79ad47222">Exploring Interactive and Useful Features in Swift 6
#ios
Android
• Google закрывает Google Play Security Reward Program
• Модульное тестирование с помощью JUnit в Android
• Как ошибки в коде вдохновили разработчика создать инструмент, которым теперь пользуются крупные российские IT-компании
• Understanding Side -effects in Jetpack Compose
• Quickly Toggle Between Artifactory and Local Android Libraries
• abhishekdubey331/effortless-account-switching-automate-your-android-app-login-flow-with-python-and-adb-8a5aea83924d">Boost Developer Efficiency: Automate Android Login Workflows with ADB and Python
• Designing Effective UIs For Enhancing Compose Previews
#android