Android Q Beta 正式釋出 | 精於形,安於內

Android_開發者發表於2019-03-14

移動行業在 2019 年創新不斷,隨著 5G 時代的到來與摺疊屏技術的成熟,智慧裝置正在邁向未來新時代,而 Android 更是處在顛覆創新的風口浪尖。通過與生態圈夥伴們的深度合作,我們從軟體到硬體不斷進行突破和創新,力求為全球億萬使用者打造最新的體驗與功能。

Android Q Beta 正式釋出 | 精於形,安於內
隨著移動生態圈的蓬勃發展,Android 在注重技術創新的同時,也在加速推進安全與隱私方面的工作,確保使用者能夠安心享受卓越的移動體驗。在 Google Play Protect 和執行時許可權等技術的基礎上,Android Q 新增了多項隱私及安全防護功能,以及一系列精彩紛呈的新特性與優化項,如摺疊屏增強、新網路連線 API、全新的媒體解碼器、攝像頭新功能、NNAPI 擴充套件、Vulkan 1.1 支援、應用啟動提速、安全改進等等。

今天,我們正式推出 Android Q Beta 1 版本及預覽版 SDK ,歡迎各位開發者及早期使用者嚐鮮體驗。您可在 Pixel 裝置上立即參與 Beta 1 試用計劃 (聽取 Pixel 使用者的熱情呼聲之後,我們特別新增了 Piexl 和 Pixel XL 這兩個型號),並向我們及時反饋您的使用感受。請耐心閱讀下文,進一步瞭解 Android Q 的獨特魅力。此外,我們將在今年 5 月舉辦 2019 Google I/O 開發者大會,屆時會有更多精彩與您分享, 期待與您相見!

隱私保護持續升級

一直以來,Android 將資料安全與使用者隱私視為重要使命。在平臺更新迭代的過程中,我們新增了許多安全特性,其中包括基於檔案的加密、應用對敏感資訊的訪問許可權攝像頭/麥克風後臺訪問鎖定模式加密備份等,並推出了 Google Play Protect 機制,每日掃描超過 500 億應用,時刻監測潛在安全威脅。Android Q 進一步提升了系統的安全防護水平,持續為使用者保駕護航。其中,Project Strobe 計劃負責推進大部分的安全優化與增強工作。

給予使用者更多地理位置控制

在 Android Q 中,使用者可進一步控制應用訪問裝置地理位置的時間。在之前的幾個 Android 版本中,應用只有在請求並獲得使用者同意後,才能獲取裝置當前的位置資訊。

Android Q Beta 正式釋出 | 精於形,安於內
定位許可權比較敏感的一點在於,如果應用當前並未處於活躍狀態 (即執行在後臺),它是否可以繼續持有這個許可權。Android Q 允許使用者指定應用從不、僅在使用期間 (執行時),或者任何時候 (退到後臺) 都能獲取位置資訊。

例如,外賣應用在送餐前詢問位置資訊是合理的,使用者也許願意授予,但是當使用者沒有使用此應用時,地理位置資訊就沒必要再被獲取,而且使用者或許也不情願授予這個許可權。請閱讀 Android 官方文件,瞭解更多技術細節,讓您的應用妥善應對新的許可權管理模式。我們將在接下來的幾個 Beta 版中陸續引入更多以使用者為中心的優化項,請拭目以待。我們的目標是當出現變更時,儘早向開發者釋出通知,並給予最大程度的支援,盡全力幫助開發者應對這些變更。

隱私保護升級

除了位置許可權的變更以外,我們在隱私防護方面也毫不鬆懈,確保流程公開透明,完善許可權管控機制,多角度保護使用者的個人資訊。

在 Android Q 中,使用者可以更好地管理應用對共享檔案的訪問許可權。使用者可通過新的執行時許可權允許應用訪問照片、視訊或音訊檔案。此外,應用必需通過系統檔案選擇器才能訪問下載檔案,也就是說,訪問許可權完全由使用者掌控。Android Q 還針對外部儲存空間引入了一些變更,請務必仔細閱讀此文件,確保應用正確使用外部儲存空間。

另外,我們還發現後臺應用突然跳轉至前臺,擋住當前應用的行為讓使用者和開發者們頗為煩心。為了避免應用頻繁打斷使用者操作,Android Q 將禁止後臺應用啟動 Activity。如果您的應用執行在後臺,但又需要立即引起使用者關注,例如來電或鬧鈴,請使用高優先順序通知,並提供一個全屏 intent。請閱讀相關文件,瞭解更多資訊。

我們將限制應用訪問不可重設的裝置識別碼,如 IMEI、序列號等。請閱讀《唯一識別符號最佳做法》為應用選擇最合適的識別符號。您也可以參閱官方文件,獲取更多細節內容。此外,Android Q 預設啟用 MAC 地址隨機化功能,當裝置連線到不同的 Wi-Fi 網路時,系統會隨機生成不同的 MAC 地址 ——在 Android 9 Pie 中,該特性為附加功能,開發者可自行選擇是否啟用。

我們之所以提早公佈這些變更,為的是給您預留充足的時間做好準備。與此同時,我們也在加緊工作,期望儘早為您提供相關細節內容。建議您仔細閱讀隱私變更相關文件,並儘早著手測試工作。

使用者互動新方式

Android Q 開創了全新的使用者互動模式,並讓應用間的切換更加流暢順滑。

適配摺疊屏和新型螢幕

智慧裝置已迎來摺疊新時代,這不僅是對使用者體驗的顛覆創新,同時也為移動裝置的使用場景開啟了無限可能。為了幫助開發者順利適配摺疊屏及大屏裝置,Android Q 引入了多項改進,比如說我們更新了 onResume onPause 的工作模式,以便為 multi-resume 提供更好的支援,另外我們還新增了當應用獲得焦點後的通知功能。最後,為了讓您更好的管理應用在摺疊屏及大屏上的顯示,我們也更新了 resizeableActivity 屬性的功能。為了讓儘快著手應用的開發和測試工作,我們正在緊鑼密鼓地對模擬器進行升級。請留意我們於近期公佈的相關資訊。

Android Q Beta 正式釋出 | 精於形,安於內

Sharing Shortcuts

當使用者想在另一個應用上與朋友們分享照片等內容時,他們希望整個流程是快速流暢的。為此,Android Q 新增了一項名為 Sharing Shortcuts 的特性,允許使用者直接跳轉至另一個應用進行分享。開發者首先需要釋出一個分享目標,該目標隨後會在應用中啟動一個包含內容附件的特定 Activity,並通過 share UI 顯示給使用者。因為分享目標已提前釋出,所以 share UI 可在 Activity 啟動後立即載入分享內容。

Android Q Beta 正式釋出 | 精於形,安於內
由於 Sharing Shortcuts 與 App Shortcuts 所採用的工作機制基本相同,所以我們擴充套件了 ShortcutInfo API,方便您在應用中整合這兩項特性。AndroidX 中新推出的 ShareTarget 庫也已引入 ShortcutInfo API 支援,這樣一來,應用不僅能夠使用新特性,而且 Q 之前的裝置也可繼續使用直接共享 (Direct Share) 功能。請檢視示例應用及其原始碼

設定皮膚

我們已經將 Android 9 Pie 中的 Slices 技術完美整合到 Settings Panel API 中,現在您可利用該 API 直接在應用介面內顯示系統設定。

Android Q Beta 正式釋出 | 精於形,安於內
設定皮膚指您從應用中觸發的一個浮動 UI 介面,用於顯示使用者可能需要修改的系統設定,如網路連線、NFC、音量等。比如說,瀏覽器可以在皮膚上顯示如飛航模式、WiFi (包括附近網路)、移動資料等與網路連線相關的設定。使用者無需退出應用,便可直接在皮膚上進行操作。如果您想在應用中啟用該功能,請通過 Settings.Panel actions 觸發一個 intent。

網路連線

在 Android Q 中,我們擴充套件了 Android 網路連線堆疊的功能,並新增了一些新的網路連線 API。

網路連線許可權、隱私及安全

此前,大部分網路掃描 API 在獲取 COARSE 位置許可權後便能被呼叫,但是從 Android Q 開始,我們提高了藍芽、蜂窩網路以及 Wi-Fi 的安全規定,要求這些 API 必須具備 FINE 許可權。如果您的應用只需建立 P2P 連線或建議可用網路,請檢視優化後的 Wi-Fi API,它們能幫助您簡化網路連線,而且不需要位置許可權。

在 Wi-Fi 安全方面,Android Q 除了會為每個 Wi-Fi 地址隨機生成不同的 MAC 地址以為,還新增了對新一代 Wi-Fi 標準協議 (WP3 和 Enhanced Open) 的支援,全方位提升家庭、工作及公共網路環境的安全性。

優化 P2P 及網路連線

在 Android Q 中,我們對 Wi-Fi 堆疊進行了重構,這不僅提升了應用在隱私及效能方面的表現,而且對許多常見用例也有一定的優化作用,如 IoT 裝置管理,顯示可用網路等,無需請求位置許可權。

網路連線 API 讓您可以更輕鬆地管理 IoT 裝置,並使用配置、下載和列印等 P2P 功能。應用通過將 SSID 和 BSSID 中的偏好設定指定為 WiFiNetworkSpecifiers, 間接發起網路連線請求;系統負責掃描附近的 Wi-Fi,並在 Wi-Fi 選擇器中顯示匹配結果。當使用者選擇網路後,系統會自動設定網路連線。

網路建議 API 允許應用使用者顯示推薦的網路選項。應用會對網路和證書進行排名,並將該列表作為 WifiNetworkSuggestions,以此來間接發起網路連線。隨後,系統便會根據使用者的歷史偏好,從列表中挑選出最合適的選項,並建立無縫連線。

Wi-Fi 效能模式

您現在可以在 Android Q 中啟用高效能、低延遲的自適應 Wi-Fi 模式,這樣一來,即使是在網路延遲比較敏感的場景下,如實時遊戲、主動呼叫等,依舊能保障流暢的使用者體驗。

如需啟用新的效能模式,請通過 WIFI_MODE_FULL_LOW_LATENCY 或 WIFI_MODE_FULL_HIGH_PERF 呼叫 WifiManager.WifiLock.createWifiLock()。在這些模式下,Android 平臺將配合裝置韌體協同工作,實現最低能耗。

攝像頭、媒體及影像

新的圖片格式: 動態深度

許多移動裝置的攝像頭利用演算法處理被攝物件、前景與背景三者的距離,通過前景背景虛化,模擬出有層次的淺景深效果。攝像頭首先會捕獲圖片上多個點的深度後設資料,然後在圖片上應用靜態虛化效果,最後再丟棄之前收集的後設資料。

從 Android Q 開始,應用可在支援裝置上請求生成動態深度圖片,檔案內包含與深度元素相關的 JEPG 與 XMP 後設資料,並內嵌一組深度圖與置信圖。

"JPEG + 動態深度" 圖片可以幫您在應用中實現模糊或散景效果。在未來,您甚至可以利用這些資料生成 3D 圖片或者支援 AR 攝像用例。希望在我們的努力下,動態深度格式能成為惠及整個生態圈的開放格式。與此同時,我們還在與各大裝置廠商展開密切合作,進一步普及 Android Q (以及未來版本系統) 裝置對該圖片格式的採用率。

Android Q Beta 正式釋出 | 精於形,安於內
動態深度圖片可以讓您在應用中實現模糊或散景效果

新的音訊及視訊解碼器

Android Q 現已支援開源視訊解碼器 AV1,媒體供應商只需更少的頻寬就能將高質量視訊內容傳輸至 Android 裝置上。我們還新增了對 Opus 音訊格式的支援。Opus 編碼器能自動識別輸入訊號是語音還是音樂,然後據此選擇優化的編碼模式。此外,使用者也可在支援 HDR 10+ 的 Android Q 裝置上,播放高動態範圍視訊。

MediaCodecInfo API 可幫助開發者更輕鬆地判定 Android 裝置的視訊渲染能力。您可呼叫 VideoCodecCapabilities.getSupportedPerformancePoints() 獲取現有解碼器所支援的檔案大小和幀率,以確保裝置能夠播放最佳質量的視訊內容。

原生 MIDI API

針對使用 C++ 程式碼處理音訊檔案的應用,Android Q 新增了原生 MIDI API,讓應用可以通過 NDK 與 MIDI 裝置進行資料傳輸。應用可在音訊的回撥函式中使用非阻塞讀取來檢索 MIDI 資料。歡迎大家檢視參考示例應用及其原始碼

基於 Vulkan 的 ANGLE 渲染引擎

我們正在努力行動爭取為 Vulkan 裝置帶去可更新的標準化 OpenGL 引擎。Android Q 在 Vulkan 的基礎上為 Android 裝置新增了 ANGLE 支援。ANGLE 是一款專為高效能 OpenGL 功能實現打造影像抽象層。有了 ANGLE 之後,使用 OpenGL ES 進行開發的應用和遊戲便可直接體驗 Vulkan 帶來的強勁效能與高穩定性,並了在 Android 裝置上部署統一且不受供應商限制的 ES 實現。我們計劃在 Android Q 中引入 OpenGL ES 2.0 支援,此外,針對 ES 3.0 的支援也在密集籌劃中。

今後,我們會繼續擴充 Android 裝置上的 ES 實現,為開發者帶去更多的 OpenGL 功能,錯誤修復和效能優化項。請閱讀相關文件,瞭解 Android 對 ANGLE 的現有支援,具體操作以及後續發展計劃。如果您想在應用內測試 ANGLE 初期支援,請在設定中啟用開發者選項。心動不如行動,不妨立即上手試一下吧!

隨時隨地,盡享 Vulkan

Vulkan 是一款面向 3D 圖形渲染推出的革命性 API,具備低消耗、高效能、跨平臺等優勢,我們將繼續擴充套件 Vulkan 在 Android 平臺上的應用範圍,努力將其打造成一款支援範圍廣、一致性高的圖形 API。目前,我們已多裝潢置廠商達成合作,有望在執行 Android Q 或更高版本系統的裝置上加入 Vulkan 1.1,其中,64 位裝置為硬性要求,而對於 32 位裝置則為推薦配置。通過與生態圈夥伴的開放合作,我們希望在將來為應用和遊戲開發者們提供一套標準的高效能圖形 API。

神經網路 API 1.2

自 2017 年推出神經網路 API 以來,我們持續投入大量精力,在優化現有功能的基礎上,積極探索新的應用場景。我們在 Android Q 中新增了 60 個運算元,其中包括 ARGMAX、ARGMIN、量化 LSTM,以及大量效能優化項,為模型加速奠定了堅實的基礎,如目標檢測模型和影像分割模型。目前,我們正在和硬體合作伙伴以及主流機器學習框架提供商 (如 TenserFlow) 展開積極合作,共同推進神經網路 API 1.2 優化和支援工作。

強化 Android 基礎

ART 效能

Android Q 為 ART 執行時新添了多項改進。開發者無需進行任何操作,便可有效縮短應用的啟動時間,減少記憶體消耗。

自從 Android Nougat 開始,ART 便引入了配置檔案引導型優化機制,通過識別並預編譯頻繁執行的程式碼,達到縮短應用啟動時間的目的。為了進一步加快應用的啟動速度,Google Play 現在除了 APK 檔案之外,還會交付一套基於雲的配置檔案。它是一套已經過匿名化處理的彙總 ATR 配置檔案,允許 ART 在應用開始執行之前就預編譯一部分程式碼,這有助於顯著提升優化程式的整體效率。基於雲的編譯檔案適用於所有應用,而且執行 Android P 或更高版本系統的裝置目前已提供相關支援。

Android Q Beta 正式釋出 | 精於形,安於內
我們也一直在努力提升 ART 的效能,例如,我們改進了 Android Q 中的 Zygote 程式,提早開啟應用程式並將其移至安全容器中,如此一來,應用便做好了隨時啟動的準備。此外,我們還在應用的系統啟動映像中加入了更多資訊,例如類,並藉助執行緒管理加快映像檔案的載入速度。與此同時,我們還在 ART 的併發複製垃圾收集器 (Concurrent Copying Garbage Collector) 中加入了分代收集機制 (Generational Garbage Collection)。分代演算法可以將新生代的物件單獨收集出來,這樣效率更高,而且與 full-heap GC 相比成本更小,釋放空間也十分可觀。總體而言,引入分代演算法後,ART 垃圾回收速度和 CPU 利用效率有了明顯提升,在減少垃圾的同時,幫助應用在低端裝置上流暢執行。

應用安全

BiometricPrompt 是 Android 推出的統一驗證框架,它能為生物識別提供層面的支援。Android Q 擴充套件了對人臉識別等被動驗證手段的支援,並加入了隱式和顯式兩個型別的身份驗證流。在顯式驗證流中,使用者必須在可執行環境 (TEE) 下明確確認執行事務操作;隱式驗證流則主要負責被動驗證這類較為輕便的事務。此外,我們還改進了裝置證書的版本回滾,如有需求,您可重新生成證書。

Android Q 還新增了 TLS 1.3 支援。作為 TLS 標準的一次重大更新,TLS 1.3 協議在安全性、效能和隱私方面都進行了大幅優化。根據我們收集到的資料顯示,與 TLS 1.2 相比,1.3 版本的安全網路連線速度加快了 40%。預設情況下,所有 TLS 連線均啟用 TLS 1.3。更多細節,請參考官方文件

相容公開 API

如何確保應用可在所有版本的 Android 系統上流暢執行我們聚焦的另一個問題。如果您的應用呼叫了非 SDK 介面,可能會導致使用者遭遇系統崩潰及開發者需要緊急釋出修復的風險。把所有應用遷移到公開 API 是我們從 Android P 就開始的一項長期任務,而 Android Q 更是進一步加大管控力度,收緊相關限制。我們深知從應用中移除非 SDK 介面是一項耗時費力的艱鉅挑戰,因此我們向您提前公佈非 SDK 介面限制的最新通知,希望您能作好萬全準備,妥善應對。

在 Android Q 中,受限制的非 SDK 介面數量更多了,建議您在開發時選用相等功能的公開 SDK 介面。為了幫助您成功過渡,並防止應用出現崩潰等問題,僅當應用的目標平臺為 Android Q 時,這些限制才會生效。我們會根據收集到的開發者請求,繼續增加可替代的公開 API,如果現有的公開 API 無法解決您的問題,請及時向我們反饋

還有一點很重要: 請您對應用進行非 SDK 介面使用方面的測試。推薦您使用 StrictMode 方法 detectNonSdkApiUsage() 來檢測違規呼叫,它會在應用通過反射或 JNI 訪問非 SDK API 時發出警告。即使 API 當前尚處於豁免狀態 (灰名單),我們還是建議您儘早作長遠打算,儘量避免在應用中使用此類 API,以降低潛在的不相容風險。請閱讀開發者指南,瞭解 Android Q 中的限制詳情。

現代化 Android

為了確保所有應用都能及時享用 Android 在安全和效能方面的最新優化,我們從未停止前進的腳步。從下半年開始,Google Play 將要求所有新應用及更新將 targetSdkVersion 設定為 28 (Android 9 Pie)。除此以外,當使用者首次執行 API 低階低於 23 (Android Marshmallow) 的應用時,會受到來自 Android Q 的警告資訊。請閱讀《符合 Google Play 的目標 API 級別要求》,順利開展應用的遷移工作。

從今年下半年開始,所有應用都必須滿足 Google Play 64 位要求。如果您的應用使用原生 SDK 或開發庫,請務必將它們升級到符合 64 位要求的版本。請閱讀官方文件,獲取更多技術細節和具體指導。

簡單幾步,輕鬆上手 Android Q Beta

Android Q 新新增的重要隱私特性可能會對您的應用造成影響,因此我們建議您立即著手測試工作。請您尤其注意外部儲存變更、新的位置請求狀態、後臺應用啟動限制、裝置識別碼限制這幾項變更。更多資訊,請閱讀隱私文件

請從應用商店下載您的應用,並在執行 Android Q Beta 的裝置或 Android 虛擬裝置上測試使用者流程,確保應用執行順暢,介面美觀,並妥善處理 Anadroid Q 行為變更。如果您發現任何問題,我們建議您在當前應用中進行修復,無需變更目標平臺級別。請閱讀遷移指南,瞭解具體操作步驟及關鍵時間節點。

下一步,請儘快將應用的 targetSdkVersion 設定為 'Q' ,測試應用是否可順利支援 Android Q 中的安全與隱私特性,以及其他行為變更

探索新特性與 API

當您準備就緒後,請進一步探索 Android Q 並瞭解可在應用中使用的諸多新特性及 API。 更多內容,請閱讀 API 變化報告Android Q Beta API 參考文件或開發者指南。您亦可前往 Android Q Beta 開發者官網,閱讀版本說明,或通過反饋頁面向我們報錯。

如果您想為 Android Q 開發應用,只需將 Android Q Beta SDK 和工具下載到 Android Studio 3.3 (或更高版本),並按照步驟配置開發環境。 如果您想享用 Android Q 行為變更的最新修復,建議您使用 Android Studio 3.5 (或更高版本)。

如何獲取 Android Q Beta

獲取步驟十分簡單,您可立即加入測試版計劃,我們將向 Pixel 裝置推送 Android Q Beta 版的系統更新 (今年,三代 Pixel 裝置都在支援範圍內 —— Pixel 3, Pixel 2, 甚至是初代 Pixel!)。點選此處下載適用於 Pixel 裝置的系統映象檔案。如果您沒有 Pixel 裝置,則可通過 Android Studio 中的 SDK Manger 下載最新版本的模擬器映象檔案,並安裝至 Android 模擬器。

我們計劃在預覽版階段定期更新預覽版系統映象檔案和 SDK,並在將來的幾個 Beta 版中,陸續推出更多新功能,敬請期待!

您的反饋意見對我們非常重要,所以歡迎您在下方評論區留言聯絡我們,分享您的使用感受、想法與建議。謝謝!

點選這裡前往 Android 開發者官方文件檢視更多

Android Q Beta 正式釋出 | 精於形,安於內

相關文章