Правила проверки кода ChromeOS в Android Studio

В ChromeOS мы стремимся улучшать инструменты и фреймворки для разработчиков, позволяющие оптимизировать приложения для Android без проблем под Chromebook. Для этого нам необходимо постоянно искать способы предоставления разработчикам эффективных наборов инструментов, улучшающих процесс создания приложений для больших экранов и ChromeOS.

ChromeOS развивалась на протяжении многих лет, сталкиваясь с новыми вызовами. Один из таких вызовов — своевременное и частое выявление критических проблем для инженеров. Правила линтинга лежат в основе качества, поскольку они сигнализируют разработчикам о проблемах, которые возникнут, если их не исправить. Наши обновленные правила линтинга предоставляют разработчикам больше информации о том, как их приложения работают на ChromeOS, демонстрируя проблемы, как программные, так и аппаратные, которые, несомненно, вызовут проблемы в приложениях Android, работающих на любом устройстве ChromeOS.

Чтобы получить более подробную информацию о существовании этих правил линтинга и их важности, прочтите нашу статью в блоге.

Где эти правила проверки синтаксиса?

Мы активно работаем над этим уже несколько месяцев. В соответствии с графиком выпуска Android Studio, в сборках Electric Eel Canary вводятся некоторые правила линтинга. Несколько из этих правил линтинга уже доступны в релизах Flamingo Canary. Мы продолжим работу над тем, чтобы в ближайшие месяцы они появились в стабильных версиях Android Studio.

Ещё один важный момент: эти правила будут включены по умолчанию в более новых версиях Android Studio. Цель этого — предоставить более чёткие рекомендации о том, как мы хотим помочь инженерам создавать приложения для ChromeOS и больших экранов в будущем.

Новые правила проверки линтера (обновлено в Flamingo Canary 3)

Поддержка ABI x86/x86_64

Большинство Chromebook работают на архитектуре Intel, что делает их преимущественно платформой x86. Для корректной поддержки ChromeOS при включении кода NDK в состав бинарного файла, поддержка x86 обеспечивает повышение производительности за счет исключения необходимости трансляции из библиотек ARM. Поэтому настоятельно рекомендуется, чтобы ваша команда разработчиков добавила поддержку архитектуры x86 или, предпочтительно, x86_64 , поскольку это значительно повысит производительность любого нативного кода в ChromeOS или на любом устройстве Intel.

Средство

По возможности добавьте x86 и x86_64 в раздел abiSplits вашего build.gradle . Также убедитесь, что вы добавляете код в соответствующие папки для поддержки этих ABI. Для получения дополнительной информации обратитесь к документации по Android ABI и докладу о поддержке ABI от ADS .

Примечание: Убедитесь, что все используемые сторонние библиотеки также содержат бинарные файлы для архитектур x86 и x86_64.

Аппаратные ограничения ChromeOS

Большинство устройств ChromeOS имеют меньший набор аппаратных датчиков и других функций по сравнению с телефонами Android. Цель этого правила — сообщить разработчикам, что если вы используете флаг <uses-feature> с android:required=true , ваше приложение не будет доступно в Google Play Store на ChromeOS. Настоятельно рекомендуется, чтобы ваше приложение было доступно на как можно большем количестве устройств, убедиться, что аппаратная функция не требуется по умолчанию. Вместо этого вы можете добавить защитный код для проверки наличия определенного оборудования во время выполнения. Примером этого может служить:

<uses-feature android:name="android.hardware.camera" android:required="true">

Средство

Убедитесь, что функции вашего приложения действительно необходимы, и если это не так, измените параметр android:required на false и добавьте защитное программирование при необходимости вызовов API. Для получения дополнительной информации обратитесь к документации по явно объявленным функциям.

Неизменяемые виды деятельности

По умолчанию среда выполнения Android для ChromeOS, работающая под управлением Android R или выше на Chromebook, запускает приложение Android либо в версии для телефона, либо для планшета, в зависимости от состояния пользовательского интерфейса по умолчанию. Однако существует третий вариант, который обеспечивает лучший пользовательский опыт для ChromeOS — режим изменения размера. Включив этот флаг в вашем Activity, пользователи, которые могут использовать ваше приложение в многооконных средах, смогут изменять размер приложения до нужного размера. Эти изменения позволят пользователям масштабировать пользовательский интерфейс в соответствии со своими потребностями. После добавления этих изменений в ваш Manifest протестируйте ваше приложение с помощью эмулятора рабочего стола, указанного ниже.

Протестируйте свое приложение в эмуляторе рабочего стола.

Средство

Добавьте атрибут resizableActivity="true" к вашему Activity в файле AndroidManifest.xml . Для получения дополнительной информации обратитесь к документации по ограничениям для больших экранов .

Изменения конфигурации

Одним из важных недостатков экранов с изменяемым размером является то, что каждый раз, когда пользователь изменяет размер приложения, вызывается onConfigurationChanged() . Если ваше приложение выполняет полную перерисовку внутри этого метода, это может повлиять на производительность. В настоящее время мы проверяем, чтобы finish() не вызывался внутри onConfigurationChanged , поскольку обработку savedInstanceState следует проводить с большей детализацией, а не принудительно выполнять полную перерисовку. Мы продолжим выявлять случаи снижения производительности и соответствующим образом обновлять это правило.

Средство

Убедитесь, что finish() не вызывается в рамках API onConfigurationChanged() в ваших Activity и Fragment. Для получения дополнительной информации обратитесь к документации по обработке изменений конфигурации .

Поддержка клавиатуры и мыши

В связи с растущим распространением Jetpack Compose мы хотели обеспечить, чтобы сборка с использованием этих библиотек также включала поддержку мыши и клавиатуры в будущем. Со временем мы продолжим улучшать удобство использования мыши, клавиатуры, тачпада и других периферийных устройств. Для получения базового функционала вам потребуется обновить зависимости Gradle до минимально необходимых версий.

Средство

Обновите androidx.compose.foundation:foundation до минимальной версии 1.2. Для получения дополнительной информации обратитесь к примечаниям к выпуску версии Compose .

Совет: 90% пользователей взаимодействуют с приложениями на Chromebook с помощью клавиатуры и мыши. (Источник: внутренние данные Google за 2022 год* )

Обратная связь

Команда постоянно работает над улучшением этих инструментов и документации, касающихся оптимизации для больших экранов. Важным шагом в этом процессе является предоставление нам обратной связи о точности и полезности правил линтинга, развернутых в Android Studio. Вы можете сделать это, оставив отзыв о правиле. Когда правило линтинга появляется в Android Studio, нажмите «Оставить отзыв об этом предупреждении». Вы должны перейти к диалоговому окну, похожему на приведенное ниже. Чем точнее и подробнее предоставленная информация, тем быстрее мы сможем внести необходимые изменения.

Добавить диалоговое окно обратной связи в Android Studio