Android Q Beta 正式發布 | 精於形,安於內

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

隨著移動生態圈的蓬勃發展,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 允許用戶指定應用從不、僅在使用期間 (運行時),或者任何時候 (退到後台) 都能獲取位置信息。

例如,外賣應用在送餐前詢問位置信息是合理的,用戶也許願意授予,但是當用戶沒有使用此應用時,地理位置信息就沒必要再被獲取,而且用戶或許也不情願授予這個許可權。請閱讀 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屬性的功能。為了讓儘快著手應用的開發和測試工作,我們正在緊鑼密鼓地對模擬器進行升級。請留意我們於近期公布的相關信息。

Sharing Shortcuts

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

由於 Sharing Shortcuts 與 App Shortcuts 所採用的工作機制基本相同,所以我們擴展了ShortcutInfo API,方便您在應用中整合這兩項特性。AndroidX 中新推出的 ShareTarget 庫也已引入 ShortcutInfo API 支持,這樣一來,應用不僅能夠使用新特性,而且 Q 之前的設備也可繼續使用直接共享 (Direct Share) 功能。請查看示例應用及其源代碼。

設置面板

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

設置面板指您從應用中觸發的一個浮動 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 現已支持開源視頻解碼器 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 或更高版本系統的設備目前已提供相關支持。

我們也一直在努力提升 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 開發者官方文檔查看更多

推薦閱讀:

TAG:Android | Android開發 | Android應用 |