Android P 開發者預覽版首發!

在上週的世界移動通訊大會 (Mobile World Congress) 上,咱們看到由開發者、設備廠商以及芯片合做夥伴組成的 Android 生態系統不斷爲全球用戶創造美妙體驗。android

今天,咱們要向各位介紹下一個版本的操做系統 —— Android P 的首個開發者預覽版。該版本早期僅面向開發者發佈,每一位開發者都是咱們最信任的測評人。及時獲取您的反饋意見對咱們相當重要,咱們會根據您的反饋優化平臺來更好地知足您的開發需求。但願您能夠儘早着手試用 Android P 預覽版的新功能和新 API,並把您的想法和建議經過留言的方式及時告訴咱們。安全

預覽版的首發只是第一步 —— 咱們在五月的 Google I/O 大會上將會有更多的分享,敬請關注!網絡

值得在您的應用中嘗試的新功能

這裏簡要介紹一下這個開發者預覽版中幾項有趣的新功能,同時咱們但願你們嘗試後提供反饋。框架

使用 WiFi RTT 進行室內定位機器學習

精確室內定位一直是應用開發者面臨的一個長期挑戰,但它爲定位服務提供了新的機會。Android P 爲 IEEE 802.11mc WiFi 協議添加了平臺支持 (也稱爲 WiFi 往返時間,RTT),這可讓您在應用中使用室內定位。ide

擁有硬件支持的 Android P 設備可讓您的應用使用 RTT API 測量與附近 WiFi 接入點 (AP) 的距離,設備不須要鏈接到 AP 即可以使用 RTT。爲了保持隱私,只有手機可以肯定距離,AP 沒法作到這一點。工具

經過測量從設備到三個或更多 AP 的距離,您能夠以 1 到 2 米的精度肯定設備位置。這種精確度容許您建立更多新的體驗:室內導航、基於位置的細粒度服務,例如,模糊語音控制 ( "打開這裏的燈" ) ;基於位置的資訊服務 ( "這些優惠是針對這個產品的嗎?" )。佈局

凹口屏幕的支持性能

如今應用能夠充分利用最新的全面屏設備來展現內容。咱們在 Android 平臺加入了對凹口屏幕的支持,並提供 API 供您使用,從而管理內容展現方式。學習

本功能能夠在應用中無縫工做,系統會管理狀態欄的高度從而將您的內容與裁切區域分開。若是您擁有重要的沉浸式內容,則還可使用新的 API 查看裁切形狀並建立全屏佈局。您能夠調用 getDisplayCutout() 來判斷本地設備是否具備凹口屏幕,而後再肯定裁切區域的位置和形狀。平臺添加了一個新的窗口布局屬性 layoutInDisplayCutoutMode 讓您告訴系統如何以及什麼時候將您的內容相對於裁剪區域進行佈局。

咱們加入開發者選項來模擬任意設備上的裁切畫面,從而簡化凹口屏幕支持在您應用上的構建以及測試流程。咱們建議您針對畫面裁切功能進行應用測試以確保內容顯示無誤。

                    △ 內含沉浸式內容的應用可使用帶裁切區域的全屏顯示功能。

消息通知的改進

在 Android P 中,咱們特別重視改進通知的可視性和功能性。全新的 MessagingStyle 通知突出強調了來信人以及您可採用的回覆方式。您能夠顯示對話,附加照片和表情,甚至使用智能回覆。具體細節請查看文末相關連接。

△ 在 MessagingStyle 通知中,您能夠顯示對話和智能回覆 (左圖),甚至添加圖片和表情 (右圖)。

多攝像頭 API

如今,在運行 Android P 的設備上您能夠經過兩個或更多實體攝像頭同時訪問視頻流。因此您能夠在具備雙前置或雙後置攝像頭的設備上,實現單攝像頭沒法實現的創新功能:如無縫變焦、散景和立體視覺。該 API 還容許您調用能夠在兩臺或更多臺攝像頭之間自動切換的邏輯或混合攝像頭視頻流。支持多攝像頭的 Android P 設備將在將來一年面市,咱們期待您的使人振奮的新創意。

攝像頭的其餘改進還包括:利用新的會話參數來有效減小初始捕捉時的延遲,表面共享技術讓攝像頭客戶端無須重啓視頻流即可處理各類使用狀況。此外,咱們還添加了基於顯示器的閃光燈支持以及 API 和 OIS 時間戳的訪問權限,以實現應用層面的圖像穩定和特效。

用於位圖和 drawable 的 ImageDecoder

Android P 引入了一種更簡單的方法來將圖像解碼爲位圖或 drawable,即用 ImageDecoder 替代了 BitmapFactory。ImageDecoder 容許您從字節緩衝區、文件或 URI 建立位圖或 drawable。它比 BitmapFactory 多出了幾個優點,包括對精確縮放的支持,單步解碼至硬件存儲器,對解碼後處理的支持,以及對動畫圖像的解碼。

經過調用 setResize() 時指定目標尺寸,您能夠解碼並縮放到一個確切的大小。您還能夠調用 getSampledSize() 以特定採樣率獲取圖像尺寸,而後縮放到這些尺寸。若是您想要對圖像進行後期處理 (例如應用圓角蒙版或更復雜的效果) ,您能夠給 ImageDecoder 傳遞任何 android.graphics.PostProcessor。您也可使用 ImageDecoder.decodeDrawable() 直接建立 drawable。若是編碼圖像是動畫 GIF 或 WebP,則返回的 drawable 是新加入的 AnimatedImageDrawable 的一個實例。

HDR VP9 視頻、HEIF 以及媒體 APIs

Android P 增長了對 HDR VP9 Profile 2 的內置支持。如今,您能夠在支持 HDR 的設備上,把啓用 HDR 功能的視頻內容從 YouTube、Play Movies 等資源站點上分享給您的用戶。咱們還添加了對 HEIF 圖像編碼的支持,這種格式被普遍使用,改善了照片壓縮效果,並減小了所需的存儲空間和網絡流量。一旦肯定您的應用與該數據格式兼容,可用於分享或者顯示,不妨嘗試利用 HEIF 爲圖像儲存的格式。此外,您還能夠經過 ImageDecoder 和 Bitmap Factory 將 jpeg 文件轉化爲 heic 文件,從 jpeg 文件中獲取位圖。您亦可以使用新支持庫 alpha 版本中的 HeifWriter,從字 YUV 節緩衝區、表面以及位圖中寫入 HEIF 靜態圖像。

同時,咱們也正在增強和重構媒體 API,以使它們更易於開發和整合,請留意今年晚些時候更具體的發佈內容。

JobScheduler 中的數據費用敏感度

JobScheduler 是 Android 的核心服務,幫助您在Doze、App Standby 和 Background Limits 狀態更改時,更好地管理定時任務及工做。在 Android P 中,JobScheduler 能夠更好地爲用戶處理與網絡相關的任務,並與運營商單獨提供的網絡狀態信號相協調。

任務如今能夠聲明其估計的數據大小、信號預取以及指定詳細的網絡要求 —— 運營商能夠報告網絡情況是擁塞仍是不計量,而後,JobScheduler 會根據網絡狀態管理工做。例如,當網絡擁塞時,JobScheduler 可能推遲大型網絡請求。而在網絡能夠不計量使用時,則能夠運行多種預加載做業 (例如,預讀標題) 來改進用戶體驗。

添加任務時,嘗試使用 setEstimatedNetworkBytes()、setIsPrefetch() 和 setRequiredNetwork() 來幫助 JobScheduler 妥善處理工做。執行做業時,請務必使用 JobParameters.getNetwork() 返回的 Network 對象,不然您將隱式地使用設備的默認網絡,該網絡可能不符合您的要求,從而致使意外的數據使用。

神經網絡 API 1.1

咱們在 Android 8.1 中引入了神經網絡 API ,以加速 Android 上設備內置的機器學習。在 Android P 中,咱們對這個 API 進行了擴展和改進,增長了對 9 個新操做的支持,它們分別是 Pad、BatchToSpaceND、SpaceToBatchND、Transpose、Strided Slice、Mean、Div、Sub 和 Squeeze。若是您擁有 Pixel 2 設備,則 DP1 版本如今包含一個帶加速的 Qualcomm Hexagon HVX 驅動程序,可用於量化模型。

自動填充的改進

在 Android P 中,咱們繼續根據用戶和開發者的反饋改進自動填充框架。除了主要的 Bug 修正以外,此版本還包含新的 API,容許密碼管理程序 (Password Manager) 改進 Autofill 用戶體驗,例如更好的數據集過濾,輸入清理和兼容模式。尤爲值得一提的是,兼容性模式對用戶體驗做出了很大的改善,由於在尚未徹底自動填充支持的應用程序中它容許密碼管理員採用基於輔助功能的方法,而且不會對性能或安全性形成影響。 全部新功能的詳細信息請查看文末相關連接。

用於 NFC 支付和安全交易的 Open Mobile API

Android P 將 GlobalPlatform Open Mobile API 的實現添加到 Android 中。在支持的設備上,應用可使用 OMAPI API 訪問 Android 設備上的安全元素 (SE) ,以啓用智能卡支付等安全服務。硬件抽象層 (HAL) 提供了必要的 API,用於枚舉多種可用的 SE (如 eSE,、UICC 等) 。

不斷增強 Android 的基礎

在 Android P 中,咱們將一如既往地致力於把 Android 打形成爲最佳的開發平臺。

應用安全

在 Android P 中,咱們正在轉向更一致的用戶界面 (UI),以便跨應用和設備進行指紋驗證。Android 如今提供了一個標準系統對話框,以提示用戶觸摸指紋傳感器,而且在文案和位置管理方面會根據不一樣的設備作相應的匹配。同時,應用可使用新的 FingerprintDialog API 觸發系統指紋對話框。咱們建議您儘快切換到這個新的系統對話框。

咱們一直致力於將全部網絡流量從明文 (未加密的 HTTP) 轉向 TLS,咱們還將更改網絡安全性配置 (Network Security Configuration) 的默認值,以阻止全部明文流量。若是您正在使用網絡安全性配置,請經過 TLS 創建鏈接,除非您明確選擇在特定域名使用明文傳輸。

用戶隱私

爲了更好地保證隱私,Android P 限制全部處於空閒狀態的應用對話筒、攝像頭和全部 SensorManager 傳感器的訪問。當一個應用的 UID 空閒時,麥克風將會報告系統 「無音頻信號」,傳感器將會中止報告事件。應用使用的攝像頭也會斷開鏈接,若是應用嘗試使用它們,則會生成錯誤。在大多數狀況下,這些限制不會爲現有應用帶來新的問題,但咱們仍然建議您從應用中移除此類傳感器請求。

從長遠來看,咱們正在努力爲每一個網絡中對應的 MAC 地址隨機化提供支持。 在有支持的 Android P 設備上,您能夠經過新的開發者選項啓用此功能的實驗版,以進行測試。

Android P 還讓用戶控制是否容許訪問平臺 build.serial 識別碼 (它被放在 READ_PHONE_STATE 權限裏) 。自 Android 8.0 以來,直接訪問此識別碼的功能已被棄用。想要訪問 build.serial 識別碼的話,您可使用 Build.getSerial() 方法。

ART 性能提高

咱們將繼續致力於經過 ART 運行時改善應用性能和效率提高。咱們擴展了 ART 對執行配置文件的使用,以優化應用並減小已編譯應用代碼的內存佔用量。ART 現可以使用配置文件信息在設備上重寫 DEX 文件,在多我的氣的應用中內存佔用減小高達 11%。咱們指望這樣藉此減小系統 DEX 內存使用量並加快應用啓動時間。

Kotlin 優化

Kotlin 以經成爲一流的 Android 開發語言。 若是您還何嘗試,還在等什麼呢?咱們還在 Kotlin 性能方面進行長期投入,同時繼續加大對 Kotlin 的支持,包括優化 Kotlin 代碼性能。在 Android P 中,您會看到這項工做的第一個成果:咱們已經改進了一些編譯器優化,尤爲是那些針對循環的編譯器優化,以實現更好的性能。咱們還將繼續與 JetBrains 合做,優化 Kotlin 生成的代碼。只需保持更新 Android Studio 上的 Kotlin 插件,您就能得到全部最新的 Kotlin 性能更新。

電耗優化

在 Android P 中咱們繼續優化 Doze、App 待命模式以及後臺限制,進一步改善電池壽命。請務必以這些模式爲應用進行測試並分享反饋。

針對現代 Android

Android P 由咱們的長期戰略所塑造,以實現 Android 平臺基礎和運行在其上的應用的現代化。正如咱們最近宣佈的那樣 ,Google Play 將要求全部應用在 2018 年 11 月以前針對 Android Oreo (targetSdkVersion 26 或更高版本) 進行更新,並支持將在 2019 年提供 64 位支持。

在作出這些改變的同時,Android P 將在安裝針對 Android 4.2 以前的平臺 (targetSdkVersion 小於17) 的應用時經過對話框向用戶發出警告,將來平臺將會繼續提升版本下限。咱們鼓勵每個 Android 開發者如今就着手計劃遷移至 API 26,並儘快開始遷移工做。咱們期待着您的應用可以充分利用現代 Android,併爲用戶帶來更好的體驗。

經過公開 API 加強應用兼容性

用戶和開發者面臨的一個關鍵問題是應用兼容性 —— 確保應用從一開始就支持新平臺,並讓用戶遠離崩潰風險,以及開發者再也不須要針對兼容性問題作緊急更新。從 SDK 到 NDK 都使用 Android 公開 API 的應用擁有較好的兼容性,而使用私有 Android 接口和庫的應用則兼容性較差。

所以,隨着 Android P 的到來,咱們開始逐步限制對特定非 SDK 接口的訪問權限,並要求開發者 (包括 Google 內部的應用團隊) 使用公開 API 裏的替代接口。若是您沒有公開的替代接口可用,請在文章下方留言 "【無公開 API 替代接口】+ 問題描述 ",咱們但願確保開發者儘可能流暢地走完這個過程,因此咱們會根據您的反饋,確保新版本發佈時隻影響那些能夠輕鬆被開發者遷移到公共替代接口的 API。

簡單幾步開始使用

首先, 使您的應用兼容,讓您的用戶無縫過渡到 Android P。只需下載設備系統映像或模擬器系統映像,安裝您當前的應用並測試。您的應用應該可以流暢運行,並妥善處理應用行爲變更。在作出必要更新後,咱們建議您當即發佈到 Google Play,沒必要更改應用的平臺版本。

請記住,您不需要擁有受支持的 Pixel 設備便可針對 Android P 進行測試或開發。對於大多數狀況,咱們強烈建議在 Android 模擬器上設置 Android 虛擬設備做爲測試環境。若是您最近沒有嘗試過模擬器,請務必試試。您會發現它速度很是快,能夠在 6 秒內啓動,使用方便,甚至能夠模擬下一代屏幕。例如,長屏幕和帶攝像頭裁切區域的異型全面屏。

接下來, 將您應用的目標平臺更改成 "P",並使用完整的 Android P 體驗運行。將應用的 targetSdkVersion 設置爲 "P" 和 compileSdkVersion 設置爲 "android-P",構建並測試。請務必閱讀針對 P 的應用行爲變動,以查找您想要測試並可能須要調整的地方。

                           

準備就緒後,深刻 Android P 並瞭解在您的應用中可以使用的諸多新功能和 API 。爲了更方便地探索新的 API,請查看 API 差別報告以及 Android P API 參考。有關預覽版的時間線和支持資源的詳細信息,請查看文末 "Android P 開發者預覽版" 連接。

要開始圍繞 Android P 進行開發工做,請將 P Developer Preview SDK 和工具下載到 Android Studio 3.1 或使用最新的 Android Studio 3.2 Canary 版本。此外,咱們還會發布 28.0.0 支持庫的 alpha 版本供您試用。

接下來會有什麼?

本次推出的 Android P 開發者預覽版包含一個帶有系統映像的更新 SDK,用於在官方 Android 模擬器、Pixel、Pixel XL、Pixel 2 和 Pixel 2 XL 設備上進行測試。

咱們計劃在整個預覽階段中按期更新預覽系統映像和 SDK。此初始版本僅供開發者使用,不適用於平常或終端用戶,所以僅限手動下載和安裝 (請查看文末 "Android P 開發者預覽版" 連接)。

隨着咱們逐步接近推出最終產品,也將會邀請消費者前來嘗試,屆時咱們將經過 Android Beta 開放註冊。請繼續關注咱們發佈的細節,但請注意,Android Beta 目前不適用於 Android P。

您的反饋意見對咱們來講很是重要,因此熱切歡迎您留言聯繫咱們,分享您的想法、建議或問題。

                                      

相關文章
相關標籤/搜索