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