本頁面概述 Android 10 版本的主要功能,並提供其他資訊的連結。這些功能摘要會依據功能在本網站上的說明文件位置進行排序。
建構
java_sdk_library
Android 10 推出 java_sdk_library
,這是一項新的建構規則,可修正共用 Java 程式庫的相容性問題。裝置製造商可以使用這個機制為自己的共用 Java 程式庫,維持 API 的向後相容性。
建築
模組化系統元件
Android 10 會將部分 Android 系統元件模組化,並讓這些元件能夠在 Android 的正常發布週期外進行更新。部分模組包括:
- Android 執行階段
- Conscrypt
- DNS 解析器
- DocumentsUI
- ExtServices
- 媒體
- ModuleMetadata
- 網路
- PermissionController
- 時區資料
硬體抽象層 (HAL)
Android 10 新增了對 HAL 的支援,可在沒有用戶端時自動關閉。
核心
ABI
Android 10 支援新的 ABI 監控公用程式,可協助比較、追蹤及減輕影響核心模組相容性的核心 ABI 變更。
Android 10 也推出了以符號為基礎的 ABI 用法檢查器。檢查器可以在建構期間偵測過時的預先建構二進位檔,讓共用程式庫開發人員知道哪些預先建構的二進位檔可能因變更而損壞,以及哪些預先建構的二進位檔必須重新建構。
Android Live-Lock Daemon
Android 10 包含 Android Live-Lock Daemon (llkd),可用於偵測及緩解核心死結。
ARM64 上的 vDSO32
Android 10 支援在 64 位元核心上使用 vDSO32,可提升 0.4% 的電池續航力和其他效能改善。
早期掛載的分區 fstab 項目
Android 10 規定裝置必須使用第一階段 RAM 磁碟中的 fstab
檔案,為早期掛載的分割區指定 fstab
項目。
HIDL
卸載 BroadcastQueue
Android 10 包含新的卸載 BroadcastQueue
,可用於現有的背景和前景佇列。卸載佇列的優先順序和逾時行為與背景佇列相同。為避免阻斷背景佇列 (可能發生更有趣或使用者可見的廣播),卸載佇列會處理 BOOT_COMPLETED
廣播,許多應用程式都會監聽這類廣播,且可能需要很長的時間才能完成。卸載佇列目前只會處理 BOOT_COMPLETED
廣播,但可能會處理其他長廣播。
SystemSuspend 服務
Android 10 會將 libsuspend
中負責啟動系統暫停的執行緒,替換為 SystemSuspend HIDL 服務。這個實作項目提供與先前版本相同的功能,同時也能發揮 Android HIDL 基礎架構的優勢。
HIDL 中的 safe_union
Android 10 在 HIDL 中推出了 safe_union
,這是一個明確標記的聯集類型。
設定
ConfigStore HAL
由於 ConfigStore HAL 的記憶體用量高且使用不便,Android 10 已淘汰這項技術,並以系統屬性取代 HAL。
設定檔 Schema API
Android 平台包含大量 XML 檔案,用於儲存設定資料。許多 XML 檔案位於 vendor
分區,但會在 system
分區中讀取。在這種情況下,XML 檔案的結構定義會做為兩個區隔的介面,因此必須明確指定結構定義,並以向後相容的方式進行調整。在 Android 10 之前,平台並未提供機制,要求指定及使用 XML 結構定義,或防止結構定義中的不相容變更。Android 10 提供此機制,稱為 Config File Schema API。
系統屬性做為 API
跨分區存取的系統屬性會轉換為 sysprop
說明檔案,而用於存取屬性的 API 會以 C++ 的具體函式和 Java 的類別產生。
供應商介面 (VINTF) 物件
VINTF
Android 10 中的 VINTF 變更包括:
- 廢止 AVB 版本標記
- 在 OTA 套件中新增核心資訊
- 正式建構 ODM 資訊清單
- 新增產品相容性矩陣
- 在建構系統中將資訊清單項目與 HAL 模組建立關聯
系統啟動載入程式
Ramdisk
在 Android 10 中,根檔案系統不再包含在 ramdisk.img
中,而是併入 system.img
。
建構 ODM 分區
Android 10 支援使用 Android 建構系統建構 odm
分區。您可以使用單獨的 /odm
分區進行自訂,這樣就能將單一供應商映像檔用於多個硬體 SKU。這樣一來,原始設計製造商 (ODM) 就能根據自家裝置 (板卡) 自訂晶片系統 (SoC) 供應商的板卡支援套件 (BSP)。可為特定板子的元件、特定板子的守護程序,或在硬體抽象層 (HAL) 上實作自己的功能,也可以取代或自訂 SoC 元件。
開機映像檔標頭版本管理
Android 10 將啟動映像檔標頭更新至第 2 版,其中包含一個可用來儲存裝置樹狀結構 blob (DTB) 映像檔的部分。Android 10 VTS 測試會驗證所有搭載 Android 10 的裝置是否使用啟動映像檔標頭第 2 版,並在啟動/復原映像檔中加入有效的 DTB 映像檔。
非 A/B 裝置的復原映像檔
在 Android 9 以上版本中,裝置的復原映像檔必須包含疊加圖片的資訊。裝置製造商可以使用 DeviceTree 或進階設定和電源介面 (ACPI) 來描述所有無法偵測到的裝置。Android 10 以上版本支援使用 ACPI 而非 DeviceTree 資料塊做為疊加層 (DTBO) 的架構。
穩定版 AIDL
Android 10 新增了對穩定版 Android 介面定義語言 (AIDL) 的支援,這是一種追蹤 AIDL 介面提供的應用程式設計介面 (API)/應用程式二進位介面 (ABI) 的新方法。
將 fastboot 移至使用者空間
Android 10 新增了可調整大小的分區支援功能,方法是將 Fastboot 實作從啟動載入程式重新配置至使用者空間。
螢幕
高動態範圍影片播放
Android 10 支援 HDR10、VP9 和 HDR10+ 播放功能。
文字分類
文字分類功能會運用機器學習技術,協助開發人員分類文字。Android 10 為 TextClassifier API 引進了兩種方法:suggestConversationActions
和 detectLanguage
。suggestConversationActions
方法會根據指定對話產生建議回覆和動作,而 detectLanguage
方法則會偵測文字的語言。
支援 Zawgyi 字型轉譯
在緬甸,Zawgyi 是最受歡迎的字型。Android 9 以下版本不支援渲染 Zawgyi,因為該字型不符合 Unicode 規範。Android 10 解決這個問題的方法,是加入可同時轉譯 Unicode 緬甸文和 Zawgyi 的 Unicode 字型。在搭載 Android 10 的裝置上,您無須執行任何實作工作,即可支援 Zawgyi 字型算繪。如果裝置有支援 Zawgyi 的自訂實作項目,您可以:
- 請還原這些變更,並使用平台支援的方法。
- 請在系統中保留常見的 Zawgyi 字型,並在
fonts.xml
中使用語言代碼my-qaag
。詳情請參閱 Zawgyi (Qaag) 的 Unicode CLDR 版本資訊。
隱藏應用程式圖示的限制
Android 10 限制應用程式隱藏啟動器圖示的功能。如果應用程式未啟用啟動器活動,系統會在啟動器中顯示合成活動;這項合成活動代表系統設定中應用程式的詳細資料頁面。
如要進一步瞭解用於顯示應用程式圖示的邏輯,包括不會顯示應用程式圖示的應用程式類型,請參閱 API 參考資料中的 getActivityList()
說明文件。
設定
為改善無障礙性,Android 10 提供可供使用者自訂的逾時設定。API 和設定變更會隨 Android 10 推出。如果您自訂設定,請確認裝置支援這項功能。如果您有在裝置上逾時的 UI 元素,請在這些元素上使用 timeouts API。詳情請參閱 Android 開發人員無障礙指南。
相容性
Android 相容性定義說明文件 (CDD)
Android 10 相容性定義說明文件會根據先前版本更新新功能,並變更先前發布的功能需求。
測試
Compatibility Test Suite (CTS)
Android CTS 有個獨立的版本資訊頁面,列出 Android 10 的許多重要變更。
CTS 下載
支援 Android 10 的 CTS 套件可在 CTS 下載頁面取得。已納入的測試原始碼可與開放原始碼樹中的 android-cts-10_r1
標記保持同步。
CTS 墊片 APEX
Android 10 推出名為 CtsShimApex
的套件,必須預先安裝在裝置上,才能為 APEX 管理編寫 CTS 測試。
測試控管工具模式
CTS 測試裝置模式可協助開發人員自動測試裝置或裝置機群。
免安裝應用程式模式
從 Android 10 開始,CTS 會在免安裝應用程式模式下執行,也就是將測試 APK 安裝為免安裝應用程式並執行測試。
除了免安裝應用程式的 CTS 模式,Android 10 還包含免安裝應用程式的 CTS Verifier
CTS Verifier 專業音訊測試
Android 10 新增了 CTS Verifier 測試,用於測試Pro Audio 相容性。
CTS 驗證工具 MIDI 測試
在 Android 10 中,CTS 驗證器 MIDI 測試會使用 USB MIDI 介面、藍牙 MIDI 介面和虛擬 MIDI 裝置路徑測試 MIDI 功能。
解讀 CTS 測試結果
Android 10 更新了解讀 CTS 結果的機制。
供應商測試套件 (VTS)
使用偵錯 RAM 磁碟進行 VTS 測試
在 Android 10 中,用於執行 CTS-on-GSI/VTS 相容性測試的通用系統映像檔 (GSI) 會從 userdebug 變更為 user 版本類型,因為 GSI 已簽署發布。不過,用戶端版本中不支援 adb root
指令,這項指令會將主機的根權限授予測試中的 Android 裝置。這是個問題,因為 VTS 需要 adb root
才能執行。
偵錯 RAM 磁碟已導入,可在裝置解鎖時啟用 adb root
。這樣一來,您就能重複使用相同的使用者建構 system.img
(GSI 或 OEM 的 system.img
),簡化測試流程。
硬體 Composer 驗證
Android 10 新增了 VTS 測試類別,可透過 IComposerClient.hal
中的 readback
介面驗證硬體編寫器。如果供應商未實作 readback
,測試會自動通過。
偵錯
使用不同的類別載入程式載入共用程式庫
在 Android 9 以下版本中,應用程式會在應用程式的類別載入器中載入已連結的 Java 共用程式庫。在 Android 10 中,架構會使用與應用程式類別載入器不同的類別載入器,載入透過 uses-library
或 uses-static-library
連結的 Java 共用程式庫。
一般來說,應用程式不應依賴使用特定的類別載入器,因此這項變更不應影響應用程式行為。不過,如果應用程式依賴使用單一類別載入器,就會導致該行為中斷。此外,系統仍支援同一個套件中類別的套件私有可見度,但不支援共用程式庫中的類別。
裝置製造商在測試搭載 Android 10 的裝置時,可能會遇到應用程式相容性問題。
安全防護功能
如需安全性和隱私權相關功能的完整清單,請參閱「Android 10 安全性和隱私權增強功能」頁面。
臉孔驗證
臉部驗證:使用者只要看著裝置正面,即可解鎖裝置。Android 10 新增了臉部辨識堆疊支援功能,可安全處理相機影格,在支援的硬體上進行臉部辨識時,保護安全性和隱私權。Android 10 也為符合安全性規範的實作方式,提供簡單的方法,讓應用程式整合線上銀行或其他服務等交易。
額外存取權
信任的代理程式是第三方驗證機制 (例如 Smart Lock) 使用的基礎機制,只能在 Android 10 中延長解鎖時間。信任的代理程式無法再解鎖已鎖定的裝置,且最多只能讓裝置維持解鎖狀態四小時。
加密
OEMCrypto
Android 10 使用 OEMCrypto API 15 版。
測試
BoundsSanitizer
Android 10 會在藍牙和編解碼器中部署 BoundsSanitizer (BoundSan)。BoundSan 使用 UBSan 的邊界消毒工具。這項緩解措施會在每個模組層級啟用。這有助於確保 Android 的重要元件安全無虞,因此不應停用。下列編解碼會啟用 BoundSan:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
libaac
libxaac
整數溢位清理
Android 10 會在軟體編碼器中啟用整數溢位清理 (IntSan)。請確認裝置硬體不支援的任何編解碼的播放效能是否令人滿意。在下列編解碼中啟用 IntSan:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
僅執行記憶體
根據預設,AArch64 系統二進位檔的可執行程式碼區段會標示為「僅供執行」(不可讀取),以便針對即時程式碼重複使用攻擊採取強化措施。將資料和程式碼混合在一起的程式碼,以及有意檢查這些區段 (不先將記憶體區段重新對應為可讀) 的程式碼,都無法運作。如果應用程式嘗試讀取記憶體中啟用僅執行記憶體 (XOM) 的系統程式庫的程式碼區段,但未先將該區段標示為可讀,則會影響目標 SDK 為 Android 10 (API 級別 29 以上) 的應用程式。
Scudo
Scudo 是動態使用者模式記憶體配置器,旨在提高對堆積相關安全漏洞的彈性。它提供標準 C 分配和解除分配基本功能,以及 C++ 基本功能。
ShadowCallStack
ShadowCallStack
(SCS) 是一種 LLVM 檢測模式,可在非葉節函式的函式 prolog 中將函式的回傳位址儲存至個別配置的 ShadowCallStack
例項,並從函式 epilog 中的 ShadowCallStack
例項載入回傳位址,藉此防止回傳位址覆寫 (例如堆疊緩衝區溢位)。
音訊
音訊 HAL
Android 10 包含以下音訊 HAL 的新功能。
AudioSource
AudioFormat
AudioChannelMask
新增音訊 HAL 和子系統實作項目的額外需求。
預先處理效果
Android 提供預先處理效果,例如消除回音、自動增益控制和雜訊抑制。Android 10 包含使用 VOICE_COMMUNICATION
擷取影像的新要求。
音訊政策管理工具
Android 10 大幅重構音訊政策管理工具,以提供更大的彈性,支援複雜的車用途。
高解析度音訊
Android 10 針對高解析度音訊提供下列改善項目。
- 浮點支援
- 支援 192 kHz 頻率
- 支援八通道
- 納入時間資訊
並行擷取
Android 10 改善了同時擷取功能的使用者體驗,這項功能需要同時擷取多個音訊。
AudioPlaybackCapture
Android 10 包含名為 AudioPlaybackCapture
的新 API,可讓應用程式複製其他應用程式播放的音訊。這項功能類似於螢幕截圖,但適用於音訊。主要用途是讓串流應用程式擷取遊戲播放的音訊。
擷取 API 不會影響正在擷取音訊的應用程式延遲時間。
MIDI
在 Android 10 中,您可以使用 AMidi
NDK API,輕鬆將使用 MIDI 的專業音訊應用程式移植至 Android 平台。
相機
如要瞭解 Android 10 中相機 API、相機 HAL 和相機模組的變更摘要,請參閱 Android 10 相機更新。
相機架構隱私權改善
Android 10 為相機框架推出隱私權強化功能。為避免在未經使用者同意的情況下,在 CameraCharacteristics
中揭露可能屬於機密資訊的靜態相機資訊,應用程式必須取得 CAMERA
權限,才能使用 getCameraCharacteristics
方法擷取含有隱私權敏感標記的靜態中繼資料。
如要取得需要 CAMERA
權限的相機特性鍵清單,請呼叫 getKeysNeedingPermission
方法。
工作階段重新設定查詢
Android 10 新增了工作階段重新設定查詢功能,可進一步控管內部工作階段參數重新設定邏輯,進而提升效能。
Camera HAL3 緩衝區管理 API
Android 10 推出了可選的 相機 HAL3 緩衝區管理 API,可讓您實作緩衝區管理邏輯,在相機 HAL 實作中取得不同的記憶體和擷取延遲權衡。
相機 HAL 動態實體相機切換功能
Android 10 推出了動態中繼資料標記 ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
,用於指出邏輯攝影機裝置的有效底層實體攝影機。詳情請參閱「多鏡頭支援」。
支援隱藏實體攝影機
在 Android 10 中,相機 HAL 可減少應用程式可直接開啟的實體相機數量。詳情請參閱「多相機支援」。
Camera2 VNDK API
在 Android 10 中,供應商模組可透過兩個新的標準 HIDL 介面 android.frameworks.cameraservice.service@2.0
和 android.frameworks.cameraservice.device@2.0
存取及控制相機裝置。為讓 HIDL 介面更方便使用,Android 10 也推出了供應商可用的程式庫 libcamera2_vendor
。這個程式庫與 Camera NDK 程式庫類似,但有幾項小幅修改。
串流設定
Android 10 新增了可讓相機供應商向相機用戶端宣傳建議的相機串流,以及支援用於查詢串流組合的 API 的功能。
相機串流組合規定
搭載 Android 10 的裝置不再需要支援與實體子攝影機串流的串流組合。不過,搭載相機 HAL 裝置版本 3.5 的 Android 10 裝置必須支援 isStreamCombinationSupported()
,才能讓應用程式查詢是否支援包含實體串流的串流組合。
詳情請參閱「多鏡頭支援」。
HEIF 顯像
Android 10 提供原生相機支援高效率圖片檔案格式 (HEIF) 圖片,可提供比 JPEG 圖片更優異的圖片品質和更小的圖片大小。裝置必須具備 HEIC 或 HEVC 編碼器,才能支援 HEIF 圖片。
黑白相機
Android 10 提供額外支援 Y8 串流格式、黑白和近紅外 (NIR) 濾鏡陣列靜態中繼資料,以及黑白相機的 DngCreator
函式。
連線能力
通話和傳訊
緊急電話號碼和緊急電話撥號
Android 10 提供更完善的緊急電話撥號支援功能。在緊急情況下,支援 IRadio HAL v1.4 的裝置可以使用從 SIM 卡、網路訊號或 Android 資料庫等來源擷取的緊急電話號碼,發起緊急電話。電話號碼可依據緊急救援服務類別 (例如警察、消防隊和救護車) 分類。
群組通話 API
群組通話 API 是 Android 9 中新增的 eMBMS API 擴充功能。新的 API 定義了應用程式加入及在小區播送群組通話中播送內容的標準,並與 eMBMS 中介軟體套件互動。群組通話需要晶片組供應商、中介軟體供應商和行動電信業者的支援,才能正常運作。開發人員說明文件位於 developer.google.com。
遠端 SIM 卡功能
Android 10 推出遠端 SIM 卡功能,可讓 Android 主機裝置上的訊息應用程式透過藍牙等機制,透過手機傳送簡訊。詳情請參閱 getSubscriptionType
方法和 SUBSCRIPTION_TYPE_REMOTE_SIM
常數的參考說明文件。
多個 eSIM
在 Android 10 中,EuiccManager
類別支援配備多個嵌入式 SIM 卡 (eSIM) 或 eUICC 的裝置。
eSIM 卡更新
對於搭載 Android 10 且支援 eSIM 的裝置,必須定義不可移除的 eUICC 插槽 ID 陣列。裝置也必須支援 IRadio HAL 1.4 版和 IRadioConfig HAL 1.2 版。詳情請參閱「實作 eSIM」和「HAL 需求條件」。
5G 非獨立式 (NSA)
Android 10 新增支援 5G 非獨立 (NSA) 技術。5G NSA 是專為 5G 網路提供的解決方案,這類網路由現有的 4G 基礎架構提供支援。在 Android 10 中,裝置連上 5G 網路時,可在狀態列上顯示 5G 圖示。
手機帳戶建議
Android 10 推出電話帳戶建議服務,可在使用者撥打電話時顯示電話帳戶建議。
電信業者
遷移行動網路設定
Android 10 重新設計了行動網路設定 UI 程式碼,並將其從電話堆疊移至設定堆疊。如要支援已遷移的程式碼,請將下列行動網路設定的設定值從 Android 資源變更為 CarrierConfig
資源:
config_world_mode
->
CarrierConfigManager#KEY_WORLD_MODE_ENABLED_BOOL
config_support_tdscdma
->
CarrierConfigManager#KEY_SUPPORT_TDSCDMA_BOOL
config_support_tdscdma_roaming_on_networks
->
CarrierConfigManager#KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY
config_enabled_lte
->
CarrierConfigManager#KEY_LTE_ENABLED_BOOL
裝置 ID
永久裝置 ID (IMEI/MEID、IMSI 和版本序號) 受到特權權限的保護,並且授予裝置和設定檔擁有者應用程式存取權。由於 IMSI 和 SIM 序號是由電信業者提供,因此只有具備電信業者權限的套件才能存取這些 ID。
Wi-Fi
選取網路
Android 會持續評估已連線網路的品質,以及可用網路的品質。Android 10 已更新選取及切換 Wi-Fi 網路的演算法和程序。
Wi-Fi 首選網路卸載掃描
Android 10 在 WifiManager
中推出名為 setDeviceMobilityState()
的可選 API 方法,可在裝置處於靜止狀態時增加偏好網路卸載 (PNO) 掃描間隔,以減少電力消耗。
電信業者 Wi-Fi
在 Android 10 中,搭載電信業者 Wi-Fi 功能的裝置會自動連線至已設定的電信業者 Wi-Fi 網路 (含有公開金鑰憑證的網路)。
Wi-Fi 輕鬆連線
在 Android 10 中,裝置可以使用 Wi-Fi Easy Connect,這項功能會使用 Wi-Fi 聯盟 (WFA) 推出的裝置佈建設定通訊協定 (DPP),為 Wi-Fi 裝置佈建設定。
Wi-Fi 低延遲模式
Android 10 推出了 Wi-Fi 低延遲模式,可設定 Wi-Fi 晶片以縮短延遲時間。
已更新的 DHCP 伺服器
為了建立「IP 伺服器」服務總管,我們將刪除 dnsmasq
。Android 10 將 DHCPv4 伺服器功能用途取代為獨立元件,主要以 Java 編寫,以便更妥善地整合 Java 架構控制平面。這可提升 DHCP 伺服器的安全性和更新能力。詳情請參閱 packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java
。
您無需採取任何行動即可實施這項變更:所有發布及升級至 Android 10 的裝置預設會使用 DhcpServer
。如果您對 DHCP 伺服器進行自訂,可以設定全域設定 tether_enable_legacy_dhcp_server=1
來還原至 Android 9 的行為。新的 DhcpServer
已納入網路元件模組,因此應將 DHCP 伺服器功能的任何自訂項目上傳至上游。
WPA3 和 Wi-Fi Enhanced Open
Android 10 新增了 Wi-Fi Protected Access 3 (WPA3) 和 Wi-Fi Enhanced Open 安全標準的支援,可提供更完善的隱私權和健全性,抵禦已知的攻擊。
Wi-Fi Direct
Wi-Fi Direct (也稱為 Wi-Fi P2P) 可讓支援的裝置在不透過網際網路或行動網路存取的情況下,直接使用 Wi-Fi Direct 通訊協定探索並連線。
MAC 隨機化處理功能強化
從 Android 10 開始,系統預設會為用戶端模式、SoftAp 和 Wi-Fi Direct 啟用 MAC 隨機化。裝置必須提供選項,可在系統 UI 中為每個 SSID 啟用或停用 MAC 隨機產生功能。
Passpoint R2
Android 10 推出了Passpoint R2 功能的支援。Passpoint R2 實作線上註冊 (OSU),這是提供新 Passpoint 設定檔的標準方法。Android 10 支援使用 SOAP-XML 佈建 EAP-TTLS 設定檔。
NFC
確保 NFC 安全
安全 NFC 僅在裝置螢幕解鎖時,才可啟用離線 NFC 卡模擬功能。實作這項功能後,使用者可以選擇啟用安全 NFC 功能,進一步提升安全性。
Android Beam 已淘汰
在 Android 10 中,不再需要 Android Beam,且下列介面和方法已淘汰。
介面:
NfcAdapter.CreateBeamUrisCallback
NfcAdapter.CreateNdefMessageCallback
NfcAdapter.OnNdefPushCompleteCallback
方法:
createBeamUris
invokeBeam
isNdefPushEnabled
setBeamPushUris
setBeamPushUrisCallback
setNdefPushMessage
setNdefPushMessageCallback
setOnNdefPushCompleteCallback
createNdefMessageCallback
onNdefPushCompleteCallback
如要使用 Android Beam,請回報 android.sofware.nfc.beam
功能常數。
圖形
ASurfaceControl
Android 10 新增了 ASurfaceControl
,這是 SurfaceFlinger
接受緩衝區的新方法。
圖形實作
OpenGL ES 圖層
Android 10 為 GLES 推出分層系統。
EGL 1.5
Android 10 實作 EGL 1.5 介面。如要瞭解 EGL 1.5 的新功能,請參閱 Khronos 發布的 EGL 1.5 規範。
Vulkan
Android 10 支援 Vulkan 1.1 圖形。平台也支援 VK_KHR_swapchain
v70,因此 Vulkan 應用程式可以建立由 Swapchain 記憶體支援的 VkImage
。
效能刷新率
Android 10 新增效能重新整理頻率支援功能。這項功能預設為關閉。
互動
Automotive
汽車音訊
在 Android 10 中,Audio HAL 會將內容對應至 AudioAttributes.usage
,以便辨識聲音。Android 支援每個情境一個 AUDIO_DEVICE_OUT_BUS
例項。IAudioControl
HAL 會為 Audio HAL 提供車輛專屬擴充功能。
手勢操作
Android 10 推出了全手勢系統導覽選項。如要瞭解如何準備應用程式以使用這項功能,請參閱 Android 開發人員網站上的「手勢導覽」頁面。
類神經網路
Android 10 推出了 Neural Networks API 和 Neural Networks HAL 的更新。如要查看變更摘要,請參閱「類神經網路」。
適用於 Android 10 的新版和更新版 Neural Networks 說明文件:
感應器
Sensors HAL 2.0
Sensors HAL 2.0 支援使用快速訊息佇列 (FMQ),將感應器事件從 HAL 傳送至 Android 感應器架構。
已關閉感應器
Android 10 提供開發人員設定,可關閉裝置上的所有感應器。這項功能可協助開發人員在這些感應器無法運作時測試應用程式功能,並提供使用者控制裝置中感應器的方法。
如果您的裝置使用 SensorService
、CameraService
和 AudioPolicyService
的預設實作項目,則參考設計不需要額外自訂。如果您有其他感應器,請參閱「自訂」一節,進一步瞭解如何支援這項功能。
媒體
可更新的媒體元件
Android 10 提供可更新的媒體元件,可透過 Google Play 商店基礎架構或合作夥伴提供的無線更新 (OTA) 機制,更新媒體相關的模組化系統元件。
媒體 DRM
Android 10 可改善 MediaDrm
Java 和 NDK API 的實用性和可用性。
解碼
Android 10 支援 AV1 SW 解碼。
權限
Android 10 提供額外的權限設定,以確保資訊透明度和使用者隱私權。
聯絡人供應程式和關聯資訊
自 Android 10 起,由 Contacts Provider 元件管理的聯絡人親和性相關資料,其存取方式與 Android 9 以下版本不同。這些資料存取權變更可改善使用聯絡資訊提供者元件的所有 Android 10 裝置的使用者隱私權。基礎資料庫不再包含聯絡關係親密度資料。因此應用程式無法寫入或讀取該資料夾。
Android 10 的變更預計會對 API 造成重大影響。如果您的應用程式依賴「聯絡人供應器」和「親和性資訊」中提及的已淘汰功能,建議您更新應用程式,以便因應任何變更。此外,如果您使用的是分支版本的聯絡資訊供應器,則必須更新聯絡資訊供應器。
三態位置存取權
Android 10 中的三態位置存取權可讓使用者進一步控管應用程式存取裝置位置資訊的方式。
背景位置資訊存取權提醒
Android 10 提供背景位置資訊存取權提醒功能,可讓使用者瞭解應用程式存取裝置位置資訊的程度,並協助使用者控管這類存取權。
限制隨機位置
應用程式要求裝置位置資訊時,可以等待要求回應,也可以使用活動位置事件監聽器,取得機會位置更新。自 Android 10 起,如要取得最佳化位置資訊更新,開發人員必須指定需要 FusedLocationProviderClient
類別的被動位置資訊更新。
背景應用程式啟動
在 Android 10 中,沒有可見視窗的非特權應用程式無法自動啟動至前景。這項異動會禁止廣告彈出式視窗和惡意接管。你無須採取任何行動即可啟用這項功能。
應用程式沙箱
在 Android 10 中,應用程式對檔案系統的純粹檢視權限有限,無法直接存取 /sdcard/DCIM
等路徑。不過,應用程式仍可保留對其套件專屬路徑的完整原始存取權,這類路徑會透過任何適用的方法 (例如 Context.getExternalFilesDir()
) 傳回。應用程式仍可對其專屬套件路徑擁有完整的原始存取權。
請遵循檔案共用應用程式沙箱規範,提供適當的資料共用精細程度。
限制應用程式剪貼簿存取權
在 Android 10 中,剪貼簿存取權已變更,因此您無法透過呼叫 ClipboardManager.getPrimaryClip
或新增 onPrimaryClipChangedListener
事件監聽器來監控剪貼簿內容。這麼做可提升使用者隱私權,並防止惡意廣告應用程式修改剪貼簿。
在 Android 10 中,只有目前有輸入焦點的應用程式,或目前的鍵盤,才能取得讀取權限。ClipboardManager.onPrimaryClipChanged()
事件監聽器呼叫現在只會針對符合這些限制的應用程式觸發。如果要求的應用程式不是預設輸入法編輯器 (IME),或沒有輸入焦點,則 ClipboardManager.getPrimaryClip
和 ClipboardManager.getPrimaryClipDescription
會傳回 null
。
執行階段權限包括活動辨識
當應用程式在背景存取裝置位置資訊時,使用者現在會看到活動辨識對話方塊。在 Android 10 中,硬性限制的執行階段權限必須正確加入許可清單。
MANAGE_DEVICE_ADMINS 權限
Android 10 將 MANAGE_DEVICE_ADMINS
權限從簽章或特殊權限變更為僅簽章。也就是說,只有平台簽署的應用程式可以將其他應用程式設為裝置管理員。
Sharing API 改善項目
Android 10 提供多項與分享相關的新 Android 平台 API 功能。如果您在實作中修改了 Share Sheet 程式碼,請確保您的實作方式支援這些新功能。如果您尚未修改實作項目中的分享工作表程式碼,則無需採取任何行動即可支援這些新功能。
Android 執行階段 (ART)
已簽署的設定
已簽署的設定功能可讓您在 APK 中嵌入非 SDK 介面限制的設定。這可讓您從黑名單中移除特定非 SDK 介面,讓 AndroidX 能夠安全地使用這些介面。有了這項變更,AndroidX 就能在舊版 Android 上新增支援新功能。
成效
Cgroup 抽象層
Android 10 包含cgroup 抽象層和工作設定檔,開發人員可用來描述套用至執行緒或程序的一組限制。
記憶體不足終止工具 Daemon (lmkd)
Android 10 支援新的 lmkd
模式,可使用核心壓力停滯資訊 (PSI) 監控器偵測記憶體壓力。
電源
平台電源管理
在 Android 10 中,Doze 模式可在隨時運作裝置和電池供電裝置上啟用。
日常省電模式
Android 10 推出了名為「根據日常生活習慣」的新節能模式時間表選項。例行節電模式可讓 OEM 選擇的應用程式向系統提供信號,以便更智慧地安排節電模式。這個選項需要設定,實作方式則為選用。
電源統計資料 HAL
在 Android 10 中,IPowerStats.hal
會取代 IPower.hal
中的電源統計資料收集 API。雖然電源 HAL 仍支援這些 API,但日後這些 API 將專屬於電源統計資料 HAL。
電源統計資料 HAL 包含新的 API,可支援針對支援的裝置,從裝置端電源測量收集資料。我們也更新了現有的電源統計資料收集 API,以提升彈性。電源提示 API 仍保留在電源 HAL 中,不會變更。
熱力緩解
Android 10 中的熱能管理架構會為熱能子系統溫度感應器建立裝置介面,包括 CPU、GPU、電池、皮膚和冷卻裝置。此架構會引進輪詢介面,用於查詢熱力狀態以啟動節流,以及回呼介面,用於在超過閾值時傳送訊息給使用者。
Android 10 會透過 IThermalService
介面使用以下三種新方法提供新資料類型:
getCurrentThermalStatus()
會以整數的形式傳回裝置的目前熱力狀態,除非裝置正在進行節流。addThermalStatusListener()
會新增監聽器。removeThermalStatusListener()
移除先前新增的監聽器。
應用程式會在 PowerManager
類別中新增及移除事件監聽器,並存取溫度狀態。只有可信任的系統服務 (例如 Android API 或裝置製造商 API) 才能存取相關因果事件的相關資訊。裝置製造商或 SoC 製造商必須實作 thermal HAL 2.0
,才能啟用新的熱管理架構的完整功能。
如需熱管理實作範例,請參閱參考導入方式。
更新
APEX 檔案格式
Android Pony EXpress (APEX) 是模組化系統元件安裝流程中使用的全新容器格式。
動態分割區
動態分區會為 Android 引進使用者空間分區系統,讓您在 OTA 更新期間建立、調整大小或刪除分區。裝置製造商不必擔心分區的個別大小,例如 system
、vendor
和 product
。而是分配一個大型 super
分區,並在其中動態調整子分區的大小。
動態系統更新
動態系統更新 (DSU) 可讓您建立 Android 系統映像檔,讓使用者從網路下載並試用,而不會損壞目前的系統映像檔。
多使用者備份與還原
Android 10 支援裝置上所有使用者的備份與還原功能。先前,備份與還原功能僅適用於系統使用者。系統預設會關閉非系統使用者的備份和還原功能,因為這項功能只支援部分設定、桌布和系統元件的備份和還原。
重疊
使用 userdebug
或 eng
版本的使用者,預期能夠以讀寫模式有效重新掛載系統分區,然後新增或修改任意數量的檔案,而無需重新刷新系統映像檔。您可以使用 Overlayfs
,這會自動為可寫檔案系統設定備份儲存空間做為上層參照,並掛載在下層。這些動作會在 adb disable-verity
和 adb remount
要求中發生。詳情請參閱 AOSP 中的 Overlayfs README。
復原模式中的共用資料庫支援
在 Android 10 中,共用程式庫可在復原分割區中使用,因此不必將所有復原模式可執行檔設為靜態。共用程式庫位於分割區中的 /system/lib
(64 位元裝置為 /system/lib64
) 目錄下方。
如要在復原分割區中新增共用程式庫,請將 recovery_available: true
或 recovery: true
新增至共用程式庫的 Android.bp
。前者會將程式庫安裝到系統和復原分區,後者則只會將程式庫安裝到復原分區。
共用程式庫支援功能無法使用 Android 的 make 建構系統建構。如要將復原模式的現有靜態可執行檔轉換為動態可執行檔,請移除 Android.mk
或 static_executable: true
中的 LOCAL_FORCE_STATIC_EXECUTABLE := true
(位於 Android.bp
)。
使用者資料查核點 (UDC)
Android 10 推出了使用者資料檢查點 (UDC) 功能,可在 Android 無線 (OTA) 更新失敗時,讓 Android 回復至先前的狀態。