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