當前位置:
首頁 > 知識 > 機器學習為核心,DeepMind助力谷歌開發的安卓 9「Pie」今日上線

機器學習為核心,DeepMind助力谷歌開發的安卓 9「Pie」今日上線

選自android-developers

作者Dave Burke

機器之心編譯

今日,谷歌開發者博客宣布,經過 1 年多的開發和數月的測試,安卓 9「Pie」將正式面世。本文中,我們將介紹安卓新版本的所有新特點。

今年 5 月份,谷歌 I/O 大會宣布推出安卓 9,而後經過數月的測試,谷歌收穫了大量的反饋。此外,還有小米、Oppo 等 7 家設備製造商也將測試版本放到了他們的旗艦設備上,使得谷歌能夠從全球用戶那裡收集反饋信息。

今日,谷歌宣布將把安卓 9 的源代碼放到安卓開源項目上(AOSP),開始在所有的谷歌 Piexl 手機上用安卓 9。據介紹,安卓 9 擁有的機器學習能力能讓手機變得更智能、便利、個性化。對開發者而言,安卓 9 包含很多強化 APP 的新方法。

Android 9 包含什麼?

以機器學習為核心的更智能的智能手機

Android 9 能根據你的喜好自動調整你的手機,讓它更適合你。從幫助用戶充分利用電池壽命,到任何時刻都能展現 app 中最佳部分,只要用戶需要,Android 9 都能讓這一切變得更順暢、更持久。

自適應電池(Adaptive Battery)

谷歌與 DeepMind 合作開發了個名為 Adaptive Battery 的功能,該功能利用機器學習為用戶最關心的應用優化系統資源。如果用戶的 app 針對 Doze、App Standby 或 Background Limits 進行了優化,那 Adaptive Battery 可以立即開始運行。

Slice

通過在全屏應用體驗之外啟用互動,Slice 可以幫助用戶更快地執行任務。它通過使用 UI 模板來實現這一點,這些模板從谷歌搜索應用中顯示豐富、動態且交互的內容,之後還可以在 Google Assistant 等其他地方顯示這些內容。

App Actions

App Actions 是一種提高 app 可見度和參與度的新方法。Actions 利用機器學習的優勢,根據 app 的語義內容和用戶語境,在合適時間將特定 app 的特定功能以快捷鍵的形式呈現給用戶。

在接下來的幾周,谷歌將分享更多關於註冊 app 的細節,這樣更多的 app 就可以授權給 App Actions,進而能響應用戶需求並在多個谷歌和安卓界面運行。

文本分類與智能鏈接

谷歌擴展了用於識別內容或文本輸入中實體的機器學習模型,已通過 TextClassifier API 支持更多類型,如日期和航班號。Smart Linkify 可以通過讓 Linkify API 利用 TextClassifer 模型,提供包括快速文本填充選項等操作。Smart Linkify 同時還可以顯著提高檢測精度和性能。

Neural Networks 1.1

安卓 9 中包含了神經網路 API 的新版本,以擴展安卓對設備上機器學習加速的支持。具體來說,Neural Networks 1.1 加入了對 9 個新操作的支持——Pad、BatchToSpaceND、SpaceToBatchND、Transpose、Strided Slice、Mean、Div、Sub、Squeeze。通常利用這個 API 的方法是通過 TensorFlow Lite 來進行的。

最大限度地利用你的手機

谷歌宣稱,新版本的安卓系統可以讓你的智能手機變得更加聰明。但更重要的是,隨著科技的發展,技術本身將逐漸隱藏在用戶界面背後。在安卓 9 中,谷歌的開發者們已將 Android 的 UI 轉變為更簡單、更易於使用的形式——對於開發人員而言,這些改進有助於改善用戶查找、使用和管理 app 的方式。

新系統導航

Android 9 引入了一個新系統導航,谷歌為此開發了一年多。新的設計使安卓的多任務處理更加簡便,並且更容易發現 app。用戶在手機上向上滑動,就可以查看最近使用的應用全屏預覽,只需點擊就可以跳轉回其中一個 app。

Display cutout

現在你的 app 可以通過 Android 9 的顯示切換功能充分利用最新的無邊框屏幕。對於大多數應用來說,系統管理狀態欄會將內容和切換功能分開,所以運行切換功能完全無障礙。如果有沉浸式內容,用戶可以使用 display cutout APIs 來檢查位置和切換形狀並發送全屏請求。為了幫助開發和測試,谷歌添加了一個 Developer Option,可以在任何設備上模擬多個 cutout shapes。

帶有沉浸式內容的 APP 可以使用顯示切換功能在設備上全屏顯示。

通知與智能回復

Android 9 使通知功能能有用且易操作。通知類 app 可以利用新的 MessagingStyle API 來顯示對話、附上照片或標記,甚至還能提供智能回復。用戶很快就可以利用 ML Kit 為 app 生成回復建議。

MessagingStyle 通知與對話和智能回復 [左],圖像和標記 [右]。

文本放大

在 Android 9 中,谷歌添加了一個放大鏡部件來提高用戶選擇文本的體驗。放大鏡部件允許用戶通過可拖動窗口查看放大的文本,從而精確定位游標或者文本選擇句柄。用戶可將它添加到任何窗口視圖中,這樣就可以在自定義部件或自定義文本中使用它。除了文本放大,放大鏡部件還可以為任何視圖提供放大功能。

用戶安全及隱私

生物特徵提示

隨著一系列用於身份驗證的生物感測器的使用,不同類型的感測器和應用程序之間的體驗變得更加一致。Android 9 引入了一個系統管理的對話框,提示用戶輸入任何支持的生物認證類型。應用程序不再需要構建自己的對話框,而是使用生物計量學提示 API(BiometricPrompt API)來顯示標準系統對話框。除了指紋(包括顯示器內感測器),API 還支持面部和虹膜認證。

如果你的應用程序正在繪製自己的指紋驗證對話框,你應該儘快切換成使用生物計量學提示 API。

受保護確認

Android 9 引入了 Android 保護確認系統(Android Protected Confirmation),它使用可信執行環境(TEE)來保證給定的提示字元串被顯示給用戶確認。只有在用戶確認成功後,TEE 才會簽署提示字元串,然後應用程序可以驗證該字元串。

加強對密鑰的保護

谷歌添加了 StrongBox 作為一種新的密鑰存儲類型,為在具有獨立 CPU、RAM 和安全快閃記憶體的防篡改硬體中提供密鑰存儲的設備提供 API 支持。你可以設置密鑰是否應該由 KeyGenParameterSpec 中的 StrongBox 安全晶元保護。

通過 TLS 的域名系統

Android 9 通過 TLS 增加了對域名系統(DNS)的內置支持,如果網路的 DNS 伺服器支持,它會自動將 DNS 查詢升級到 TLS。用戶可以在網路和互聯網設置中以新的私有 DNS 模式通過 TLS 行為管理 DNS。執行自己的 DNS 查詢的應用程序可以使用新的 API——link properties . isprivated nsactive() 來檢查 DNS 模式。

默認 HTTPS

作為重要工作的一部分,Android 9 將所有網路通信從 cleartext(非加密 HTTP)移動到通過 TLS 加密(HTTPS)的網站,他們將修改默認的網路安全配置以阻止所有 cleartext 通信。用戶現在需要通過 TLS 連接,除非明確地選擇特定域的 cleartext。

基於編譯器安全的 Mitigations

在 Android 9 中,谷歌已經擴展了編譯器級 mitigations 的使用,並通過危險行為的運行時檢測來強化平台。控制流完整性(Control Flow Integrity,CFI)技術有助於防止代碼復用工具和代碼執行。在 Android 9 中,谷歌已經極大地擴展了媒體框架和其它安全組件(如 NFC 和藍牙)中對 CFI 的使用。在使用 LLVM 構建時,谷歌還在 Android 常用核心中引入了 CFI 核心支持。

此外,谷歌還擴展了整數溢出錯誤 sanitizers 的使用以緩解內存損壞和信息泄漏漏洞等問題。

用戶隱私

Android 9 以多種方式保護隱私。該系統現在限制了麥克風、攝像頭和空閑 app 中所有感測器的訪問。當 app 的 UID 處於空閑時,麥克風和感測器都會停止報告。應用程序所用的攝像會斷開連接,如果應用程序試圖使用攝像頭,會產生錯誤。大多數情況下,這些限制不應該為 app 引入新問題,但是還是建議用戶從你的 app 中刪除這些請求。

Android 9 還允許用戶在獲得 READ_PHONE_STATE 許可權後訪問平台的 build.serial 標識符。需要通過 Build.getSerial() 方法獲得 build.serial 標識符。

相機、音頻、圖像方面的新體驗

多攝像頭 API 和其它拍照更新

使用 Android 9,你現在可以在支持多攝像頭 API 的設備上同時打開來自兩個或更多物理攝像頭的流。在配備兩個前置攝像頭或兩個後置攝像頭的設備上,你可以實現單個攝像頭無法實現的創新功能,例如無縫變焦、散景和立體視覺。API 還允許你調用邏輯或融合的攝像機流,該流可以在兩個或多個攝像機之間自動切換。

相機的其它改進還包括新的會話參數(Session parameters)和表面共享(Surface sharing),前者有助於減少初始捕獲期間的延遲,而後者允許相機客戶端處理各種應用,而無需停止和啟動相機流。谷歌還為基於顯示的 flash support 添加了 API,並為 app 級圖像穩定和特效添加了 OIS 時間戳。

HDR VP9 視頻和 HEIF 圖像壓縮

Android 9 增加了對 HDR VP9 Profile 2 的內置支持,因此你現在可以在支持 HDR 的設備上向用戶提供支持 HDR 的電影。

谷歌將 HEIF ( heic ) 圖像編碼添加到平台中。HEIF 是一種流行的照片格式,它改進了壓縮方式以保存存儲和網路數據。藉助 Android 9 設備上的平台支持,從後端伺服器發送和利用 HEIF 圖像變得很容易。一旦確定你的應用程序與共享和顯示的數據格式兼容,你可以嘗試在應用程序中使用 HEIF 作為圖像的存儲格式。你可以使用 ImageDecoder 或 BitmapFactory 從 jpeg 獲得點陣圖來實現從 jpeg 到 heic 的轉換,並且可以使用 AndroidX 庫中的 HeifWriter 從 YUV 位元組緩衝區、表面或點陣圖寫入 HEIF 靜止圖像。

通過動態處理增強音頻

動態處理 API 允許你使用一種新的音頻效果來隔離特定頻率,降低聲音或增加柔和聲音,以提高 app 的音質。例如,你可以改善在嘈雜環境中說話聲音不明顯的人的聲音。API 還允許你訪問多級、多波段動態處理效果,包括預均衡器、多波段壓縮器、後均衡器和鏈接限制器。

點陣圖和繪圖的圖像解碼器

圖像解碼器(ImageDecoder)API 為你提供了一種將圖像解碼為點陣圖或繪圖的更簡便方法。你從位元組緩衝區、文件或 URI 中創建點陣圖或繪圖。與 BitmapFactory 相比,API 提供了幾個優勢,包括對精確縮放的支持、對物理內存的單步解碼、對解碼後處理的支持以及對動畫圖像的解碼。

連接和定位

用於室內導航的 Wi-Fi RTT

Android 9 可以讓你通過 IEEE 802.11mc Wi-Fi 協議(即 Wi-Fi Round-Trip-Time,RTT)的平台支持構建室內導航功能到你的 app 上。在具備硬體支持、位置許可和位置啟用的 Android 9 設備上,你的 app 可以使用 RTT API 來測量 Wi-Fi 接入點(AP)的距離。設備不需要連接 AP 來使用 RTT,並且為了保護隱私,只有手機可以確定距離,AP 不可以。

如果知道到 3 個或 3 個以上接入點的距離,就可以將設備位置的計算精確到 1 到 2 米。在這種精確度下,設備可以支持建築物內導航等應用;基於定位的細粒度服務,如消歧語音控制(例如「打開此燈」);以及基於定位的信息(例如,「這種產品有特別優惠嗎?」)。

JobScheduler 的數據成本敏感度

JobScheduler 是安卓的中心服務,用於幫助你管理預定的任務或運行 Doze、App Standby 和 Background Limits。在 Android 9 中,JobScheduler 可以為用戶更好地處理網路相關的任務,協調運營商單獨提供的網路狀態。Jobs 現在可以宣布它們估計的數據大小、信號預讀並規定詳細的網路需求——運營商可以報告擁堵或未計量網路。JobScheduler 可根據網路狀態進行管理。例如,當網路擁堵時,JobScheduler 可暫緩大型網路請求。當未計量時,它可運行預讀作業以改善用戶體驗,例如預讀標題。

為 NFC 支付和安全交易開放移動 API

Android 9 添加了 GlobalPlatform Open Mobile API 的一個實現到安卓上。在支持的設備上,app 可以使用 OMAPI API 來訪問安全組件(SE),以允許智能卡支付和其它安全服務。硬體抽象層(HAL)提供潛在的 API 以列舉可用的安全組件種類(eSE、UICC 和其它)。

app 的性能

ART 的性能改善

Android 9 能通過 ART 運行時為所有 app 帶來性能和效率的提升。谷歌已經擴展了 ART 的執行文件使用來優化 app 並減少編譯 app 代碼的內存佔用。ART 現在能使用文件信息進行 DEX 文件的設備上重寫,並在多種流行的 app 中減少 11% 的內存佔用。谷歌期待這些改善能帶來系統 DEX 內存使用的減少,以及更快的 app 啟動時間。

優化 Kotlin

Kotlin 是安卓系統的第一語言,如果你尚未嘗試過,趕緊!谷歌承諾會長期在安卓中使用 Kotlin,並將繼續擴展支持,包括優化 Kotlin 代碼的性能。在 Android 9 中,你將能看到這項工作的首個結果。我們已經改善了多個編譯器的性能,特別是那些目標指向循環語句的,以獲得更優的性能。你僅需要保持 Android Studio 的 Kotlin 插件是最新的,就能獲取所有最新的 Kotlin 性能提升。

此外,谷歌今天也發布了 Android 9-API 29 SDK(rev. 6) 的更新,其中在某些最頻繁使用的 API 中包含空屬性標記。

現代安卓

作為 Android 9 項目的一部分,谷歌的目標是現代化安卓的基礎建設,以及在其上運行的 app。正如去年穀歌所宣布的,Google Play 將在 2018 年 11 月讓所有 app 更新目標 Android Oreo(targetSdkVersion 26 或更高)。據此,如果你的 app 目標指向了早於 Android 4.2(API level 17) 的平台,用戶在那之後安裝它時將看到一個警告對話。

讓你的 app 準備好在 Android 9 中使用

今天,Android 9 將推送給 Pixel 用戶,並且也將在接下來的幾個月推送給其它設備。為此,儘快測試你的 app 的兼容性是很重要的。你只需要從 Google Play 中下載 app 或使用模擬器來運行 Android 9。在你進行這個流程時,確保你的 app 可以運行,並運行良好,即確保設備能適應 Android 9 的變化。

同樣請注意在 app 中使用非 SDK 界面。Android 9 限制了訪問選擇的非 SDK 界面,因此你應該減少對它們的依賴。

在你做了必要的更新後,建議立刻發布更新到 Google Play 上,不要改變 app 的平台目標。這能確保你在使用 Android 9 API 和目標來增強 app 時,獲得 Android 9 的良好用戶體驗,

用 Android 9 的功能和 API 來增強你的 app

當你準備好時,就安裝 Android 9 並在其中使用新的功能和 API 來做開發。

最開始,你需要下載官方 API 28 SDK、最新的工具和模擬器映像到 Android Studio 3.1 中,或者使用 Android Studio 3.2 的最新版本。然後更新你的項目的 compileSdkVersion 和 targetSdkVersion 到 API 28。當你改變目標時,確保你的 app 支持所有合適的行為變化。

一旦準備好了,發布你的 API 更新到 Google Play 上。一個常用的策略是使用 Google Play 的 beta 測試功能以從一小群用戶獲取早期反饋,然後給產品做階段性展示。

進入設備之中

從今天開始,一項 Android 9 的無線更新將開始推送到 Pixel 手機上。並且那些安裝了測試版軟體的設備,包括索尼、小米、HMD Global、Oppo、Vivo、一加和 Essential,以及所有授權的 Android One 設備,將在今年秋末接收到這項更新。我們也正在與一些夥伴合作在今年將設備更新為 Android 9。

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

使用AMD CPU,打造自己的深度學習伺服器
L2正則化和對抗魯棒性的關係

TAG:機器之心 |