今日,谷歌開發(fā)者博客宣布,經(jīng)過 1 年多的開發(fā)和數(shù)月的測試,安卓 9「Pie」將正式面世。本文中,我們將介紹安卓新版本的所有新特點。
今年 5 月份,谷歌 I/O 大會宣布推出安卓 9,而后經(jīng)過數(shù)月的測試,谷歌收獲了大量的反饋。此外,還有小米、Oppo 等 7 家設(shè)備制造商也將測試版本放到了他們的旗艦設(shè)備上,使得谷歌能夠從全球用戶那里收集反饋信息。
今日,谷歌宣布將把安卓 9 的源代碼放到安卓開源項目上(AOSP),開始在所有的谷歌 Piexl 手機上用安卓 9。據(jù)介紹,安卓 9 擁有的機器學(xué)習能力能讓手機變得更智能、便利、個性化。對開發(fā)者而言,安卓 9 包含很多強化 APP 的新方法。
Android 9 包含什么?
以機器學(xué)習為核心的更智能的智能手機
Android 9 能根據(jù)你的喜好自動調(diào)整你的手機,讓它更適合你。從幫助用戶充分利用電池壽命,到任何時刻都能展現(xiàn) app 中最佳部分,只要用戶需要,Android 9 都能讓這一切變得更順暢、更持久。
自適應(yīng)電池(Adaptive Battery)
谷歌與 DeepMind 合作開發(fā)了個名為 Adaptive Battery 的功能,該功能利用機器學(xué)習為用戶最關(guān)心的應(yīng)用優(yōu)化系統(tǒng)資源。如果用戶的 app 針對 Doze、App Standby 或 Background Limits 進行了優(yōu)化,那 Adaptive Battery 可以立即開始運行。
Slice
通過在全屏應(yīng)用體驗之外啟用互動,Slice 可以幫助用戶更快地執(zhí)行任務(wù)。它通過使用 UI 模板來實現(xiàn)這一點,這些模板從谷歌搜索應(yīng)用中顯示豐富、動態(tài)且交互的內(nèi)容,之后還可以在 Google Assistant 等其他地方顯示這些內(nèi)容。
App Actions
App Actions 是一種提高 app 可見度和參與度的新方法。Actions 利用機器學(xué)習的優(yōu)勢,根據(jù) app 的語義內(nèi)容和用戶語境,在合適時間將特定 app 的特定功能以快捷鍵的形式呈現(xiàn)給用戶。
在接下來的幾周,谷歌將分享更多關(guān)于注冊 app 的細節(jié),這樣更多的 app 就可以授權(quán)給 App Actions,進而能響應(yīng)用戶需求并在多個谷歌和安卓界面運行。
文本分類與智能鏈接
谷歌擴展了用于識別內(nèi)容或文本輸入中實體的機器學(xué)習模型,已通過 TextClassifier API 支持更多類型,如日期和航班號。Smart Linkify 可以通過讓 Linkify API 利用 TextClassifer 模型,提供包括快速文本填充選項等操作。Smart Linkify 同時還可以顯著提高檢測精度和性能。
Neural Networks 1.1
安卓 9 中包含了神經(jīng)網(wǎng)絡(luò) API 的新版本,以擴展安卓對設(shè)備上機器學(xué)習加速的支持。具體來說,Neural Networks 1.1 加入了對 9 個新操作的支持——Pad、BatchToSpaceND、SpaceToBatchND、Transpose、Strided Slice、Mean、Div、Sub、Squeeze。通常利用這個 API 的方法是通過 TensorFlow Lite 來進行的。
最大限度地利用你的手機
谷歌宣稱,新版本的安卓系統(tǒng)可以讓你的智能手機變得更加聰明。但更重要的是,隨著科技的發(fā)展,技術(shù)本身將逐漸隱藏在用戶界面背后。在安卓 9 中,谷歌的開發(fā)者們已將 Android 的 UI 轉(zhuǎn)變?yōu)楦唵?、更易于使用的形式——對于開發(fā)人員而言,這些改進有助于改善用戶查找、使用和管理 app 的方式。
新系統(tǒng)導(dǎo)航
Android 9 引入了一個新系統(tǒng)導(dǎo)航,谷歌為此開發(fā)了一年多。新的設(shè)計使安卓的多任務(wù)處理更加簡便,并且更容易發(fā)現(xiàn) app。用戶在手機上向上滑動,就可以查看最近使用的應(yīng)用全屏預(yù)覽,只需點擊就可以跳轉(zhuǎn)回其中一個 app。
Display cutout
現(xiàn)在你的 app 可以通過 Android 9 的顯示切換功能充分利用最新的無邊框屏幕。對于大多數(shù)應(yīng)用來說,系統(tǒng)管理狀態(tài)欄會將內(nèi)容和切換功能分開,所以運行切換功能完全無障礙。如果有沉浸式內(nèi)容,用戶可以使用 display cutout APIs 來檢查位置和切換形狀并發(fā)送全屏請求。為了幫助開發(fā)和測試,谷歌添加了一個 Developer Option,可以在任何設(shè)備上模擬多個 cutout shapes。
帶有沉浸式內(nèi)容的 APP 可以使用顯示切換功能在設(shè)備上全屏顯示。
通知與智能回復(fù)
Android 9 使通知功能能有用且易操作。通知類 app 可以利用新的 MessagingStyle API 來顯示對話、附上照片或標記,甚至還能提供智能回復(fù)。用戶很快就可以利用 ML Kit 為 app 生成回復(fù)建議。
MessagingStyle 通知與對話和智能回復(fù) [左],圖像和標記 [右]。
文本放大
在 Android 9 中,谷歌添加了一個放大鏡部件來提高用戶選擇文本的體驗。放大鏡部件允許用戶通過可拖動窗口查看放大的文本,從而精確定位光標或者文本選擇句柄。用戶可將它添加到任何窗口視圖中,這樣就可以在自定義部件或自定義文本中使用它。除了文本放大,放大鏡部件還可以為任何視圖提供放大功能。
用戶安全及隱私
生物特征提示
隨著一系列用于身份驗證的生物傳感器的使用,不同類型的傳感器和應(yīng)用程序之間的體驗變得更加一致。Android 9 引入了一個系統(tǒng)管理的對話框,提示用戶輸入任何支持的生物認證類型。應(yīng)用程序不再需要構(gòu)建自己的對話框,而是使用生物計量學(xué)提示 API(BiometricPrompt API)來顯示標準系統(tǒng)對話框。除了指紋(包括顯示器內(nèi)傳感器),API 還支持面部和虹膜認證。
如果你的應(yīng)用程序正在繪制自己的指紋驗證對話框,你應(yīng)該盡快切換成使用生物計量學(xué)提示 API。
受保護確認
Android 9 引入了 Android 保護確認系統(tǒng)(Android Protected Confirmation),它使用可信執(zhí)行環(huán)境(TEE)來保證給定的提示字符串被顯示給用戶確認。只有在用戶確認成功后,TEE 才會簽署提示字符串,然后應(yīng)用程序可以驗證該字符串。
加強對密鑰的保護
谷歌添加了 StrongBox 作為一種新的密鑰存儲類型,為在具有獨立 CPU、RAM 和安全閃存的防篡改硬件中提供密鑰存儲的設(shè)備提供 API 支持。你可以設(shè)置密鑰是否應(yīng)該由 KeyGenParameterSpec 中的 StrongBox 安全芯片保護。
通過 TLS 的域名系統(tǒng)
Android 9 通過 TLS 增加了對域名系統(tǒng)(DNS)的內(nèi)置支持,如果網(wǎng)絡(luò)的 DNS 服務(wù)器支持,它會自動將 DNS 查詢升級到 TLS。用戶可以在網(wǎng)絡(luò)和互聯(lián)網(wǎng)設(shè)置中以新的私有 DNS 模式通過 TLS 行為管理 DNS。執(zhí)行自己的 DNS 查詢的應(yīng)用程序可以使用新的 API——link properties . isprivated nsactive() 來檢查 DNS 模式。
默認 HTTPS
作為重要工作的一部分,Android 9 將所有網(wǎng)絡(luò)通信從 cleartext(非加密 HTTP)移動到通過 TLS 加密(HTTPS)的網(wǎng)站,他們將修改默認的網(wǎng)絡(luò)安全配置以阻止所有 cleartext 通信。用戶現(xiàn)在需要通過 TLS 連接,除非明確地選擇特定域的 cleartext。
基于編譯器安全的 Mitigations
在 Android 9 中,谷歌已經(jīng)擴展了編譯器級 mitigations 的使用,并通過危險行為的運行時檢測來強化平臺??刂屏魍暾裕–ontrol Flow Integrity,CFI)技術(shù)有助于防止代碼復(fù)用工具和代碼執(zhí)行。在 Android 9 中,谷歌已經(jīng)極大地擴展了媒體框架和其它安全組件(如 NFC 和藍牙)中對 CFI 的使用。在使用 LLVM 構(gòu)建時,谷歌還在 Android 常用核心中引入了 CFI 核心支持。
此外,谷歌還擴展了整數(shù)溢出錯誤 sanitizers 的使用以緩解內(nèi)存損壞和信息泄漏漏洞等問題。
用戶隱私
Android 9 以多種方式保護隱私。該系統(tǒng)現(xiàn)在限制了麥克風、攝像頭和空閑 app 中所有傳感器的訪問。當 app 的 UID 處于空閑時,麥克風和傳感器都會停止報告。應(yīng)用程序所用的攝像會斷開連接,如果應(yīng)用程序試圖使用攝像頭,會產(chǎn)生錯誤。大多數(shù)情況下,這些限制不應(yīng)該為 app 引入新問題,但是還是建議用戶從你的 app 中刪除這些請求。
Android 9 還允許用戶在獲得 READ_PHONE_STATE 權(quán)限后訪問平臺的 build.serial 標識符。需要通過 Build.getSerial() 方法獲得 build.serial 標識符。
相機、音頻、圖像方面的新體驗
多攝像頭 API 和其它拍照更新
使用 Android 9,你現(xiàn)在可以在支持多攝像頭 API 的設(shè)備上同時打開來自兩個或更多物理攝像頭的流。在配備兩個前置攝像頭或兩個后置攝像頭的設(shè)備上,你可以實現(xiàn)單個攝像頭無法實現(xiàn)的創(chuàng)新功能,例如無縫變焦、散景和立體視覺。API 還允許你調(diào)用邏輯或融合的攝像機流,該流可以在兩個或多個攝像機之間自動切換。
相機的其它改進還包括新的會話參數(shù)(Session parameters)和表面共享(Surface sharing),前者有助于減少初始捕獲期間的延遲,而后者允許相機客戶端處理各種應(yīng)用,而無需停止和啟動相機流。谷歌還為基于顯示的 flash support 添加了 API,并為 app 級圖像穩(wěn)定和特效添加了 OIS 時間戳。
HDR VP9 視頻和 HEIF 圖像壓縮
Android 9 增加了對 HDR VP9 Profile 2 的內(nèi)置支持,因此你現(xiàn)在可以在支持 HDR 的設(shè)備上向用戶提供支持 HDR 的電影。
谷歌將 HEIF ( heic ) 圖像編碼添加到平臺中。HEIF 是一種流行的照片格式,它改進了壓縮方式以保存存儲和網(wǎng)絡(luò)數(shù)據(jù)。借助 Android 9 設(shè)備上的平臺支持,從后端服務(wù)器發(fā)送和利用 HEIF 圖像變得很容易。一旦確定你的應(yīng)用程序與共享和顯示的數(shù)據(jù)格式兼容,你可以嘗試在應(yīng)用程序中使用 HEIF 作為圖像的存儲格式。你可以使用 ImageDecoder 或 BitmapFactory 從 jpeg 獲得位圖來實現(xiàn)從 jpeg 到 heic 的轉(zhuǎn)換,并且可以使用 AndroidX 庫中的 HeifWriter 從 YUV 字節(jié)緩沖區(qū)、表面或位圖寫入 HEIF 靜止圖像。
通過動態(tài)處理增強音頻
動態(tài)處理 API 允許你使用一種新的音頻效果來隔離特定頻率,降低聲音或增加柔和聲音,以提高 app 的音質(zhì)。例如,你可以改善在嘈雜環(huán)境中說話聲音不明顯的人的聲音。API 還允許你訪問多級、多波段動態(tài)處理效果,包括預(yù)均衡器、多波段壓縮器、后均衡器和鏈接限制器。
位圖和繪圖的圖像解碼器
圖像解碼器(ImageDecoder)API 為你提供了一種將圖像解碼為位圖或繪圖的更簡便方法。你從字節(jié)緩沖區(qū)、文件或 URI 中創(chuàng)建位圖或繪圖。與 BitmapFactory 相比,API 提供了幾個優(yōu)勢,包括對精確縮放的支持、對物理內(nèi)存的單步解碼、對解碼后處理的支持以及對動畫圖像的解碼。
連接和定位
用于室內(nèi)導(dǎo)航的 Wi-Fi RTT
Android 9 可以讓你通過 IEEE 802.11mc Wi-Fi 協(xié)議(即 Wi-Fi Round-Trip-Time,RTT)的平臺支持構(gòu)建室內(nèi)導(dǎo)航功能到你的 app 上。在具備硬件支持、位置許可和位置啟用的 Android 9 設(shè)備上,你的 app 可以使用 RTT API 來測量 Wi-Fi 接入點(AP)的距離。設(shè)備不需要連接 AP 來使用 RTT,并且為了保護隱私,只有手機可以確定距離,AP 不可以。
如果知道到 3 個或 3 個以上接入點的距離,就可以將設(shè)備位置的計算精確到 1 到 2 米。在這種精確度下,設(shè)備可以支持建筑物內(nèi)導(dǎo)航等應(yīng)用;基于定位的細粒度服務(wù),如消歧語音控制(例如「打開此燈」);以及基于定位的信息(例如,「這種產(chǎn)品有特別優(yōu)惠嗎?」)。
JobScheduler 的數(shù)據(jù)成本敏感度
JobScheduler 是安卓的中心服務(wù),用于幫助你管理預(yù)定的任務(wù)或運行 Doze、App Standby 和 Background Limits。在 Android 9 中,JobScheduler 可以為用戶更好地處理網(wǎng)絡(luò)相關(guān)的任務(wù),協(xié)調(diào)運營商單獨提供的網(wǎng)絡(luò)狀態(tài)。Jobs 現(xiàn)在可以宣布它們估計的數(shù)據(jù)大小、信號預(yù)讀并規(guī)定詳細的網(wǎng)絡(luò)需求——運營商可以報告擁堵或未計量網(wǎng)絡(luò)。JobScheduler 可根據(jù)網(wǎng)絡(luò)狀態(tài)進行管理。例如,當網(wǎng)絡(luò)擁堵時,JobScheduler 可暫緩大型網(wǎng)絡(luò)請求。當未計量時,它可運行預(yù)讀作業(yè)以改善用戶體驗,例如預(yù)讀標題。
為 NFC 支付和安全交易開放移動 API
Android 9 添加了 GlobalPlatform Open Mobile API 的一個實現(xiàn)到安卓上。在支持的設(shè)備上,app 可以使用 OMAPI API 來訪問安全組件(SE),以允許智能卡支付和其它安全服務(wù)。硬件抽象層(HAL)提供潛在的 API 以列舉可用的安全組件種類(eSE、UICC 和其它)。
app 的性能
ART 的性能改善
Android 9 能通過 ART 運行時為所有 app 帶來性能和效率的提升。谷歌已經(jīng)擴展了 ART 的執(zhí)行文件使用來優(yōu)化 app 并減少編譯 app 代碼的內(nèi)存占用。ART 現(xiàn)在能使用文件信息進行 DEX 文件的設(shè)備上重寫,并在多種流行的 app 中減少 11% 的內(nèi)存占用。谷歌期待這些改善能帶來系統(tǒng) DEX 內(nèi)存使用的減少,以及更快的 app 啟動時間。
優(yōu)化 Kotlin
Kotlin 是安卓系統(tǒng)的第一語言,如果你尚未嘗試過,趕緊!谷歌承諾會長期在安卓中使用 Kotlin,并將繼續(xù)擴展支持,包括優(yōu)化 Kotlin 代碼的性能。在 Android 9 中,你將能看到這項工作的首個結(jié)果。我們已經(jīng)改善了多個編譯器的性能,特別是那些目標指向循環(huán)語句的,以獲得更優(yōu)的性能。你僅需要保持 Android Studio 的 Kotlin 插件是最新的,就能獲取所有最新的 Kotlin 性能提升。
此外,谷歌今天也發(fā)布了 Android 9-API 29 SDK(rev. 6) 的更新,其中在某些最頻繁使用的 API 中包含空屬性標記。
現(xiàn)代安卓
作為 Android 9 項目的一部分,谷歌的目標是現(xiàn)代化安卓的基礎(chǔ)建設(shè),以及在其上運行的 app。正如去年谷歌所宣布的,Google Play 將在 2018 年 11 月讓所有 app 更新目標 Android Oreo(targetSdkVersion 26 或更高)。據(jù)此,如果你的 app 目標指向了早于 Android 4.2(API level 17) 的平臺,用戶在那之后安裝它時將看到一個警告對話。
讓你的 app 準備好在 Android 9 中使用
今天,Android 9 將推送給 Pixel 用戶,并且也將在接下來的幾個月推送給其它設(shè)備。為此,盡快測試你的 app 的兼容性是很重要的。你只需要從 Google Play 中下載 app 或使用模擬器來運行 Android 9。在你進行這個流程時,確保你的 app 可以運行,并運行良好,即確保設(shè)備能適應(yīng) Android 9 的變化。
同樣請注意在 app 中使用非 SDK 界面。Android 9 限制了訪問選擇的非 SDK 界面,因此你應(yīng)該減少對它們的依賴。
在你做了必要的更新后,建議立刻發(fā)布更新到 Google Play 上,不要改變 app 的平臺目標。這能確保你在使用 Android 9 API 和目標來增強 app 時,獲得 Android 9 的良好用戶體驗,
用 Android 9 的功能和 API 來增強你的 app
當你準備好時,就安裝 Android 9 并在其中使用新的功能和 API 來做開發(fā)。
最開始,你需要下載官方 API 28 SDK、最新的工具和模擬器映像到 Android Studio 3.1 中,或者使用 Android Studio 3.2 的最新版本。然后更新你的項目的 compileSdkVersion 和 targetSdkVersion 到 API 28。當你改變目標時,確保你的 app 支持所有合適的行為變化。
一旦準備好了,發(fā)布你的 API 更新到 Google Play 上。一個常用的策略是使用 Google Play 的 beta 測試功能以從一小群用戶獲取早期反饋,然后給產(chǎn)品做階段性展示。
進入設(shè)備之中
從今天開始,一項 Android 9 的無線更新將開始推送到 Pixel 手機上。并且那些安裝了測試版軟件的設(shè)備,包括索尼、小米、HMD Global、Oppo、Vivo、一加和 Essential,以及所有授權(quán)的 Android One 設(shè)備,將在今年秋末接收到這項更新。我們也正在與一些伙伴合作在今年將設(shè)備更新為 Android 9。