我們今天推出 Android 17 的第一個 Beta 版,持續打造以隱私權、安全性和效能為優先的平台。這個版本延續了我們為 Android 應用程式打造更靈活適應性的工作,大幅提升了相機和媒體功能、推出可最佳化連線的新工具,並擴展了隨附裝置的設定檔。此外,這個版本也凸顯了我們為開發人員社群提供新版本的方式出現重大轉變,從傳統的開發人員預覽版模式轉為 Android 初期測試版計畫
開發人員預覽版之後
Android 已採用持續更新的 Canary 管道,取代傳統的「開發人員預覽版」。這項「隨時啟用」的新模式有三大優點:
- 更快速的存取權:功能和 API 一通過內部測試,就會立即發布至 Canary,不必等到每季發布。
- 穩定性更高:Canary 搶先「實戰測試」後,Beta 版體驗會更加完善,新版 API 和行為變更也更接近最終版本。
- 測試更輕鬆:Canary 支援 OTA 更新 (不必再手動刷機),而且做為獨立的更新管道,能更輕鬆地與 CI 工作流程整合,讓您盡早提供即時意見,協助我們改善即將推出的潛在變更。
Android 17 時間表
我們預計在 3 月從這個 Beta 版快速轉移至平台穩定性里程碑。在這個里程碑,我們會提供最終的 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 成本和時間長度。透過 Google Play 系統更新,搭載 Android 12 (API 級別 31) 以上版本的裝置也能享有 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 中將這個鍵設為「開啟」,TotalCaptureResult 就會納入這些額外啟用實體攝影機的中繼資料。您可以使用 TotalCaptureResult.getPhysicalCameraTotalResults() 存取這項完整的中繼資料,取得更詳細的資訊,進而最佳化相機應用程式的資源用量。
支援多功能視訊編碼 (VVC)
Android 17 新增了對多功能視訊編碼 (VVC) 標準的支援。包括在 MediaFormat 中定義 video/vvc MIME 類型、在 MediaCodecInfo 中新增 VVC 設定檔,以及將支援功能整合至 MediaExtractor。這項功能將支援具備硬體解碼功能和適用驅動程式的裝置。
錄影時維持畫質
我們已在 MediaRecorder 中新增 setVideoEncodingQuality()。這項功能可讓您為影片編碼器設定恆定畫質 (CQ) 模式,除了簡單的位元率設定外,還能更精細地控制影片畫質。
背景音訊強化
從 Android 17 開始,音訊架構會強制執行背景音訊互動的限制,包括音訊播放、音訊焦點要求和音量變更 API,確保這些變更是由使用者刻意啟動。
如果應用程式不在有效的生命週期內,但嘗試呼叫音訊 API,音訊播放和音量變更 API 會無聲無息地失敗,不會擲回例外狀況或提供失敗訊息。音訊焦點 API 會失敗,並傳回 AUDIOFOCUS_REQUEST_FAILED 結果代碼。
隱私權與安全性
明文流量屬性已淘汰
android:usesCleartextTraffic 屬性已淘汰。如果應用程式指定 Android 17 以上版本,且依賴 usesCleartextTraffic="true",但沒有對應的網路安全性設定,系統會預設禁止明文流量。建議您遷移至「網路安全性設定」檔案,以進行精細控管。
HPKE 混合式加密
我們將推出 HPKE 混合式密碼學的公開服務供應商介面 (SPI),讓您透過公開金鑰和對稱加密 (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 中使用 Android Emulator 搭配 64 位元系統映像檔。
如果你目前已加入 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 版上測試的應用程式開發人員,都歡迎加入我們的社群並提供意見回饋。我們洗耳恭聽。
繼續閱讀
-
產品新訊
今天,我們推出最新的先進開放式模型 Gemma 4,具備複雜的推論和自主工具呼叫能力,可提升 Android 開發體驗。
Matthew McCullough • 閱讀時間:2 分鐘
-
產品新訊
Android 17 今天正式推出 Beta 版 3,達到平台穩定性。這表示 API 介面已鎖定,您可以執行最終相容性測試,並將指定 Android 17 的應用程式發布到 Play 商店。
Matthew McCullough • 閱讀時間:5 分鐘
-
產品新訊
我們希望您能更快速輕鬆地建構優質 Android 應用程式,而協助您提升工作效率的其中一個方法,就是讓您隨時都能運用 AI。
Matthew McCullough • 閱讀時間:2 分鐘
隨時掌握最新消息
每週透過電子郵件接收最新的 Android 開發洞察資料。