產品新訊

Android 17 第四個 Beta 版

4 分鐘閱讀
Daniel Galpin
開發人員服務代表

Android 17 已推出 Beta 版 4,這是這個發布週期中最後一個預定推出的 Beta 版,也是應用程式相容性和平台穩定性的重要里程碑。無論您是想微調應用程式的使用者體驗、確保無邊框算繪功能順暢運作,還是想善用最新 API,Beta 版 4 都能提供近乎最終的測試環境。

準備好應用程式、程式庫、工具和遊戲引擎!

如果您開發 Android SDK、程式庫、工具或遊戲引擎,請務必立即準備所有必要更新,以免下游應用程式和遊戲開發人員因相容性問題而受阻,並確保他們能使用最新的 SDK 功能。如要全面支援 Android 17,請通知下游開發人員進行更新。

Android17_Timeline_01_V02.png

測試時,請在搭載 Android 17 Beta 4 的裝置或模擬器上,透過 Google Play 或其他方式安裝使用程式庫或引擎的正式版或測試版應用程式。逐步完成應用程式的所有流程,並找出功能或 UI 問題。每個 Android 版本都包含平台變更,可提升隱私權、安全性和整體使用者體驗。請查看在 Android 17 上執行的以 Android 17 為目標版本的應用程式,瞭解會影響應用程式的行為變更,並將測試重點放在以下項目:

  • 大螢幕上的大小調整功能:以 Android 17 為目標後,您將無法再選擇不維持大螢幕上的螢幕方向、大小調整和長寬比限制。
  • 動態程式碼載入:如果您的應用程式指定 Android 17 以上版本,Android 14 導入的更安全動態程式碼載入 (DCL) 保護機制,現在也適用於原生資料庫,而不只是 DEX 和 JAR 檔案。使用 System.load() 載入的所有原生檔案都必須標示為唯讀。否則,系統會擲回 UnsatisfiedLinkError。
  • 預設啟用 CT:憑證透明度 (CT) 預設為啟用。(在 Android 16 上,CT 可供使用,但應用程式必須 選擇加入。)
  • 區域網路保護措施:指定 Android 17 以上版本的應用程式預設會封鎖區域網路存取權。盡可能改用可保護隱私權的選擇器,並使用新的 ACCESS_LOCAL_NETWORK 權限,取得廣泛的持續存取權。
  • 背景音訊強化:從 Android 17 開始,音訊架構會強制執行背景音訊互動限制,包括音訊播放、音訊焦點要求和音量變更 API。我們根據各位的意見,自 Beta 版 2 推出後進行了一些變更,包括在「使用中」狀態下強制執行 FGS 時,限制 targetSDK,以及排除鬧鐘音訊。詳情請參閱更新後的指南

應用程式記憶體上限

Android 將根據裝置的總 RAM 導入應用程式記憶體限制,為應用程式和 Android 使用者打造更穩定且可預測的環境。在 Android 17 中,系統會保守地設定限制,建立系統基準,以極端的記憶體洩漏和其他離群值為目標,避免這些問題導致系統不穩定,進而造成 UI 延遲、電池耗電量增加,以及應用程式遭到終止。我們預期這項異動對大多數應用程式工作階段的影響不大,但仍建議您遵循下列記憶體最佳做法,包括建立記憶體基準。

在目前的實作方式中,如果應用程式受到影響,ApplicationExitInfo 中的 getDescription 會包含「MemoryLimiter」字串。您也可以搭配使用觸發式剖析TRIGGER_TYPE_ANOMALY,在達到記憶體上限時收集記憶體快照資料。

unnamed (2).png
Android Studio Profiler 中的 LeakCanary 工作

為協助您找出記憶體流失問題,Android Studio Panda 直接在 Android Studio 分析器中新增 LeakCanary 整合功能,做為專用工作,並在 IDE 中提供相關資訊,且完全整合至您的原始碼。

記憶體用量較小,可直接提升效能、延長電池續航力,並在所有板型規格中提供優質體驗。讓我們攜手合作,為 Android 生態系統打造更快速、更可靠的未來!

應用程式異常狀況的剖析觸發條件

Android 推出裝置端異常偵測服務,可監控耗用大量資源的行為和潛在的相容性回歸。這項服務與 ProfilingManager 整合,可讓應用程式接收特定系統偵測到的事件所觸發的剖析構件。

使用 TRIGGER_TYPE_ANOMALY 觸發條件,偵測系統效能問題,例如繫結器呼叫次數過多和記憶體用量過高。如果應用程式超出作業系統定義的記憶體限制,異常狀況觸發條件會允許開發人員接收應用程式專屬的記憶體快照資料,協助找出並修正記憶體問題。此外,如果活頁夾垃圾內容過多,異常觸發程序會提供活頁夾交易的堆疊取樣設定檔。

這個 API 回呼會在系統強制執行任何措施前發生。舉例來說,這項功能可協助開發人員在應用程式因超出記憶體限制而遭系統終止前,收集偵錯資料。如要瞭解如何使用觸發條件,請參閱觸發條件式剖析說明文件。

    val profilingManager = applicationContext.getSystemService(ProfilingManager::class.java)
    val triggers = ArrayList<ProfilingTrigger>()  
    triggers.add(ProfilingTrigger.Builder(
                 ProfilingTrigger.TRIGGER_TYPE_ANOMALY))
    val mainExecutor: Executor = Executors.newSingleThreadExecutor()
    val resultCallback = Consumer<ProfilingResult> { profilingResult ->
        if (profilingResult.errorCode != ProfilingResult.ERROR_NONE) {
            // upload profile result to server for further analysis          
            setupProfileUploadWorker(profilingResult.resultFilePath)
        } 
    profilingManager.registerForAllProfilingResults(mainExecutor, resultCallback)
    profilingManager.addProfilingTriggers(triggers)
}

Android Keystore 中的後量子密碼編譯 (PQC)

Android Keystore 新增支援 NIST 標準化 ML-DSA (Module-Lattice-Based Digital Signature Algorithm)。在支援的裝置上,您可以在裝置的安全硬體中產生 ML-DSA 金鑰,並使用這些金鑰產生抗量子簽章。Android Keystore 會透過標準 Java 密碼編譯架構 API 公開 ML-DSA-65 和 ML-DSA-87 演算法變體:KeyPairGeneratorKeyFactorySignature。詳情請參閱開發人員說明文件

KeyPairGenerator generator = KeyPairGenerator.getInstance(
        ML-DSA-65, "AndroidKeyStore");
generator.initialize(
        new KeyGenParameterSpec.Builder(
                my-key-alias,
                KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
        .build());
KeyPair keyPair = generator.generateKeyPair();

開始使用 Android 17

您可以註冊任何支援的 Pixel 裝置,透過無線更新取得這個版本和日後的 Android Beta 版更新。如果你沒有 Pixel 裝置,可以在 Android Studio 中使用 Android Emulator 搭配 64 位元系統映像檔

如果你目前已加入 Android Beta 版計畫,系統會提供無線更新,將裝置更新至 Beta 版 4。

請繼續在意見回饋頁面回報問題及提出功能要求。越早收到意見回饋,就越有機會納入最終版本。

為獲得最佳 Android 17 開發體驗,建議使用最新預先發布版 Android Studio (Panda)。設定完成後,請執行下列操作:

  • 針對新版 SDK 進行編譯、在 CI 環境中測試,並在意見回饋頁面的追蹤工具中回報任何問題。
  • 測試目前應用程式的相容性,瞭解應用程式是否受到 Android 17 變更的影響,並在執行 Android 17 的裝置或模擬器上安裝應用程式,然後進行廣泛測試。

在 Android 17 發布週期內,我們會定期更新搶先版/Beta 版系統映像檔和 SDK。安裝 Beta 版後,系統會自動透過無線更新機制,提供後續所有預先發布版本和 Beta 版的更新。

如要瞭解詳情,請前往 Android 17 開發人員網站

參與討論

我們仍十分重視你的意見。無論您是 Canary 管道的搶先體驗者,還是在 Beta 版 4 上測試的應用程式開發人員,都歡迎加入我們的社群並提供意見回饋。我們洗耳恭聽。

撰寫者:

繼續閱讀