今天,我們推出 Android 17 的第一個 Beta 版,持續打造以隱私、安全和精緻效能為優先的平台。這個版本延續了我們對 Android 應用程式適應性的努力,大幅強化相機和媒體功能,並推出新的連線能力最佳化工具,以及擴充配對裝置設定檔。這個版本也代表我們向開發人員社群推出新版本的方式有了根本性的轉變,從傳統的開發人員預覽版模式轉變為 Android Canary 計畫
開發人員預覽版以外的內容
Android 已將傳統的「開發人員預覽版」替換為持續更新的 Canary 管道。這種新的「全天候運作」模式有三大優點:
- 更快取得:功能和 API 通過內部測試後,就會立即在 Canary 中推出,不必等到每季發布。
- 穩定性更佳:Canary 的早期「實戰測試」可提供更完善的 Beta 版體驗,其中包含更接近最終版本的全新 API 和行為變更。
- 測試更輕鬆:Canary 支援 OTA 更新 (不必再手動刷機),且做為獨立更新管道,可更輕鬆地與 CI 工作流程整合,讓您能最早對即將推出的潛在變更提供即時意見回饋。
Android 17 時程
我們將從這個 Beta 版快速推進到平台穩定性里程碑,預計在 3 月達成。在這個里程碑,我們將提供最終 SDK/NDK API,以及大致確定的應用程式導向行為。屆時,您將有幾個月的時間完成測試,直到最終版本發布。
一整年的新功能
我們預計 Android 17 會持續透過一系列季度版本更新。我們只會在第 2 季推出的版本中,導入預計會破壞應用程式行為的變更。我們預計在第 4 季推出 SDK 次要版本,提供更多 API 和功能。
螢幕方向和大小調整限制
隨著 Android 17 Beta 版推出,我們將進入自動調整功能藍圖的下一個階段:Android 17 (API 級別 37) 移除開發人員在大螢幕裝置 (sw > 600 dp) 上,選擇不採用螢幕方向和大小調整限制的功能。
如果應用程式指定 SDK 37,就必須做好調整準備。使用者希望應用程式能在各種情境下運作,無論是在平板電腦上多工處理、展開裝置,還是使用電腦分割視窗環境,都希望 UI 能填滿空間,並配合裝置型態調整。
SDK 37 的主要異動
如果應用程式指定 Android 17 為目標,請務必確保與 Android 16 淘汰的資訊清單屬性和執行階段 API 相容。在較小尺寸 ≥ 600dp 的大螢幕上執行時,系統會忽略下列屬性和 API:
| 資訊清單屬性/API | 忽略值 |
| screenOrientation | portrait、reversePortrait、sensorPortrait、userPortrait、landscape、reverseLandscape、sensorLandscape、userLandscape |
| setRequestedOrientation() | portrait、reversePortrait、sensorPortrait、userPortrait、landscape、reverseLandscape、sensorLandscape、userLandscape |
| resizeableActivity | 全部 |
| minAspectRatio | 全部 |
| maxAspectRatio | 全部 |
豁免和使用者控制項
這些異動僅適用於大螢幕,不適用於小於 sw600dp 的螢幕 (包括傳統平板式手機)。此外,根據 android:appCategory 應用程式類別標記,歸類為遊戲的應用程式不受這些限制。
此外,使用者仍保有控制權。使用者可以透過系統的顯示比例設定,明確選擇是否採用應用程式的預設行為。
設定變更更新
為提升應用程式相容性,並盡可能減少影片播放中斷、輸入內容遺失和其他類型的干擾狀態遺失,我們將更新 Activity 重建的預設行為。從 Android 17 開始,系統預設不會再針對特定設定變更重新啟動活動,這些變更通常不需要重新建立 UI,包括 CONFIG_KEYBOARD、CONFIG_KEYBOARD_HIDDEN、CONFIG_NAVIGATION、CONFIG_UI_MODE (僅變更 UI_MODE_TYPE_DESK 時)、CONFIG_TOUCHSCREEN 和 CONFIG_COLOR_MODE。相反地,執行中的活動只會透過 onConfigurationChanged 接收這些更新。如果應用程式需要完全重新啟動,才能重新載入這些變更的資源,您現在必須使用新的 android:recreateOnConfigChanges 資訊清單屬性明確選擇加入,指定哪些設定變更應觸發完整的活動生命週期 (從停止、刪除到重新建立),以及相關常數 mcc、mnc,以及新的 keyboard、keyboardHidden、navigation、touchscreen 和 colorMode。
準備應用程式
我們已發布工具和說明文件,協助您輕鬆完成這項作業。我們的專題網誌文章提供更多指引,以及解決常見問題的策略。應用程式必須支援橫向和直向版面配置,適用於各種顯示比例的視窗大小,因為無法再限制螢幕方向或顯示比例。建議您使用 Android 17 Beta 1 搭配 Pixel Tablet 或 Pixel Fold 模擬器 (設定為 targetSdkPreview = "CinnamonBun") 測試應用程式,或使用應用程式相容性架構,在 Android 16 裝置上啟用 UNIVERSAL_RESIZABLE_BY_DEFAULT。
效能
無鎖定 MessageQueue
在 Android 17 中,指定 SDK 37 以上版本的應用程式會收到新的 android.os.MessageQueue 實作,該實作不含鎖定。新實作方式可提升效能並減少影格遺漏,但可能會破壞反映 MessageQueue 私人欄位和方法的用戶端。
分代垃圾回收
Android 17 為 ART 的並行標記壓縮回收器,導入分代垃圾回收功能。這項最佳化功能會更頻繁地執行較不耗用資源的新生代收集,並搭配完整堆積收集,旨在降低整體垃圾收集 CPU 成本和時間長度。此外,超過 10 億部搭載 Android 12 (API 級別 31) 以上版本的裝置,也可透過 Google Play 系統更新取得 ART 改善項目。
靜態最終欄位現在確實是最終欄位
自 Android 17 起,指定 Android 17 以上版本的應用程式將無法修改「static final」欄位,讓執行階段能更積極地套用效能最佳化。如果嘗試透過反射 (和深度反射) 執行這項操作,一律會擲回 IllegalAccessException。如果透過 JNI 的 SetStatic<Type>Field 方法系列修改這些欄位,應用程式會立即停止運作。
自訂通知檢視畫面限制
為減少記憶體用量,我們限制了自訂通知檢視畫面的大小。這項更新可防範應用程式利用 URI 規避現有限制。這項行為受目標 SDK 版本限制,適用於指定 API 37 以上版本的應用程式。
全新效能偵錯 ProfilingManager 觸發條件
我們在 ProfilingManager 中導入了多項新的系統觸發條件,協助您收集深入資料,以便偵錯效能問題。這些觸發條件為 TRIGGER_TYPE_COLD_START、 TRIGGER_TYPE_OOM 和 TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE。
如要瞭解如何設定新的系統觸發條件,請參閱觸發條件式剖析和擷取及分析剖析資料說明文件。
媒體和相機
Android 17 為媒體和相機應用程式帶來專業級工具,提供流暢轉換和標準化音量等功能。
動態相機工作階段更新
我們已將 updateOutputConfigurations() 導入 CameraCaptureSession。這樣一來,您就能動態附加及卸離輸出介面,不必重新設定整個相機擷取工作階段。這項異動可讓您在相機用途和模式 (例如拍攝靜態圖片與拍攝影片) 之間順暢切換,不必在相機啟動時,耗費記憶體和複雜程式碼來設定及保留應用程式可能需要的所有相機輸出介面。這有助於消除使用者在操作期間可能看到的故障或凍結情形。
fun updateCameraSession(session: CameraCaptureSession, newOutputConfigs: List<OutputConfiguration>)) {
// Dynamically update the session without closing and reopening
try {
// Update the output configurations
session.updateOutputConfigurations(newOutputConfigs)
} catch (e: CameraAccessException) {
// Handle error
}
}邏輯多鏡頭裝置中繼資料
使用結合多個實體相機感應器的邏輯相機時,您現在可以要求所有參與擷取的有效實體相機提供額外中繼資料,而不僅限於主要相機。以往,您必須實作解決方法,有時還要分配不必要的實體串流,才能從次要使用中相機取得中繼資料 (例如在變焦鏡頭切換期間,追蹤相機處於使用中狀態)。這項功能在 CaptureRequest 和 CaptureResult 中導入了新鍵 LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS。在 CaptureRequest 中將這個鍵設為 ON,TotalCaptureResult 就會包含這些額外使用中實體相機的中繼資料。您可以使用 TotalCaptureResult.getPhysicalCameraTotalResults() 存取這項完整的中繼資料,取得更詳細的資訊,進而最佳化相機應用程式的資源用量。
支援 Versatile Video Coding (VVC)
Android 17 新增對多功能視訊編碼 (VVC) 標準的支援。包括在 MediaFormat 中定義 video/vvc MIME 類型、在 MediaCodecInfo 中新增 VVC 設定檔,以及在 MediaExtractor 中整合支援。這項功能將適用於支援硬體解碼和相容驅動程式的裝置。
錄影時維持固定畫質
我們已將 setVideoEncodingQuality() 新增至 MediaRecorder。這項功能可讓您為影片編碼器設定固定畫質 (CQ) 模式,除了簡單的位元率設定外,還能更精細地控制影片畫質。
背景音訊強化
從 Android 17 開始,音訊架構會對背景音訊互動強制執行限制,包括音訊播放、音訊焦點要求和音量變更 API,確保這些變更是由使用者刻意啟動。
如果應用程式在無效的生命週期內嘗試呼叫音訊 API,音訊播放和音量變更 API 會失敗,但不會擲回例外狀況或提供失敗訊息。音訊焦點 API 會失敗,並傳回結果代碼 AUDIOFOCUS_REQUEST_FAILED。
隱私權與安全性
淘汰明文流量屬性
android:usesCleartextTraffic 屬性現已淘汰。如果應用程式指定 Android 17 以上版本,且依賴 usesCleartextTraffic="true",但沒有對應的網路安全性設定,則預設會不允許明文流量。建議您改用網路安全性設定檔案,以便精細控管。
HPKE 混合式加密編譯
我們將推出公開服務供應商介面 (SPI),用於實作 HPKE 混合加密,透過公開金鑰和對稱加密 (AEAD) 的組合,實現安全通訊。
連線能力與電信
強化版 VoIP 通話記錄
我們將推出使用者偏好設定管理功能,用於整合應用程式的 VoIP 通話記錄。包括支援系統撥號程式中的來電者和參與者顯示圖片 URI、讓使用者精細控管通話記錄隱私權,以及豐富整合式 VoIP 通話記錄的視覺顯示。
Wi-Fi 測距和鄰近感測
Wi-Fi 測距功能已強化,新增鄰近偵測功能,支援持續測距和安全的點對點探索。Wi-Fi Aware 測距功能更新包括對等互連控點的新 API,以及 11az 安全測距的 PMKID 快取。
開發人員工作效率和工具
配對裝置應用程式更新
我們在 CompanionDeviceManager 中推出了兩個新的設定檔,以改善裝置區分和權限處理:
- 醫療器材:這個設定檔可讓醫療器材行動應用程式輕觸一下,即可要求所有必要權限,簡化設定程序。
- 運動智慧手環:DEVICE_PROFILE_FITNESS_TRACKER 設定檔可讓隨附應用程式明確指出正在管理運動智慧手環。這樣一來,使用者就能看到正確的圖示,同時重複使用現有的手錶角色權限。
此外,CompanionDeviceManager 現在提供統一的對話方塊,用於裝置關聯和鄰近裝置權限要求。您可以在 AssociationRequest.Builder 中使用新的 setExtraPermissions 方法,將鄰近權限提示綁定在現有關聯流程中,減少向使用者顯示的對話方塊數量。
開始使用 Android 17
您可以註冊任何支援的 Pixel 裝置,透過無線更新取得這個版本和日後的 Android Beta 版更新。如果您沒有 Pixel 裝置,可以在 Android Studio 中使用 64 位元系統映像檔搭配 Android Emulator。
如果您目前已加入 Android Beta 版計畫,將會收到 Beta 版 1 的無線更新。
如果您使用 Android 26Q1 Beta 版,並想安裝 26Q1 的最終穩定版本,然後退出 Beta 版計畫,請忽略 26Q2 Beta 1 的無線更新,並等待 26Q1 發布。
歡迎提供意見回饋,請前往意見回饋頁面回報問題及提出功能要求。越早收到您的意見回饋,我們就越能將其納入最終版本。
為獲得最佳的 Android 17 開發體驗,建議您使用最新預先發布版的 Android Studio (Panda)。設定完成後,請務必完成下列事項:
- 請根據新版 SDK 進行編譯、在 CI 環境中測試,並在意見回饋頁面的問題追蹤工具中回報任何問題。
- 測試現有應用程式的相容性,瞭解應用程式是否受到 Android 17 異動影響,並將應用程式安裝到搭載 Android 17 的裝置或模擬器上,進行全面測試。
在 Android 17 發布週期內,我們會定期更新預先發布版/Beta 版系統映像檔和 SDK。安裝 Beta 版後,日後所有預先發布版和 Beta 版都會透過無線更新機制自動更新。
如要瞭解詳情,請前往 Android 17 開發人員網站。
加入對話
我們將逐步邁向平台穩定階段,並在今年稍晚推出 Android 17 的最終穩定版本,您的意見回饋仍是我們最寶貴的資產。無論您是Canary 頻道的早期採用者,還是在 Beta 1 測試應用程式的應用程式開發人員,都歡迎加入我們的社群並提供意見回饋。我們洗耳恭聽。
-
產品最新消息今天,我們在 Android 開發人員高峰會上宣布,將廣泛提供多項工具和 API,旨在消除日常摩擦,讓您更靈活地建構出色的 Android 應用程式。
Matthew McCullough • 閱讀時間:4 分鐘 -
產品最新消息今天,我們發布了第一組長程任務 (LHT),這些任務非常複雜,工程師需要多天甚至一週才能完成。我們也將推出代理評估功能,首先會從相應模型供應商的代理開始。
Matthew McCullough • 閱讀時間:3 分鐘 -
產品最新消息今天,我們將發布 Android 17,並在多數支援的 Pixel 裝置上推出。未來幾個月,搭載 Android 17 的新裝置將陸續上市。
Matthew McCullough • 閱讀時間:13 分鐘
每週透過電子郵件接收 Android 開發人員的最新深入分析。