開始建構支援 ChromeOS 的應用程式

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 位址,因此來自 Android 的 IPv6 連線會使用與 ChromeOS 主機不同的位址。

有效使用雲端和本機儲存空間

Chromebook 可讓使用者輕鬆在裝置間遷移資料。如果使用者停止使用一部 Chromebook 後開始使用另一個 Chromebook,他們只需登入,系統就會顯示所有的應用程式。

有了這項功能,請將應用程式資料備份到雲端,以便在跨裝置同步。不過,應用程式不需連上網際網路,即可正常運作。請改為在裝置離線時將使用者的工作儲存在本機,並在裝置恢復連線後同步處理到雲端。

此外,許多人 (例如學校) 也能共用 Chromebook。由於本機儲存空間沒有無限空間,因此整個帳戶和儲存空間可一併從裝置中移除。如果是教育環境,建議您謹記此情境。

更新 NDK 程式庫

如果您的應用程式使用 Android NDK 程式庫,且目標 SDK 版本為 23 以上,請務必從 NDK 程式庫的 ARM 和 x86 版本中移除文字再配置,因為這類程式庫與 Android 6.0 (API 級別 23) 以上版本不相容。在 NDK 程式庫中保留文字重新定位,也可能造成 Chromebook 與 Chromebook 相容,在採用 x86 架構的裝置上執行時更是如此。

為應用程式開發新的測試案例

如要開發應用程式的測試案例,請務必先指定適當的資訊清單標記。請特別注意將 screenOrientation 設為 unspecified。如要指定橫向螢幕方向,建議您使用 sensorLandscape,確保平板電腦提供最佳體驗。

如果您的電腦環境具有特殊的大小或方向需求,請考慮新增中繼標記做為大小或方向提示。如要在手機上加入大小和方向,請改為指定版面配置 defaultHeightdefaultWidthminHeight 屬性。

如果您想針對特定裝置類別使用特定輸入裝置處理方式,請指定 android.hardware.type.pc 以停用輸入相容性模式。

如果您使用任何類型的網路,請確定應用程式在連線問題解決後,或從睡眠模式喚醒裝置後,能重新連上網路。

建議您查看 Chrome 作業系統上 Android 應用程式的測試案例清單,您可以在測試計畫中使用這些案例。這些測試案例涵蓋了 Android 應用程式應在 ChromeOS 裝置上執行的常見情境,並應針對應用程式做好準備。

多視窗模式和螢幕方向變更

ChromeOS 的多視窗環境可能會導致狀態持續性和喚回問題變得更明顯。視情況使用 ViewModel 儲存及還原狀態。

如要測試狀態持續性,請將應用程式縮到最小並啟動另一項資源密集的程序,然後還原應用程式,以確認應用程式返回到您上次離開的狀態。

按下全螢幕鍵 (F4)、盡量提高及還原,測試視窗大小調整功能。如要測試自由尺寸調整功能,請先在開發人員選項中啟用該功能,然後檢查應用程式能否順利調整大小,而不會異常終止。

如果您的 ChromeOS 裝置支援這項功能,請從筆電模式變更為平板電腦模式,確認所有功能是否正常運作。在平板電腦模式中旋轉裝置一次,以測試螢幕方向變更,然後切換回筆記型電腦模式。重複這個步驟幾次。

請務必關閉 UI 元素或位置相關觸控輸入,確保頂端列不會破壞應用程式。如果是 ChromeOS 裝置,請確保應用程式不會在狀態列區域放置重要資訊。

如果您使用的是相機或其他硬體功能 (例如畫筆),請確認這類功能在執行視窗和裝置先前概述的變更時可正常運作。