Android 10 發行說明

本頁面總結了 Android 10 版本中的主要功能,並提供了其他資訊的連結。這些功能摘要是根據該功能在該網站上的文件位置進行組織的。

建造

java_sdk_函式庫

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 活鎖守護程式

Android 10 包含Android Live-Lock Daemon (llkd) ,旨在捕捉和緩解核心死鎖。

ARM64 上的 vDSO32

Android 10 支援在 64 位元核心上使用 vDSO32 ,這可將電池壽命延長 0.4%,並提供其他效能改進。

早期安裝分割區的 fstab 條目

Android 10 要求裝置使用第一階段 ramdisk 中的fstab檔案為早期安裝的分割區指定fstab條目。

HIDL

卸載廣播隊列

Android 10 包含一個新的卸載BroadcastQueue到現有的後台前台佇列。卸載佇列與後台佇列具有相同的優先權和逾時行為。為了防止阻塞後台佇列(其中可能會發生更有趣或使用者可見的廣播),卸載佇列處理BOOT_COMPLETED廣播,許多應用程式都會偵聽該廣播,並且可能需要很長時間才能完成。卸載佇列目前僅處理BOOT_COMPLETED廣播,但可以處理其他長廣播。

系統暫停服務

Android 10 使用SystemSuspend HIDL 服務取代了libsuspend中負責啟動系統掛起的執行緒。此實作提供與先前版本相同的功能,同時利用 Android HIDL 基礎架構的優勢。

HIDL 中的 safe_union

Android 10 在 HIDL 中引入了safe_union ,這是一種明確標記的聯合類型。

配置

配置儲存 HAL

由於記憶體消耗高、使用困難,Android 10 棄用了ConfigStore HAL ,並用系統屬性取代了 HAL。

設定檔架構 API

Android 平台包含大量用於儲存設定資料的 XML 檔案。許多 XML 檔案位於vendor分割區中,但它們是在system分割區中讀取的。在這種情況下,XML 檔案的模式充當跨兩個分區的接口,因此必須明確指定該模式,並且必須以向後相容的方式發展。在 Android 10 之前,平台不提供要求指定和使用 XML 架構或防止架構中發生不相容變更的機制。 Android 10 提供了這種機制,稱為Config File Schema API

作為 API 的系統屬性

跨分區存取的系統屬性被模式化到sysprop描述檔中,並且存取屬性的 API 會產生為 C++ 的特定函數和 Java 的類別。

供應商介面 (VINTF) 對象

溫特夫

Android 10 中 VINTF 的變更包括:

引導程式

記憶體磁碟

在 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 實作從引導程式重新定位到使用者空間來新增可調整大小分割區的支援。

展示

HDR影片播放

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

文字分類

文字分類使用機器學習技術來幫助開發人員對文字進行分類。 Android 10 向 TextClassifier API 引入了兩種方法: suggestConversationActionsdetectLanguagesuggestConversationActions方法根據給定對話產生建議的回復和操作,而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 限制應用程式隱藏其啟動器圖示的能力。如果應用程式沒有啟用啟動器 Activity,系統會在啟動器中顯示合成的 Activity ;此合成活動代表系統設定中應用程式的詳細資訊頁面。

有關用於顯示應用程式圖示的邏輯的詳細資訊(包括不顯示應用程式圖示的應用程式類型),請參閱 API 參考中的getActivityList()文件。

設定

為了提高可訪問性,Android 10 包含用戶可自訂的逾時設定。 API 和設定變更隨 Android 10 一起提供。如果您自訂設置,請確保支援此功能。如果您的裝置上有逾時的 UI 元素,請在這些元素上使用逾時 API 。有關更多信息,請參閱Android 開發人員輔助功能指南

相容性

Android 相容性定義文件 (CDD)

Android 10 相容性定義文件迭代了先前的版本,更新了新功能並更改了先前發布的功能的要求。

測試

相容性測試套件 (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 以Instant Apps 模式運行,這意味著將測試 APK 作為 Instant App 安裝並執行測試。

除了適用於即時應用程式的 CTS 模式外,Android 10 還包含適用於即時應用程式的 CTS 驗證程序

CTS Verifier 專業音訊測試

Android 10 增加了針對Pro Audio 合規性的CTS Verifier 測試。

CTS Verifier MIDI 測試

在 Android 10 中, CTS Verifier MIDI 測試使用 USB MIDI 介面、藍牙 MIDI 介面和虛擬 MIDI 裝置路徑來測試 MIDI 功能。

CTS測試解讀

Android 10 更新了解釋 CTS 結果的機制。

供應商測試套件 (VTS)

使用調試 ramdisk 進行 VTS 測試

在 Android 10 中,用於執行 CTS-on-GSI/VTS 合規性測試的通用系統映像 (GSI) 從 userdebug 變更為使用者建置類型,因為 GSI 已發布簽署。但是,向被測 Android 裝置授予主機 root 權限的adb root指令在使用者版本中不可用。這是一個問題,因為 VTS 需要adb root才能運作。

如果裝置已解鎖,則引入調試 ramdisk以使adb root成為可能。這透過重複使用相同的使用者建立system.img (GSI 或 OEM 的system.img )來簡化測試流程。

Hardware Composer 驗證

Android 10 透過IComposerClient.hal中的readback介面新增了一個新的 VTS 測試類,用於 Hardware Composer 驗證。如果供應商不實現readback ,測試會自動通過。

偵錯

使用不同的類別載入器載入共享庫

在 Android 9 及更低版本中,應用程式在應用程式的類別載入器中載入其連結的 Java 共享庫。在Android 10中,框架使用與應用程式的類別載入器不同的類別載入器來載入透過uses-libraryuses-static-library連結的Java共用程式庫。

一般來說,應用程式不應依賴使用特定的類別載入器,因此此變更不應破壞應用程式的行為。但是,如果應用程式依賴使用單一類別載入器,則該行為就會被破壞。此外,仍然支援同一包中類別的包私有可見性,但在共享庫中不受支援。

裝置製造商在測試運行 Android 10 的裝置時可能會遇到應用相容性問題。

安全特性

有關僅與安全性和隱私相關的增強功能的更完整列表,請參閱Android 10 安全性和隱私增強功能頁面。

臉部認證

人臉驗證允許用戶只需查看設備正面即可解鎖設備。 Android 10 增加了對新的人臉身份驗證堆疊的支持,該堆疊可以安全地處理相機幀,從而在受支援的硬體上進行人臉身份驗證期間保護安全性和隱私。 Android 10 也為安全相容實施提供了一種簡單的方法,以實現線上銀行或其他服務等交易的應用程式整合。

擴展訪問

信任代理是 Smart Lock 等三級身份驗證機制使用的底層機制,在 Android 10 中只能延長解鎖時間。信任代理無法再解鎖鎖定的設備,並且只能將設備保持解鎖狀態最多四個小時。

加密

OEM加密

Android 10 使用 OEMCrypto API 版本 15。

測試

邊界消毒劑

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 系統二進位檔案的可執行程式碼部分被標記為僅執行(不可讀取),作為即時程式碼重複使用攻擊的強化緩解措施。將資料和程式碼混合在一起的程式碼以及有目的地檢查這些部分的程式碼(無需首先將記憶體段重新映射為可讀)不再起作用。如果目標 SDK 為 Android 10(API 等級 29 或更高)的應用程式嘗試讀取記憶體中啟用只執行記憶體 (XOM) 的系統函式庫的程式碼部分,而不先將該部分標記為可讀,則會受到影響。

斯庫多

Scudo是一種動態使用者模式記憶體分配器,旨在更好地抵禦堆疊相關漏洞。它提供標準 C 分配和釋放原語以及 C++ 原語。

影子呼叫堆疊

ShadowCallStack (SCS)是一種LLVM 偵測模式,透過將函數的回傳位址儲存到非葉函數的函數序言中單獨指派的ShadowCallStack實例,並從ShadowCallStack實例載入傳回位址來防止傳回位址覆蓋(如堆疊緩衝區溢出)。函數結語。

聲音的

音訊哈爾

Android 10 包含以下音訊 HAL的新功能。

  • AudioSource
  • AudioFormat
  • AudioChannelMask

新增了針對音訊 HAL 和子系統實現的附加要求。

預處理效果

Android提供了預處理效果,例如聲學迴聲消除、自動增益控制和噪音抑制。 Android 10 包含使用VOICE_COMMUNICATION進行擷取的新要求。

音訊策略管理器

Android 10 對音訊策略管理器進行了重大重構,以提供更大的靈活性來支援複雜的汽車用例。

高解析度音訊

Android 10 對高解析度音訊進行了以下改進。

  • 浮動支撐
  • 192KHz頻率支持
  • 八通道支援
  • 包含計時訊息

並發捕獲

Android 10 改進了同時擷取使用者體驗,該體驗需要同時進行多個活動音訊擷取。

音訊回放捕捉

Android 10 包含一個名為AudioPlaybackCapture的新 API,它使應用程式能夠複製其他應用程式正在播放的音訊。此功能類似於螢幕捕獲,但用於音訊。主要用例是使串流應用程式能夠捕獲遊戲正在播放的音訊。

捕獲 API 不會影響正在捕獲音訊的應用程式的延遲。

MIDI

Android 10 可以更輕鬆地將使用 MIDI 的專業音訊應用程式透過AMidi NDK API移植到 Android 平台。

相機

有關 Android 10 中引入的相機 API、相機 HAL 和相機模組的變更摘要,請參閱Android 10 相機更新

相機框架隱私改進

Android 10 為相機框架引入了隱私增強功能。為了避免在未經使用者同意的情況下暴露CameraCharacteristics中潛在敏感的靜態相機訊息,應用程式必須獲得CAMERA權限,才能使用getCameraCharacteristics方法檢索帶有隱私敏感標籤的靜態元資料。

若要取得需要CAMERA權限的相機特徵鍵列表,請呼叫getKeysNeedingPermission方法。

會話重新配置查詢

Android 10 新增了會話重新配置查詢功能,可透過對內部會話參數重新配置邏輯的更多控制來提高效能。

相機 HAL3 緩衝區管理 API

Android 10 引入了可選的相機 HAL3 緩衝區管理 API ,可讓您實現緩衝區管理邏輯,以在相機 HAL 實作中實現不同的記憶體和擷取延遲權衡。

Camera 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 主機裝置上的訊息應用程式使用藍牙等機制透過手機發送 SMS 訊息。有關詳細信息,請參閱getSubscriptionType方法和SUBSCRIPTION_TYPE_REMOTE_SIM常數的參考文件。

多個 eSIM 卡

在 Android 10 中, EuiccManager類別支援具有多個嵌入式 SIM (eSIM)或 eUICC 的裝置。

eSIM 更新

對於運行支援 eSIM 的 Android 10 的設備,必須定義不可移動的 eUICC 插槽 ID 數組。設備還必須支援 IRadio HAL v1.4 和 IRadioConfig HAL v1.2。有關更多信息,請參閱實施 eSIMHAL 要求

5G 非獨立組網 (NSA)

Android 10 增加了對5G 非獨立組網 (NSA)的支援。 5G NSA 是一種由現有 4G 基礎設施支援的 5G 網路解決方案。在 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

裝置識別符

持久性設備識別碼(IMEI/MEID、IMSI 和建置序列)由特權權限保護,並且還向裝置和設定檔擁有者應用程式授予存取權限。由於 IMSI 和 SIM 序號是營運商提供的,因此具有運營商權限的包裹可以存取這些識別碼。

無線上網

網路選擇

Android 不斷評估所連接網路的品質並評估可用網路的品質。 Android 10 更新了用於選擇和切換 Wi-Fi 網路的演算法和程式。

Wi-Fi 首選網路卸載掃描

Android 10 在WifiManager中引入了一個名為setDeviceMobilityState()的選用 API 方法,該方法可以在裝置靜止時增加首選網路卸載 (PNO)掃描之間的間隔,以​​減少電量使用。

營運商無線網路

在 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 增強開放

Android 10 增加了對Wi-Fi 保護存取 3 (WPA3) 和 Wi-Fi 增強開放安全標準的支持,以提供更好的隱私性和針對已知攻擊的穩健性。

無線直連

Wi-Fi Direct也稱為 Wi-Fi P2P,可讓支援設備使用 Wi-Fi Direct 協定直接發現並相互連接,而無需存取互聯網或蜂窩網路。

MAC 隨機化增強

從 Android 10 開始,用戶端模式、SoftAp 和 Wi-Fi Direct 預設啟用MAC 隨機化。裝置必須提供一個選項來啟用或停用系統 UI 中每個 SSID 的 MAC 隨機化。

通行點R2

Android 10 引入了Passpoint R2 功能的支援。 Passpoint R2 實現了線上註冊 (OSU),這是一種配置新 Passpoint 設定檔的標準方法。 Android 10 支援使用 SOAP-XML 設定 EAP-TTLS 設定檔。

近場通訊

安全 NFC

安全 NFC允許僅在裝置螢幕解鎖時啟用脫離主機 NFC 卡模擬。實作此功能使用戶可以選擇啟用安全 NFC 以提高安全性。

Android Beam 已棄用

在 Android 10 中,不再需要 Android Beam,而以下介面和方法已被棄用。

接口:

方法:

若要使用 Android Beam,請回報android.sofware.nfc.beam功能常數。

圖形

表面控制

Android 10 新增了ASurfaceControl ,這是SurfaceFlinger接受緩衝區的新方式。

圖形實現

OpenGL ES 層

Android 10 引進了 GLES分層系統

東GL 1.5

Android 10 實作了EGL 1.5 介面。有關 EGL 1.5 中新功能的信息,請查看Khronos 發布 EGL 1.5 規格

伏爾甘

Android 10 包含對 Vulkan 1.1 圖形的支援。該平台還支援VK_KHR_swapchain v70,因此 Vulkan 應用程式能夠創建由交換鏈記憶體支援的VkImage

效能更新率

Android 10 增加了對效能更新率的支援。此功能預設為關閉。

交互作用

汽車

汽車音響

在 Android 10 中,音訊 HAL 上下文會對應到AudioAttributes.usage來辨識聲音。 Android 支援每個上下文一個AUDIO_DEVICE_OUT_BUS實例。 IAudioControl HAL為音訊 HAL 提供車輛特定的擴充

手勢導航

Android 10 引入了完全手勢系統導航的選項。有關如何準備應用程式以使用此功能的信息,請參閱 Android 開發人員網站上的手勢導航頁面。

神經網路

Android 10 引入了神經網路 API 和神經網路 HAL 的更新。有關更改的摘要,請參閱神經網路

Android 10 的全新且更新的神經網路文件:

感應器

感測器 HAL 2.0

感測器 HAL 2.0支援使用快速訊息佇列 (FMQ)將感測器事件從 HAL 發送到 Android 感測器框架。

感測器關閉

Android 10 包含一個開發人員設置,用於關閉裝置上的所有感測器。此功能可協助開發人員在這些感測器不可用的情況下測試應用程式的功能,並為使用者提供控制設備中感測器的方法。

如果您的裝置使用SensorServiceCameraServiceAudioPolicyService的預設實現,則無需對參考設計進行額外的自訂。如果您有其他感測器,請參閱自訂以了解有關支援此功能的更多詳細資訊。

媒體

可更新的媒體元件

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

媒體數位版權管理

Android 10 改進了MediaDrm Java 和 NDK API 的實用性和可用性。

解碼

Android 10 支援 AV1 SW 解碼。

權限

Android 10 提供了額外的權限配置以實現透明度和使用者隱私。

聯繫提供者和關聯訊息

從 Android 10 開始,由聯絡人提供程式元件管理的聯絡人關聯相關資料的存取方式與 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.getPrimaryClipClipboardManager.getPrimaryClipDescription將傳回null

運行時權限包括活動識別

現在,當應用程式在背景存取裝置位置時,使用者會看到活動識別對話方塊。硬限制的執行時間權限必須在 Android 10 中正確列入白名單。

MANAGE_DEVICE_ADMINS 權限

Android 10 將MANAGE_DEVICE_ADMINS權限從簽署或特權變更為僅簽署。這意味著只有平台簽署的應用程式才能將其他應用程式設定為裝置管理員。

分享 API 改進

Android 10 提供了許多與共享相關的新 Android 平台 API 功能。如果您在實作中修改了共用表程式碼,請確保您的實作支援這些新功能。如果您沒有在實作中修改共享表程式碼,則無需執行任何操作即可支援這些新功能。

Android 運行時 (ART)

簽名配置

簽章配置功能允許在 APK 中嵌入非 SDK 介面限制的配置。這樣可以從黑名單中刪除特定的非 SDK 接口,以便 AndroidX 可以安全地使用它們。透過此更改,AndroidX 可以在舊版 Android 版本上新增對新功能的支援。

表現

Cgroup抽象層

Android 10 包括cgroup 抽象層和任務設定文件,開發人員可以使用它們來描述應用於執行緒或進程的一組限制。

低記憶體殺手守護程式 (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系統映像,使用者可以從Internet下載並嘗試,而不會損壞目前系統映像的風險。

多源備份和還原

Android 10支援裝置上所有使用者的備份和還原功能。以前,備份和還原僅適用於系統使用者。預設關閉了非系統用戶的備份和還原,因為它僅針對設置,牆紙和系統組件具有部分覆蓋範圍。

覆蓋

使用userdebugeng建構的使用者期望能夠有效地重新安裝系統分區為read-Write,然後在不重新刷新系統映像的情況下新增或修改任何數量的檔案。您可以使用Overlayfs ,該疊加FS會自動為可寫檔案系統設定備份儲存作為上部參考,並安裝在下部。這些動作發生在adb disable-verityadb remount請求中。有關更多詳細信息,請參閱AOSP中的overlayfs readme

在恢復模式下共享庫支持

在Android 10中,共享庫可在恢復分區中找到,這消除了所有恢復模式可執行檔均為靜態的需求。共享庫位於分區中的/system/lib (64位元設備)目錄下方(OR /system/lib64 )。

若要將新的共用庫新增至復原分區中,請新增recovery_available: truerecovery: true為共用程式庫的Android.bp ture。前者將庫安裝到系統和復原分割區,而後者僅將其安裝到復原分割區。

無法使用Android的基於Make Build System建置共享庫支援。若要將現有的靜態執行檔轉換為復原模式的靜態可執行文件,請刪除in Android.mk或static_executable中的LOCAL_FORCE_STATIC_EXECUTABLE := true static_executable: true (in Android.bp )。

用戶資料檢查點(UDC)

Android 10介紹了用戶資料檢查點(UDC)功能,該功能允許Android在Android直播(OTA)更新失敗時回歸其先前狀態。