Сборка для ChromeOS

Устройства ChromeOS, такие как Chromebook, поддерживают магазин Google Play и приложения Android. В этом документе предполагается, что у вас уже есть приложение Android, разработанное для телефонов или планшетов, которое вы хотите оптимизировать для Chromebook. Чтобы узнать основы создания приложений Android, см. раздел «Создание вашего первого приложения Android» .

Обновите файл манифеста вашего приложения.

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

Начиная с версии ChromeOS M53, все приложения Android, которым явно не требуется функция android.hardware.touchscreen , также работают на устройствах ChromeOS, поддерживающих функцию android.hardware.faketouch . Однако, чтобы ваше приложение работало на всех Chromebook, обновите файл манифеста таким образом, чтобы функция android.hardware.touchscreen не требовалась, как показано в следующем примере.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          ... >
    <!-- Some Chromebooks don't support touch. Although not essential,
         it's a good idea to explicitly include this declaration. -->
    <uses-feature android:name="android.hardware.touchscreen"
                  android:required="false" />
</manifest>

Различные аппаратные устройства оснащены разными наборами датчиков, и Chromebook могут не иметь всех датчиков, которые есть в портативных устройствах Android, таких как GPS и акселерометры. Однако в некоторых случаях функциональность датчика обеспечивается другим способом. Например, Chromebook могут не иметь датчиков GPS, но они предоставляют данные о местоположении на основе Wi-Fi-соединений. Подробнее о датчиках, поддерживаемых платформой Android, см. в обзоре датчиков .

Если вы хотите, чтобы ваше приложение работало на Chromebook независимо от наличия датчиков, обновите файл манифеста таким образом, чтобы датчики не требовались.

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

Обновите целевой SDK.

Обновите атрибут targetSdkVersion вашего приложения до последней доступной версии API, чтобы воспользоваться всеми улучшениями платформы Android. Ознакомьтесь с улучшениями платформы Android в разных версиях .

Проверьте требования к сети.

Chromebooks запускают всю операционную систему Android в контейнере, подобно Docker или LXC. Это означает, что Android не имеет прямого доступа к сетевому интерфейсу системы. Вместо этого трафик IPv4 проходит через внутренний уровень трансляции сетевых адресов (NAT), а одноадресный трафик IPv6 маршрутизируется через дополнительный узел.

Исходящие одноадресные соединения из Android-приложения в интернет в основном работают как есть. Как правило, входящие соединения блокируются. Многоадресные или широковещательные пакеты от Android не перенаправляются в локальную сеть через брандмауэр.

В качестве исключения из ограничения на многоадресную рассылку, ChromeOS использует службу, которая перенаправляет трафик mDNS между Android и интерфейсом локальной сети, поэтому стандартные API обнаружения сетевых служб являются рекомендуемым способом обнаружения других устройств в сегменте локальной сети. После обнаружения устройства в локальной сети приложение Android может использовать стандартные одноадресные сокеты TCP или UDP для связи с ним.

Соединения IPv4, инициированные с Android, используют IPv4-адрес хоста ChromeOS. Внутри приложения Android сетевой интерфейс видит частный IPv4-адрес. Соединения IPv6, инициированные с Android, используют другой адрес, отличный от адреса хоста ChromeOS, поскольку контейнер Android имеет выделенный публичный IPv6-адрес.

Эффективно используйте облачное и локальное хранилище.

Chromebook позволяют пользователям легко переходить с одного устройства на другое. Если пользователь перестает использовать один Chromebook и начинает использовать другой, ему достаточно просто войти в систему, и все его приложения отобразятся.

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

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

Разработайте новые тестовые сценарии для вашего приложения.

Для разработки тестовых сценариев для вашего приложения сначала убедитесь, что вы указали правильные флаги манифеста. В частности, рассмотрите возможность установки параметра screenOrientation в значение unspecified . Если вы хотите указать альбомную ориентацию, рассмотрите возможность использования sensorLandscape , чтобы обеспечить оптимальное отображение на планшете.

Если у вас есть особые требования к размеру или ориентации для настольных сред, рассмотрите возможность добавления метатегов в качестве подсказок по размеру или ориентации. Чтобы включить размер и ориентацию на телефонах, укажите атрибуты layout defaultHeight , defaultWidth или minHeight .

Если вас интересует обработка определенных устройств ввода для определенных категорий устройств, укажите параметр android.hardware.type.pc , чтобы отключить режим совместимости ввода.

Если вы используете какие-либо сетевые технологии, убедитесь, что приложение может повторно подключиться к сети после устранения проблемы с подключением или выхода устройства из спящего режима.

Мы рекомендуем ознакомиться со списком тестовых случаев для приложений Android на Chrome OS , которые вы можете использовать в своем плане тестирования. Тестовые случаи охватывают распространенные сценарии, к которым должны быть готовы приложения Android, если предполагается их работа на устройствах ChromeOS.

Изменение многооконного режима и ориентации экрана

Многооконный режим ChromeOS может сделать проблемы с сохранением и восстановлением состояния более очевидными. Используйте ViewModel для сохранения и восстановления состояния при необходимости.

Чтобы проверить сохранение состояния, сверните приложение на некоторое время, запустите другой ресурсоемкий процесс и восстановите приложение, чтобы убедиться, что оно возвращается в то состояние, в котором вы его оставили.

Проверьте изменение размера окна, нажав клавишу полноэкранного режима (F4), развернув окно на весь экран и восстановив его. Чтобы проверить свободное изменение размера, сначала включите эту функцию в параметрах разработчика, а затем убедитесь, что ваше приложение плавно изменяет размер без сбоев.

Если ваше устройство ChromeOS поддерживает эту функцию, переключитесь из режима ноутбука в режим планшета, чтобы проверить, всё ли работает как положено. Поверните устройство один раз в режиме планшета, чтобы проверить изменение ориентации, затем вернитесь в режим ноутбука. Повторите этот шаг несколько раз.

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

Если вы используете камеру или другую аппаратную функцию, например, стилус, убедитесь, что она корректно работает при выполнении описанных ранее изменений в окне и настройках устройства.