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