开始构建适用于 ChromeOS 的应用

ChromeOS 设备(例如 Chromebook)支持 Google Play 商店,并且 Android 应用。本文假设您现有的 Android 应用专为以下应用而设计: 您想要针对 Chromebook 进行优化的手机或平板电脑。了解基础知识 请参阅构建首个 Android 应用 app

更新应用的清单文件

首先,请更新您的清单文件,以反映某些关键硬件和 Chromebook 与其他 Android 设备之间的软件差异。

从 ChromeOS M53 版本开始,未明确要求 android.hardware.touchscreen 功能也可在支持 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 在容器(类似于 Docker 或 LXC)中运行整个 Android OS。 这意味着 Android 无法直接访问系统的 LAN 界面。IPv4 流量会改为通过内部网络层 地址转换 (NAT),而 IPv6 单播流量会通过额外 跳跃。

从 Android 应用到互联网的出站单播连接(主要是互联网) 按原样运行。通常情况下,入站连接会被屏蔽。多播或广播 来自 Android 的数据包不会通过防火墙转发到 LAN。

作为多播限制的例外情况,ChromeOS 会运行一项 在 Android 和 LAN 接口之间转发 mDNS 流量,因此标准的 Network Service Discovery API 是发现 LAN 网段中其他设备的推荐方法。更新后 在局域网中查找设备时,Android 应用可以使用标准 TCP 或 UDP 单播 套接字。

源自 Android 的 IPv4 连接使用 ChromeOS 主机的 IPv4 地址。 在内部,Android 应用会看到分配给该网络的专用 IPv4 地址 界面。源自 Android 的 IPv6 连接使用其他地址 因为 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 即可停用输入功能 兼容模式

如果您使用任何类型的网络,请确保应用可以重新连接 解决连接问题或将设备从 睡眠模式。

我们建议您查看在 Chrome 上运行的 Android 应用的测试用例列表 OS,您可以在测试计划中使用。 测试用例涵盖 Android 应用应做好准备的常见场景 是否会在 ChromeOS 设备上运行。

多窗口和屏幕方向更改

ChromeOS 的多窗口环境可以实现状态持久性和召回 更明显的问题使用ViewModel 以便适时保存和恢复状态。

如需测试状态持久性,请将应用最小化一段时间,然后启动另一个应用 并恢复应用以确认其会恢复为 的状态

按全屏键 (F4)、最大化并 恢复。如需测试自由大小调整功能,请先在开发者选项中启用该功能,然后 然后检查应用能否顺利调整大小且没有崩溃。

如果您的 ChromeOS 设备支持的话,请从笔记本电脑模式切换到平板电脑模式,看看 看看一切是否按预期运行在平板电脑模式下旋转设备一次, 测试屏幕方向变化,然后转换回笔记本电脑模式。重复此步骤 。

通过偏移界面元素来确保顶部栏不会破坏您的应用 或基于位置的触控输入对于 ChromeOS 设备,请确保您的应用 不会将重要信息放置在状态栏区域。

如果您使用相机或其他硬件功能(如触控笔), 确保其在执行窗口和设备变更时能够正常运行 。