Android Studio 中的 ChromeOS Lint 規則

ChromeOS 團隊致力於提升開發人員工具和架構,協助 Android 應用程式開發人員順暢地為 Chromebook 最佳化應用程式。因此,我們需要持續尋找方法,為開發人員提供實用的工具組合,進一步提升大螢幕和 ChromeOS 的開發體驗。

隨著新挑戰不斷出現,ChromeOS 也與時俱進。其中一項挑戰是及早且經常向工程師回報重大問題。Lint 規則是品質的核心,因為這些規則會向開發人員提供警示信號,指出若不修正問題會導致哪些狀況。我們更新了 Lint 規則,讓開發人員更清楚瞭解應用程式在 ChromeOS 上的執行方式,並顯示軟體和硬體問題,這些問題無疑會導致 Android 應用程式在任何 ChromeOS 裝置上執行時發生問題。

如要進一步瞭解這些 Lint 規則的用途和重要性,請參閱我們的網誌文章。

這些 Lint 規則在哪裡?

我們已積極開發幾個月,根據 Android Studio 的發布時間表,部分 Lint 規則會隨著 Electric Eel Canary 建構版本推出。其中幾項 Lint 規則也已在 Flamingo Canary 版本中推出。我們會在接下來幾個月內,持續在 Android Studio 穩定版中加入這些功能。

另一項重要事項是,在較新版本的 Android Studio 中,這些規則會預設啟用。目標是針對如何協助工程師建構 ChromeOS 和大型螢幕,提供更明確的指引。

新的 Lint 規則 (Flamingo Canary 3 更新)

支援 x86/x86_64 ABI

大多數 Chromebook 都是採用 Intel 架構,因此主要屬於 x86 架構平台。如果 NDK 程式碼是二進位檔的一部分,為了確保 ChromeOS 正常運作,建議您使用 x86,因為這樣可以移除 ARM 程式庫所需的轉譯作業,進而提升效能。因此,強烈建議開發團隊新增 x86x86_64 架構支援,因為這能大幅提升 ChromeOS 或任何 Intel 裝置上原生程式碼的效能。

解決方法

如有可能,請在 build.gradle 內的 abiSplits 中新增 x86x86_64。此外,請務必將程式碼新增至適當的資料夾,以支援這些 ABI。如要瞭解詳情,請參閱 Android ABI 說明文件和 ADS 的 ABI 支援演講。

注意:請確認所用的第三方程式庫也包含 x86 和 x86_64 二進位檔。

ChromeOS 硬體限制

與 Android 手機相比,大多數 ChromeOS 裝置的硬體感應器和其他功能樣本集較小。這項規則的目的是提醒開發人員,如果使用 <uses-feature> 搭配 android:required=true,應用程式將無法在 ChromeOS 的 Google Play 商店上架。強烈建議您確保硬體功能並非預設為必要功能,盡可能讓更多裝置存取應用程式。不過,您可以在執行階段新增防禦性程式碼,檢查特定硬體。舉例來說,用於判定

<uses-feature android:name="android.hardware.camera" android:required="true">

解決方法

請確認應用程式中的功能是否真的需要,如果不需要,請將 android:required 參數變更為 false,並在需要 API 呼叫時新增防禦性程式設計。如要瞭解詳情,請參閱明確宣告功能的說明文件

無法調整大小的活動

根據預設,在 Chromebook 上執行 Android R 以上版本的 ChromeOS Android 執行階段,會根據預設 UI 狀態啟動應用程式的手機或平板電腦版本。不過,我們提供第三種選項,也就是「可調整大小」模式,可為 ChromeOS 使用者帶來更優質的體驗。在活動中啟用這個標記後,使用者就能在任何多視窗環境中使用應用程式,並將應用程式調整為適當大小。這些變更可讓使用者根據需求調整 UI 比例。在資訊清單中加入這些變更後,請針對下列桌面模擬器測試應用程式。

在電腦模擬器中測試應用程式

解決方法

AndroidManifest.xml 檔案中,將 resizableActivity="true" 屬性新增至 Activity。詳情請參閱大螢幕限制說明文件。

設定變更

可調整大小的螢幕有一項重大注意事項,就是每次使用者變更應用程式大小時,系統都會呼叫 onConfigurationChanged()。如果應用程式在該方法內發出完整重繪,就會產生相關的效能影響。目前我們正在檢查,確保 finish() 不會在 onConfigurationChanged 中呼叫,因為您應該以更精細的方式處理 savedInstanceState,而不是強制完整重繪。我們會持續找出可能導致效能降低的情況,並據此更新這項規則。

解決方法

請確保活動和片段中的 onConfigurationChanged() API 未呼叫 finish()。詳情請參閱處理設定變更的說明文件。

支援鍵盤和滑鼠操作

隨著 Jetpack Compose 的採用率提高,我們希望確保使用這些程式庫建構應用程式時,也能支援滑鼠和鍵盤功能。我們將持續提升滑鼠、鍵盤、觸控板和其他周邊裝置的互動體驗。如要取得基本體驗,請將 Gradle 依附元件更新至最低必要版本。

解決方法

androidx.compose.foundation:foundation 更新至 1.2 以上版本。詳情請參閱 Compose 版本資訊

提示:90% 的使用者在 Chromebook 上與應用程式互動時,都會使用鍵盤和滑鼠。(資料來源:2022 年 Google 內部資料*)

意見回饋

團隊不斷尋求改進這些工具,以及大螢幕最佳化相關文件。這個程序的重要步驟是針對 Android Studio 中部署的 Lint 規則準確度和實用性提供意見回饋。只要提供規則意見回饋,即可達成此目的。當 Android Studio 顯示 lint 規則時,請按一下「Provide feedback on this warning」(提供有關這項警告的意見回饋)。系統應會顯示類似下方的對話方塊。您提供的資訊越準確且詳盡,我們就越能快速反覆作業,做出適當的變更。

Android Studio 中的「提供意見」對話方塊