Начните создавать приложения для ChromeOS

Устройства ChromeOS, такие как Chromebook, поддерживают Google Play Store и приложения 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. Например, приложения, предоставляющие собственные IME, виджеты приложений, живые обои и средства запуска приложений, не поддерживаются и не могут быть установлены на Chromebook. Полный список функций программного обеспечения, которые не поддерживаются на Chromebook, см. в разделе «Несовместимые функции программного обеспечения» .

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

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

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

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

Обновите библиотеки NDK.

Если ваше приложение использует библиотеки Android NDK и его целевая версия SDK — 23 или выше, убедитесь, что перемещения текста удалены из версий ARM и x86 ваших библиотек NDK, поскольку они несовместимы с Android 6.0 (уровень API 23). и выше. Оставив перемещение текста в библиотеках NDK, вы также можете вызвать ошибки совместимости с Chromebook, особенно при работе на устройстве, использующем архитектуру x86.

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

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

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

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

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

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

Многооконный режим и изменение ориентации

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

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

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

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

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

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