Chromebook 等 ChromeOS 设备支持 Google Play 商店和 Android 应用。本文假设您有一个现有 Android 应用(专为手机或平板电脑设计),并且您希望针对 Chromebook 对其进行优化。要了解构建 Android 应用的基础知识,请参阅构建您的第一个 Android 应用。
更新应用的清单文件
首先,更新您的清单文件,以考虑 Chromebook 与其他运行 Android 的设备之间的一些关键硬件和软件差异。
从 ChromeOS M53 版开始,所有未明确要求 android.hardware.touchscreen
功能的 Android 应用,也可在支持 android.hardware.faketouch
功能的 ChromeOS 设备上运行。但是,为了确保您的应用在所有 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 无法直接访问系统的 LAN 接口。相反,IPv4 流量通过内部网络地址转换 (NAT) 层,IPv6 单播流量通过额外的跳转进行路由。
从 Android 应用到互联网的出站单播连接大部分可以正常工作。通常,入站连接会被阻止。来自 Android 的组播或广播数据包不会通过防火墙转发到 LAN。
作为组播限制的一个例外,ChromeOS 运行一项服务,用于转发 Android 和 LAN 接口之间的 mDNS 流量,因此标准网络服务发现 API 是发现 LAN 网段上其他设备的推荐方式。在 LAN 上找到设备后,Android 应用可以使用标准 TCP 或 UDP 单播套接字与其通信。
源自 Android 的 IPv4 连接使用 ChromeOS 主机的 IPv4 地址。在内部,Android 应用会看到分配给网络接口的私有 IPv4 地址。源自 Android 的 IPv6 连接使用与 ChromeOS 主机不同的地址,因为 Android 容器具有专用的公共 IPv6 地址。
有效利用云存储和本地存储
Chromebook 让用户可以轻松地从一台设备迁移到另一台设备。如果用户停止使用一台 Chromebook 并开始使用另一台,他们只需登录,所有应用就会出现。
由于此功能,请将应用数据备份到云端以实现跨设备同步。但是,不要依赖互联网连接来使应用正常运行。相反,在设备离线时将用户的工作保存在本地,并在设备重新上线后同步到云端。
Chromebook 也可以由大量人员共享,例如在学校。由于本地存储不是无限的,因此可以随时从设备中移除整个帐户及其存储。对于教育环境,最好记住这种情况。
为您的应用开发新的测试用例
要为您的应用开发测试用例,首先请确保您指定了正确的清单标志。特别是,请考虑将 screenOrientation
设置为 unspecified
。如果您想指定横向,请考虑使用 sensorLandscape
以确保在平板电脑上的体验是最佳的。
如果桌面环境对尺寸或方向有特殊需求,请考虑添加元标记作为尺寸或方向提示。要在手机上包含尺寸和方向,请改用布局 defaultHeight
、defaultWidth
或 minHeight
属性。
如果您对特定设备类别的特定输入设备处理感兴趣,请指定 android.hardware.type.pc
以禁用输入兼容模式。
如果您使用任何类型的网络,请确保在连接问题解决或设备从睡眠模式唤醒后,应用可以重新连接到网络。
我们建议查看 ChromeOS 上 Android 应用的测试用例列表,您可以在测试计划中使用这些测试用例。这些测试用例涵盖了 Android 应用在 ChromeOS 设备上运行时应准备好的常见场景。
多窗口和方向更改
ChromeOS 的多窗口环境可以使状态持久性和召回问题更加明显。酌情使用 ViewModel
来保存和恢复您的状态。
要测试状态持久性,请将您的应用最小化一段时间,启动另一个资源密集型进程,然后恢复您的应用,以确认它返回到您离开时的状态。
通过按全屏键 (F4)、最大化和恢复来测试窗口大小调整。要测试自由大小调整,请首先在开发者选项中启用它,然后检查您的应用是否能顺利调整大小而不会崩溃。
如果您的 ChromeOS 设备支持,请从笔记本电脑模式切换到平板电脑模式,以检查一切是否按预期工作。在平板电脑模式下旋转设备一次以测试方向更改,然后切换回笔记本电脑模式。重复此步骤几次。
确保顶部栏不会通过偏移 UI 元素或基于位置的触摸输入来破坏您的应用。对于 ChromeOS 设备,请确保您的应用不会在状态栏区域放置重要信息。
如果您正在使用相机或笔等其他硬件功能,请确保在执行上述窗口和设备更改时,它的行为正常。