產品最新消息

Android 17 第四個 Beta 版

4 分鐘小故事
查看 Daniel Galpin 的個人資料
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 Profiler 中整合 LeakCanary,做為專屬工作,並在 IDE 中提供相關資訊,與原始碼完全整合。

記憶體用量越低,效能就越流暢、電池續航力更長,在所有板型規格上都能提供優質體驗。讓我們攜手合作,為 Android 生態系統打造更快速、更可靠的未來!

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

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

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

這項 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 (模組格狀數位簽章演算法)。在支援的裝置上,您可以在裝置的安全硬體中產生 ML-DSA 金鑰,並使用這些金鑰產生抗量子簽章。Android Keystore 會透過標準 Java Cryptographic Architecture API 公開 ML-DSA-65 和 ML-DSA-87 演算法變體:KeyPairGenerator、KeyFactory 和 Signature。詳情請參閱開發人員說明文件。

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 中使用 64 位元系統映像檔搭配 Android Emulator。

如果您目前已加入 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 測試的應用程式開發人員,都歡迎加入我們的社群並提供意見回饋。我們洗耳恭聽。

作者:
繼續閱讀