經歷一年多的開發和數月以來早期使用者的反覆測試,最新 Android 平臺 —— Android 9 Pie 終於正式面向全球釋出!作者:Dave Burke, 工程部副總裁
Android 9 利用人工智慧技術,讓您的手機更加智慧、簡潔與人性化。請通過本文了解 Android 9 的所有新特性,同時也希望各位開發者能夠藉助 Android 9,全面提升應用效能,打造出色體驗,讓您的應用與使用者走得更近!
在 Android 9 的開發過程中,十分感謝大家的積極反饋 ,我們收到了超過 1000 條報錯與特性請求 。共有超過 140,000 名開發者通過 Android Beta 專案試用了之前釋出的開發者預覽版,此外,更有 7 家頂尖合作裝置廠商相繼推出了支援 Android P Beta 版的旗艦機型,幫助我們獲取全球早期 Beta 使用者的反饋。
從今天起,我們將在 Android 開源專案 (AOSP) 中釋出 Android 9 原始碼,同時開始向 Pixel 使用者推送系統更新通知,其它更多 Android 裝置預計會在接下來的幾個月內陸續收到通知。
我們會繼續努力將 Android 打造成一流的開放平臺,助力全球開發者取得商業成功。期望各位能夠利用 Android 9 這個新平臺並藉助 Google Play 中新增的功能,開發出優質的應用和遊戲,通過最有效和安全的方式,為全球使用者帶去精彩體驗!
Android 9 終版新功能
以機器學習為核心,打造更為智慧的手機
Android 9 賦予手機強大的學習能力:系統能夠根據使用者在使用過程中展露的習慣與偏好,進行自我學習與適應 —— 從強勁續航到人性化應用推薦,Android 9 都能想您所想,保障持久流暢的使用者體驗。
動態電量管理
我們與 DeepMind 合作推出了動態電量管理特性,利用機器學習技術對系統資源進行有限分配,更專注於使用者最常用的應用。如果您已經針對低耗電模式、應用待機模式以及後臺限制對您的應用進行過相關優化,那麼它就應該已經能夠和動態電量管理特性完美配合。如果您暫時還未開始優化工作,請閱讀電量管理官方文件,獲取具體操作指南。
SlicesSlices 能夠有效幫助使用者節省操作時間,不需要通過全屏體驗就能夠使用應用的部分功能。藉助配套的 UI 模板,Slices 能夠將應用內容以高動態、富互動的形式插入到多個使用場景中,比如 Google Search 和 Assistant。請進一步瞭解如何在應用中構建 Slices。
App Actions
App Actions 是一種全新的應用推薦方式。開發者可以利用這個功能,讓更多人看到自己的應用並極大提高使用者參與度。藉助機器學習技術,App Actions 能對應用的語義意圖和使用場景進行分析,並根據分析結果在適當的時機向使用者推薦您的應用。
我們將在接下來幾周內公佈具體操作細節,幫助開發者瞭解如何在應用內處理一個或多個使用者意圖。一旦應用啟用該推薦功能後,系統就會根據使用者請求,在眾多 Google 和 Android 互動入口推薦您的應用。文字識別與 Smart Linkify
在 Android 9 中,我們對識別文字的機器學習模型進行了擴充套件,使其可以藉助 TextClassifier API 識別出類似日期或航班號這樣的資訊。此外, Smart Linkify 允許開發者通過 Linkify API 使用文字識別模組完成多項操作,比如對使用者可採取的操作提出建議。Smart Linkify 讓系統在文字識別精確度與速度上都有明顯的提升。
神經網路 API 1.1Android 9.0 對神經網路 API 進行了擴充套件與改進,進一步優化 Android 對機器學習硬體加速的支援。神經網路 API 1.1 共增加了對 9 個新運算元的支援,它們分別是 Pad、BatchToSpaceND、SpaceToBatchND、Transpose、Strided Slice、Mean、Div、Sub 和 Squeeze。TensorFlow Lite 就是一個已經用上此 API 的典型機器學習框架。
人機互動,就是這麼容易
“讓智慧手機更加智慧” 是我們向前邁進的重要一步。但是,如何把握好使用者與科技的關係 —— 讓科技以人為先,這一點也同樣關鍵。在 Android 9 中,我們大幅度改進了使用者介面,讓它更簡潔,也更易於操作;對於開發者而言,這些變更能夠讓使用者更加容易搜尋,使用和管理您的應用。
全新系統導航
經過一年多的努力, Android 9 迎來了全新的系統導航,讓多工切換及關聯應用探索變得更加簡單。您只需要向上滑動螢幕就可以全屏預覽最近使用過的應用,輕觸預覽頁後便可以切換至所選應用。
凹口屏支援Android 9 中加入了凹口屏支援,讓您的應用可以充分利用最新全面屏,展現應用的獨特魅力。該功能可以在大部分應用中無縫工作,系統會通過調整狀態列高度將應用內容與螢幕缺口區域分開。如果您的應用含有沉浸式內容,您可呼叫 display cutout APIs 確認缺口形狀與位置,然後請求圍繞缺口進行全屏佈局。另外,我們還加入了開發者選項來模擬任意裝置上的凹口形狀,從而極大簡化了應用支援凹口螢幕所需的構建以及測試流程。
通知與智慧回覆Android 9 進一步改善了通知的實用性與可操作性。訊息類應用可以呼叫新的 MessagingStyle API 來顯示對話,附加照片和表情,或者提供智慧回覆建議。再過不久,您就可以使用 ML Kit 在應用中生成智慧回覆。
文字放大鏡
Android 9 中新增文字放大鏡工具 (Magnifier widget),以提升文字選擇方面的使用者體驗。由於該放大器提供了可以在文字上方拖拽的文字放大皮膚,所以有助於使用者精準地定位游標或文字選擇手柄。該功能可以靈活運用在所有附加在視窗的檢視上,個性化小部件和定製文字呈現均是不錯的應用場景。而且,該放大器工具還可以提供任何檢視或介面的放大版本,而不僅僅是文字。
請閱讀《Android P 中的新文字特性》,瞭解更多有關放大鏡以及文字特性的相關資訊,如 Precomputed Text、行高以及基線文字對齊。使用者安全與隱私
統一身份驗證對話方塊
生物感測器被廣泛應用於身份認證,為了保障使用者在不同感應器和應用間能夠獲得一致的體驗, Android 9 引入了統一的身份驗證對話方塊,提示使用者進行操作。應用不再需要自行設計對話方塊,而是通過呼叫 BiometricPrompt API 觸發系統對話方塊。除指紋識別以外 (包括螢幕下指紋識別),該 API 還支援面部識別以及虹膜識別。
若您的應用仍在使用自行設計的指紋識別對話方塊,我們建議您儘快轉用 BiometricPrompt API。高可信度使用者確認
Android 9 新增了高可信度使用者確認 (Android Protected Confirmation) ,該功能通過可信執行環境 (TEE) 確保提示文字被真實使用者確認。只有在使用者成功確認之後,TEE 才會簽發該文字,讓應用進行後續驗證步驟。
加強金鑰安全保護
我們還加入了一個新的 KeyStore 類 —— StrongBox,並提供相應的 API 來支援那些提供了防入侵硬體措施的裝置,比如獨立的 CPU,記憶體以及安全儲存。您可以在 KeyGenParameterSpec 裡進行設定,決定是否把金鑰交給 StrongBox 安全晶片來儲存。
DNS over TLS
Android 9 內建對 DNS over TLS 的支援:若網路 DNS 伺服器提供支援,裝置會自動將 DNS 查詢升級為 TLS 查詢。使用者可以通過更改 “網路和網際網路” 設定下的隱私 DNS (Private DNS) 模式來管理 DNS over TLS 行為。自行執行 DNS 查詢的應用可以通過呼叫新的 LinkProperties.isPrivateDnsActive() API 來獲取 DNS 模式相關資訊。請閱讀《Android P 開發者預覽版支援 DNS over TLS》,獲取進一步資訊。
預設使用 HTTPS
為了將所有網路流量從明文 (未加密的HTTP) 逐步遷移至 TLS,我們更改了網路安全配置的預設設定,以阻止所有明文流量,強制應用通過 TLS 建立網降連線,除非開發者明確允許特定域名使用明文傳輸。
基於編譯器的安全緩解措施
Android 9 將進一步擴充套件編譯器級別的安全緩解措施,藉助執行時危險行為監測進一步加強平臺安全建設。Android 9 通過控制流程完整性 (CFI) 技術解決了程式碼重用 (code-reuse) 和任意程式碼執行兩大漏洞,並擴充套件了 CFI 在媒體框架和其它關鍵安全元件內的使用範圍,如 NFC 與藍芽。同時,Android 9 還針對 Android 常見核心的 LLVM 編譯新增了 CFI 核心支援。
此外,Android 9 還將整數溢位檢查器 (Integer overflow sanitizer) 的使用範圍擴充套件到其他庫,以緩解記憶體損壞與資訊洩露這兩個問題。我們調高了檢查器在以下兩類庫中的優先順序:1) 存在歷史漏洞,2) 需要處理複雜且不受信任的輸入,如 libui、libnl 和 libmediaplayerservice 一類的庫都在調整範圍內。
使用者隱私
Android 9 新加入多項機制,進一步加強了對使用者隱私的保護。系統禁止所有處於空閒狀態的應用對話筒、攝像頭和所有 SensorManager 感測器的訪問。當應用的 UID 空閒時,麥克風將會報告 “無音訊訊號”,感測器將會停止報告事件,應用使用的攝像頭也會斷開連線,並在應用試圖訪問時生成錯誤。在大多數情況下,這些限制不會對現有應用造成新的問題,但建議您從應用中移除此類感測器請求。
Android 9 還讓使用者控制是否允許訪問平臺 build.serial 識別碼 (它被 READ_PHONE_STATE 許可權保護) 。自 Android 8.0 以來,直接訪問此識別碼的功能已被棄用。您可以呼叫 Build.getSerial() 方法,訪問 build.serial 識別碼。
感官新體驗: 攝像和影音的全面升級
多攝像頭 API 以及其它改進
從 Android 9 開始,您可以在支援多攝像頭 API 的裝置上通過兩個或更多實體攝像頭同時訪問視訊流;在配有雙前置或雙後置攝像頭的裝置上,實現單攝像頭無法實現的創新功能:如無縫變焦、散景和立體視覺。該 API 還允許您呼叫可以在兩臺或更多臺攝像頭之間自動切換的邏輯或混合攝像頭視訊流。
攝像頭的其他改進還包括:利用新的會話引數 (Session parameters) 來有效減少初始捕捉時的延遲,表面 (Surface) 共享技術讓攝像頭客戶端無須重啟視訊流便可處理各種場景。此外,我們還加入了相關 API,提供基於螢幕閃光燈支援及 OIS 時間戳的訪問許可權。
HDR VP9 視訊以及 HEIF 影象
Android 9 增加了對 HDR VP9 Profile 2 的內建支援。現在,您可以在支援 HDR 的裝置上,把啟用 HDR 功能的視訊內容分享給您的使用者。
另外,我們還在新增了對 HEIF (heic) 影象編碼的平臺支援。 HEIF 是目前比較流行的一種的壓縮格式,它改善了圖片的壓縮效果,並減少了圖片的儲存空間以及網路流量。引入平臺支援後,開發者能更加方便地從後臺伺服器傳輸並使用 HEIF 影象。一旦確定您的應用與該資料格式相容,可用於分享或者顯示,不妨嘗試將 HEIF 設定為應用內圖片的儲存格式。此外,您還可以通過 ImageDecoder 將 jpeg 檔案轉化為 heic 檔案,或通過 Bitmap Factory 從 jpeg 檔案中獲取點陣圖。您亦可使用 AndroidX 庫中的 HeifWriter從 YUV 位元組緩衝區、Surface以及點陣圖中寫入 HEIF 靜態影象。
使用動態處理增強音訊
開發者可以呼叫 Dynamics Processing API 對音訊進行動態處理,通過分離出特定頻率的聲音,降低過大的音量,或者增強過小的音量,來改善應用的音訊質量。比如說,即便說話者聲音小,離麥克風遠,而且外界環境十分嘈雜,您的應用依然可以有效捕捉並他/她的聲音,並進行相應優化。該 API 提供了多聲場、多頻段的動態處理效果,包括一個預均衡器、一個多頻段壓縮器,一個後均衡器以及一個串聯的音量限制器。
用於點陣圖和 drawable 的 ImageDecoderImageDecoder API 讓開發者可以通過一種更為簡單的方式將影象解碼為點陣圖或 drawable。ImageDecoder 允許您從位元組緩衝區、檔案或 URI 建立點陣圖或 drawable。它相比 BitmapFactory 有以下幾個優勢:支援精確縮放,支援單步解碼至硬體儲存器,支援解碼後處理,以及動畫影象解碼。請獲取進一步資訊
網路連線與位置
使用 Wi-Fi RTT ,進行室內定位
Android 9 為 IEEE 802.11mc Wi-Fi 協議新增了平臺支援 (也稱為 Wi-Fi 往返時間,RTT),這可以讓您在應用中使用室內定位功能。在提供硬體支援的 Android 9 裝置上,在啟動位置服務並勾選 “允許獲取地理位置資訊” 選項後,應用就可以使用 RTT API 測量與附近 Wi-Fi 接入點 (AP) 的距離。裝置不需要連線到 AP 便可以使用 RTT,而且為了保護隱私,只有手機能夠確定距離,而 AP 不可以。
通過測量從裝置到三個或更多 AP 的距離,您可以計算裝置位置至 1 到 2 米的精度。這種精確度允許您建立更多新的體驗:室內導航、基於位置的細粒度服務,例如,模糊語音控制 ( "開啟這裡的燈" ) ;以及基於位置的資訊服務 ( "這個產品有優惠活動嗎?" )。JobScheduler 中的資料費用敏感度
JobScheduler 是 Android 的一項核心服務,它可以幫助您針對低耗電模式、應用待機模式以及後臺限制,妥善進行各種任務的排程。在 Android 9 中,JobScheduler 可以更好地幫助使用者處理與網路相關的任務,並與運營商單獨提供的網路狀態訊號相協調。任務現在可以宣告預估資料量、訊號預取以及指定詳細的網路要求 —— 運營商可以報告網路狀況是擁塞還是不計量,然後 JobScheduler 會根據網路狀態管理作業。例如,當網路擁塞時,JobScheduler 可能推遲大型網路請求;而在網路可以不計量使用時,則可以執行多種預載入作業 (例如,預讀標題) 來改進使用者體驗。
用於 NFC 支付和安全交易的 Open Mobile API
Android 9 將 GlobalPlatform Open Mobile API 的實現新增至平臺中。在支援的裝置上,應用可以使用 OMAPI API 訪問安全元素 (SE) ,以啟用智慧卡支付等安全服務。硬體抽象層 (HAL) 提供了必要的 API,用於列舉多種可用的 Secure Elements (如 eSE, UICC 等)。
更強勁的效能表現
ART 效能提升
Android 9 藉助 ART 執行時顯著提高了應用的效能表現與執行效率。我們擴充套件了 ART 對執行特徵的使用,以優化應用並減少已編譯應用程式碼的記憶體佔用量。ART 現可使用特徵檔案資訊在裝置上重寫 DEX 檔案,幫助多個常見應用的記憶體佔用減少高達 11%。我們期望藉此減少系統 DEX 記憶體使用量並加快應用啟動時間。
Kotlin 優化
Kotlin 是 Android 開發的一等程式語言,如果您還未嘗試,還在等什麼呢?我們在 Kotlin 效能方面進行了長期資源投入,同時持續加大對 Kotlin 的支援,如優化 Kotlin 程式碼效能。在 Android 9 中,您會看到這項工作已初見成效 —— 我們已經改進了一些編譯器優化,尤其是那些針對迴圈的編譯器優化,以實現更好的效能。我們還將繼續與 JetBrains 合作,優化 Kotlin 生成的程式碼。只需保持更新 Android Studio 上的 Kotlin 外掛,您就能獲得所有最新的 Kotlin 效能更新。
今天,我們還在 Android 9 中釋出了更新後的 API —— API 28 SDK (rev. 6),在部分最常用的 API 內加入可空值註解 (nullability annotation)。我們會在近期釋出相關文章,提供更多細節資訊,敬請期待。
現代化的 Android
在 Android 9 中,我們繼續投入大量資源,進一步打造更為現代的 Android 平臺與執行應用,進而推動我們在安全性、效能和穩定性這三方面長遠目標的實現。
我們在去年就已經宣佈過 Google Play 將要求所有應用在 2018 年 11 月之前針對 Android Oreo (targetSdkVersion 26 或更高) 進行更新。因此,若您的應用目標平臺版本早於 Android 4.2 (API等級17),使用者在安裝您的應用時,系統會彈出警告對話方塊。請閱讀遷移指南相關文件。我們期待著您的應用能夠充分利用現代 Android 為使用者帶來更好的體驗。
簡單幾步,即可上手
由於 Pixel 使用者從今天起就可以開始使用 Android 9,而其他裝置也會在接下來的幾個月陸續收到更新推送,因此儘快適配您的應用至 Android 9。您只需在 Android 9 Beta 裝置或者模擬器上使用 Google Play 安裝您目前的應用並進行測試,請確保您的應用在測試過程中執行流暢,介面美觀,並能夠妥善處理 Android 9 的各項行為變更。
同時,請您留心應用呼叫非 SDK 介面的情況。Android 9 限制了一些特定非 SDK 介面的訪問許可權,因此您需要減少應用對這些介面的依賴。請閱讀《後續更新 | 減少使用非 SDK 介面以提升穩定性》,瞭解詳細資訊。
在完成必要更新之後,我們建議您立即將應用釋出至 Google Play,暫時無需更改應用的目標平臺版本。這能幫助您在保障使用者體驗的同時,繼續利用 Android 9 API 優化應用效能並將其逐步遷移至目標平臺。
利用 Android 9 特性和 API,進一步優化您的應用
當您準備就緒後,請盡情探索 Android 9,並利用新特性與 API 讓您的應用臻於完美。
首先,請將官方版 API 28 SDK 、最新的開發工具與映像檔案下載至 Android Studio 3.1,或者使用 Android Studio 3.2 最新版本,然後將專案的 compileSdkVersion 和 targetSdkVersion 更新至 API 28。在更改完目標平臺版本之後,請確保您的應用支援所有的行為變更。
在您準備好後,請將 APK 更新發布至 Google Play。我們建議您使用 Google Play 中的 beta 測試功能,先獲取一小部分使用者的早期反饋,然後再逐漸進行全量釋出。
訪問 Android 9 官方網站,閱讀文件並獲取更多相關資訊。點選收看視訊或者前往 Google I/O Android 播放列表,瞭解 Android 9 為開發者準備的精彩新亮點。
即刻升級裝置,體驗 Android 9
從今天開始,Pixel 裝置將陸續獲取 Android 9 的更新推送。
其它加入 Beta 專案的裝置,如 Sony、小米、HMD、Oppo、Vivo、一加和 Essential 以及所有符合要求的 Android One 裝置預計會在今年秋末收到更新推送。與此同時,我們也在和其他合作伙伴展開合作,希望在今年推出更多新 Android 9 裝置或升級現有裝置以支援新系統。
此外,適用於 Pixel 裝置的系統映像現可供下載
請前往 Android 開源專案資源庫中的 Android 9 板塊,獲取更多 Android 9 的相關資源。
下一步
Android 9 釋出之際,開發者預覽版也就正式結束了。我們將在不久後關閉預覽版報錯渠道,但是請各位繼續向我們提供反饋!如果您遇到任何有關 Android 9 的問題,請通過 AOSP 反饋功能提交新的錯誤報告。
另外,我們計劃放慢 Android Beta 專案的步調,並移除專案內所有機型。如果您想繼續在 Pixel 裝置上體驗預覽版 Android 系統,請點選此處註冊,以便繼續獲取相關專案的資訊。
"再次感謝大家此前對預覽版和公測版的大力支援。每一位開發者和早期使用者都為 Android 9 的誕生提供了必不可少的力量,幫助我們將 Android 9 打造成為卓越平臺,為開發者和使用者帶來精彩體驗。謝謝!"
點選這裡前往 “Android Developers 官方文件” 檢視更多相關資訊