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