建構 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 不支援部分軟體功能。舉例來說,Chromebook 不支援提供自訂 IME、應用程式小工具、動態桌布和應用程式啟動器的應用程式,因此無法安裝。如需 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 也可供多人共用,例如在學校。由於本機儲存空間有限,因此隨時可以從裝置中移除整個帳戶及其儲存空間。在教育環境中,建議您留意這種情況。

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

如要為應用程式開發測試案例,請先確認您已指定適當的資訊清單標記。建議將 screenOrientation 設為 unspecified。如要指定橫向模式,請考慮使用 sensorLandscape,確保平板電腦上的體驗最佳化。

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

如果您對特定裝置類別的特定輸入裝置處理方式感興趣,請指定 android.hardware.type.pc 停用輸入相容性模式。

如果使用任何類型的網路,請確認應用程式可以在連線問題解決後或裝置從休眠模式喚醒時,重新連線至網路。

建議您查看 ChromeOS 上的 Android 應用程式測試案例清單,並將這些案例納入測試計畫。這些測試案例涵蓋 Android 應用程式在 ChromeOS 裝置上運作時可能遇到的常見情況,能協助您為應用程式做好準備。

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

ChromeOS 的多視窗環境可能會讓狀態持續性和回想問題更加明顯。在適當情況下,使用 ViewModel 儲存及還原狀態。

如要測試狀態持續性,請將應用程式縮到最小一段時間,啟動另一個耗用大量資源的程序,然後還原應用程式,確認應用程式是否會返回您離開時的狀態。

按下全螢幕鍵 (F4)、最大化及還原,測試視窗大小調整功能。如要測試免費調整大小功能,請先在開發人員選項中啟用這項功能,然後確認應用程式可順暢調整大小,不會當機。

如果 ChromeOS 裝置支援,請從筆電模式切換為平板電腦模式,檢查一切是否正常運作。在平板電腦模式下旋轉裝置,測試方向變化,然後切換回筆電模式。重複這個步驟幾次。

請確認頂端列不會偏移 UI 元素或根據位置的觸控輸入,導致應用程式中斷。如果是 ChromeOS 裝置,請確保應用程式不會在狀態列區域放置重要資訊。

如果使用攝影機或觸控筆等其他硬體功能,請確認執行先前所述的視窗和裝置變更時,這些功能是否正常運作。