Android 10 版本資訊

本頁面會摘要說明 Android 10 版本的主要功能,並提供其他資訊的連結。這些功能摘要會根據功能在本網站上的文件位置進行整理。

建構

java_sdk_library

Android 10 推出新的建構規則 java_sdk_library,可修正共用 Java 程式庫的相容性問題。裝置製造商可將這項機制用於自己的共用 Java 程式庫,以維持 API 的回溯相容性。

建築

模組化系統元件

Android 10 將部分 Android 系統元件模組化,因此這些元件可以在正常的 Android 發布週期外更新。部分模組包括:

硬體抽象層 (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 要求裝置在第一階段 ramdisk 中使用 fstab 檔案,為早期掛接的分割區指定 fstab 項目。

HIDL

卸載 BroadcastQueue

Android 10 在現有的「背景」和「前景」佇列中,新增了「卸載」BroadcastQueue。卸載佇列的優先順序和逾時行為與背景佇列相同。為避免封鎖背景佇列 (可能發生更多有趣或使用者可見的廣播),卸載佇列會處理 BOOT_COMPLETED 廣播,許多應用程式都會監聽這項廣播,且可能需要很長時間才能完成。卸載佇列目前只會處理 BOOT_COMPLETED 廣播,但可能會處理其他長時間廣播。

SystemSuspend 服務

Android 10 會以 SystemSuspend HIDL 服務,取代 libsuspend 中負責啟動系統暫停的執行緒。這個實作方式提供的功能與舊版相同,同時也運用了 Android HIDL 基礎架構的優點。

HIDL 中的 safe_union

Android 10 在 HIDL 中導入了 safe_union,這是明確標記的聯集型別。

設定

ConfigStore HAL

Android 10 淘汰了 ConfigStore HAL,並以系統屬性取代,因為前者會耗用大量記憶體,且難以使用。

設定檔結構定義 API

Android 平台包含大量 XML 檔案,用於儲存設定資料。許多 XML 檔案位於 vendor 分區,但會在 system 分區中讀取。在這種情況下,XML 檔案的結構定義會做為兩個分割區之間的介面,因此必須明確指定結構定義,且必須以回溯相容的方式演進。在 Android 10 之前,平台並未提供機制,要求指定及使用 XML 結構定義,或防止結構定義發生不相容的變更。Android 10 提供這項機制,稱為「設定檔結構定義 API」

以 API 形式提供的系統屬性

跨分割區存取的系統屬性會架構化為 sysprop 說明檔,而存取屬性的 API 則會產生為 C++ 的具體函式和 Java 的類別。

供應商介面 (VINTF) 物件

VINTF

Android 10 中的 VINTF 變更包括:

系統啟動載入程式

RAM 磁碟

在 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 Blob) 進行疊加的架構 (DTBO)。

穩定版 AIDL

Android 10 新增了對穩定版 Android 介面定義語言 (AIDL) 的支援,可透過 AIDL 介面追蹤應用程式設計介面 (API)/應用程式二進位介面 (ABI)。

將 Fastboot 移至使用者空間

Android 10 將 fastboot 實作從開機載入程式移至使用者空間,新增可調整大小的分割區支援功能。

螢幕

高動態範圍影片播放

Android 10 支援HDR10、VP9 和 HDR10+ 播放

文字分類

文字分類功能會運用機器學習技術,協助開發人員分類文字。Android 10 推出 TextClassifier API 的兩種方法:suggestConversationActionsdetectLanguagesuggestConversationActions 方法會根據指定對話產生建議回覆和動作,detectLanguage 方法則會偵測文字的語言。

支援 Zawgyi 字型算繪

Zawgyi 是緬甸最受歡迎的字型。Android 9 以下版本不支援算繪 Zawgyi,因為該字型不符合 Unicode 標準。Android 10 內建 Unicode 字型,可同時顯示 Unicode 緬甸文和 Zawgyi,解決這個問題。如果裝置搭載 Android 10,就不需要進行任何導入作業,即可支援在裝置上算繪 Zawgyi 字型。如果裝置採用自訂實作方式來支援 Zawgyi,您可以:

隱藏應用程式圖示的限制

Android 10 限制應用程式隱藏啟動器圖示的功能。如果應用程式未啟用啟動器活動,系統會在啟動器中顯示合成活動;這個合成活動代表系統設定中的應用程式詳細資料頁面。

如要進一步瞭解顯示應用程式圖示所用的邏輯,包括不顯示應用程式圖示的應用程式類型,請參閱 API 參考資料中的 getActivityList() 說明文件。

設定

為提升無障礙功能,Android 10 推出可供使用者自訂的逾時設定。API 和設定變更會隨 Android 10 一併推出。如果自訂「設定」,請確認支援這項功能。如果裝置上的 UI 元素會逾時,請對這些元素使用逾時 API。詳情請參閱 Android 開發人員無障礙指南

相容性

Android 相容性定義說明文件 (CDD)

Android 10 相容性定義文件先前版本為基礎,更新了新功能,並變更先前發布功能的需求。

測試

Compatibility Test Suite (CTS)

Android CTS 有專屬的版本資訊頁面,列出 Android 10 的許多重要變更。

CTS 下載項目

支援 Android 10 的 CTS 套件已在 CTS 下載頁面上架。內含測試的原始碼可與開放原始碼樹中的 android-cts-10_r1 標記保持同步。

CTS shim APEX

Android 10 推出名為 CtsShimApex 的套件,必須預先安裝在裝置上,才能編寫 APEX 管理的 CTS 測試。

測試控管工具模式

CTS 測試架構模式可協助開發人員自動測試裝置或裝置群組。

免安裝應用程式模式

從 Android 10 開始,CTS 會在免安裝應用程式模式下執行,也就是將測試 APK 安裝為免安裝應用程式,然後執行測試。

除了免安裝應用程式適用的 CTS 模式,Android 10 還包含免安裝應用程式適用的 CTS 驗證器

CTS 驗證器專業音訊測試

Android 10 新增 CTS 驗證器測試,可驗證專業音訊相容性

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 變更為使用者建構類型,因為 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-libraryuses-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 插樁模式,可將函式的回傳位址儲存至非葉函式函式序言中另外分配的 ShadowCallStack 例項,並從函式結尾的 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 中揭露可能含有私密資訊的靜態攝影機資訊,應用程式必須使用 getCameraCharacteristics 方法,取得 CAMERA 權限,才能使用隱私權敏感標記擷取靜態中繼資料。

如要取得需要 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.0android.frameworks.cameraservice.device@2.0) 存取及控制攝影機裝置。為方便使用 HIDL 介面,Android 10 也推出了供應商可用的程式庫 libcamera2_vendor。這個程式庫與 Camera NDK 程式庫類似,但有幾處小幅修改。

串流設定

Android 10 新增的功能可讓相機供應商向相機用戶端宣傳建議的相機串流,並支援查詢串流組合的 API

攝影機串流組合規定

搭載 Android 10 的裝置不再需要支援與實體子攝影機串流的串流組合。不過,如果裝置搭載 Android 10,且相機 HAL 裝置版本為 3.5,則必須支援 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 v1.4 和 IRadioConfig HAL v1.2。詳情請參閱「實作 eSIM」和「HAL 需求條件」。

5G 非獨立 (NSA)

Android 10 新增了對5G 非獨立 (NSA) 的支援。5G NSA 解決方案適用於 5G 網路,這類網路是由現有的 4G 基礎架構支援。在 Android 10 上,裝置連上 5G 網路時,狀態列會顯示 5G 圖示。

手機帳戶建議

Android 10 推出電話帳戶建議服務,可在使用者撥打電話時顯示電話帳戶建議。

電信業者

遷移行動網路設定

Android 10 重新架構了行動網路設定 UI 程式碼,並將其從 Telephony 堆疊移至 Settings 堆疊。為支援遷移的程式碼,請將下列行動網路設定的設定值從 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 和版本序號) 受到特殊權限保護,裝置和設定檔擁有者應用程式也能存取這些 ID。由於 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,且已淘汰下列介面和方法。

介面:

方法:

如要使用 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 Releases EGL 1.5 Specification」。

Vulkan

Android 10 支援 Vulkan 1.1 圖形。 平台也支援 VK_KHR_swapchain v70,因此 Vulkan 應用程式可以建立由交換鏈記憶體支援的 VkImage

效能重新整理頻率

Android 10 新增支援效能重新整理頻率。 這項功能預設為關閉。

互動

Automotive

車輛音訊

在 Android 10 中,音訊 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 的類神經網路說明文件已更新:

感應器

感應器 HAL 2.0

感應器 HAL 2.0 支援使用快速訊息佇列 (FMQ),將感應器事件從 HAL 傳送至 Android 感應器架構。

已關閉感應器

Android 10 包含開發人員設定,可關閉裝置上的所有感應器。這項功能可協助開發人員在感應器無法運作的情況下測試應用程式功能,也能讓使用者控制裝置中的感應器。

如果裝置使用 SensorServiceCameraServiceAudioPolicyService 的預設實作方式,則無須對參考設計進行額外自訂。如有其他感應器,請參閱「自訂」一文,進一步瞭解如何支援這項功能。

媒體

可更新的媒體元件

Android 10 提供可更新的媒體元件,可透過 Google Play 商店基礎架構或合作夥伴提供的無線 (OTA) 機制,更新媒體相關的模組化系統元件

媒體 DRM

Android 10 提升了 MediaDrm Java 和 NDK API 的實用性和可用性。

解碼

Android 10 支援 AV1 SW 解碼。

權限

Android 10 提供額外的權限設定,可提升透明度和使用者隱私權。

聯絡人供應商和親和力資訊

自 Android 10 起,系統會以不同於 Android 9 以下版本的方式,存取由聯絡人供應器元件管理的聯絡人親和性相關資料。這些資料存取權異動可提升所有使用「聯絡人供應器」元件的 Android 10 裝置使用者隱私權。基礎資料庫不再包含聯絡人親和度資料。因此應用程式無法寫入或讀取該位置的內容。

Android 10 的變更預計會對 API 造成重大影響。如果您的應用程式使用「聯絡人供應器和親和資訊」中提及的已淘汰功能,建議您更新應用程式,以因應任何變更。此外,如果您使用 Contacts Provider 的衍生版本,則必須更新 Contacts Provider。

三態位置存取權

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.getPrimaryClipClipboardManager.getPrimaryClipDescription 會傳回 null

執行階段權限包括活動辨識

現在應用程式在背景存取裝置位置資訊時,使用者會看到活動辨識對話方塊。在 Android 10 中,必須正確將硬性限制的執行階段權限加入許可清單。

MANAGE_DEVICE_ADMINS 權限

Android 10 將 MANAGE_DEVICE_ADMINS 權限從簽章或特殊權限變更為僅限簽章。也就是說,只有平台簽署的應用程式才能將其他應用程式設為裝置管理員。

Sharing API 改良

Android 10 提供多項與分享相關的全新 Android 平台 API 功能。如果您已修改實作中的分享功能表程式碼,請確保實作支援這些新功能。如果您未修改實作中的「分享功能表」程式碼,就不需要採取任何行動來支援這些新功能。

Android 執行階段 (ART)

已簽署的設定

簽署設定功能可讓您在 APK 中嵌入非 SDK 介面限制的設定。這樣一來,您就能從黑名單中移除特定非 SDK 介面,讓 AndroidX 安全地使用這些介面。這項變更可讓 AndroidX 在舊版 Android 上新增對新功能的支持。

效能

Cgroup 抽象層

Android 10 包含 cgroup 抽象層和工作設定檔,開發人員可用於描述要套用至執行緒或程序的限制。

記憶體不足終止工具 Daemon (lmkd)

Android 10 支援新的lmkd模式,可使用核心壓力暫停資訊 (PSI) 監控器偵測記憶體壓力。

電源

平台電源管理

在 Android 10 中,微光模式可啟用於螢幕常亮裝置和電池供電裝置。

日常省電模式

Android 10 推出新的省電模式排程選項,稱為「根據日常安排」例行節省電力功能可讓 OEM 選擇的應用程式向系統提供信號,以便更智慧地安排節省電力功能。這個選項需要設定,且可選擇是否實作。

電源統計資料 HAL

在 Android 10 中,IPowerStats.hal 會取代 IPower.hal 中的電量統計資料收集 API。雖然電源 HAL 仍支援這些 API,但日後會專門遷移至電源統計 HAL。

電源統計 HAL 包含新的 API,可支援從裝置端電源測量作業收集資料 (適用於支援的裝置)。現有的電力統計資料收集 API 也已更新,可提供更高的彈性。電力提示 API 仍位於電力 HAL 中,不會變更。

散熱緩解措施

Android 10 的熱能架構會將裝置介面抽象化,用於熱能子系統溫度感應器,包括 CPU、GPU、電池、皮膚和冷卻裝置。這個架構會導入輪詢介面,用於查詢溫度狀態以啟動節流,並導入回呼介面,用於在超過閾值時傳送訊息給使用者。

Android 10 會透過 IThermalService 介面,使用下列三種新方法提供新資料型別:

應用程式會在 PowerManager 類別中新增及移除監聽器,並存取溫度狀態。只有 Android API 或裝置製造商 API 等受信任的系統服務,才能存取相關因果事件的資訊。裝置製造商或 SoC 供應商必須實作 thermal HAL 2.0,才能啟用新版熱管理架構的完整功能。

如需熱能調控實作範例,請參閱參考實作

更新

APEX 檔案格式

Android Pony EXpress (APEX) 是新的容器格式,用於模組化系統元件的安裝流程。

動態分割區

動態分區為 Android 導入使用者空間分區系統,可讓分區在 OTA 更新期間建立、調整大小或毀損。裝置製造商不必擔心個別分區的大小,例如 systemvendorproduct。而是分配一個大型 super 分區,並在其中動態調整子分區的大小。

動態系統更新

動態系統更新 (DSU) 可讓您建立 Android 系統映像檔,使用者可以從網際網路下載並試用,不必擔心目前的系統映像檔損毀。

多使用者備份與還原

Android 10 支援裝置上所有使用者的備份與還原功能。先前備份與還原功能僅適用於系統使用者。由於非系統使用者備份及還原功能僅涵蓋部分設定、桌布和系統元件,因此預設為關閉。

Overlayfs

使用 userdebugeng 建構版本的開發人員,應能有效率地將系統分割區重新掛接為讀寫,然後新增或修改任意數量的檔案,而不必重新刷寫系統映像檔。您可以使用 Overlayfs,自動為可寫入的檔案系統設定備份儲存空間做為上層參照,並掛接至下層。這些動作會發生在 adb disable-verityadb remount 要求中。詳情請參閱 AOSP 中的 Overlayfs README

在復原模式中支援共用程式庫

在 Android 10 中,共用程式庫位於復原分割區,因此所有復原模式可執行檔都不必是靜態檔案。共用程式庫位於分割區的 /system/lib (或 64 位元裝置的 /system/lib64) 目錄下。

如要在復原磁碟分割區中新增共用程式庫,請將 recovery_available: truerecovery: true 新增至共用程式庫的 Android.bp。前者會將程式庫安裝至系統和復原磁碟分割區,後者則只會安裝至復原磁碟分割區。

Android 的 make 建構系統無法建構共用程式庫支援功能。 如要將現有的復原模式靜態可執行檔轉換為動態可執行檔,請移除 Android.mkstatic_executable: true (位於 Android.bp) 中的 LOCAL_FORCE_STATIC_EXECUTABLE := true

使用者資料查核點 (UDC)

Android 10 推出了使用者資料檢查點 (UDC) 功能,可讓 Android 在無線 (OTA) 更新失敗時,還原至先前的狀態。