做者:Redyan, 騰訊移動客戶端開發工程師html
商業轉載請聯繫騰訊WeTest得到受權,非商業轉載請註明出處。 java
原文連接:http://wetest.qq.com/lab/view/288.htmlandroid
導語安全
8月22日,谷歌正式推送Android 7.0 Nougat(牛軋糖)正式版,首發推送了多款Nexus設備。除了修復常規BUG,Android 7.0還新增了分屏、新的Notification、VR支持等新特性。網絡
8月22日,谷歌正式推送Android 7.0 Nougat(牛軋糖)正式版,他們還會三個月一次推送開發版,而曝光的消息看,第一個開發版就是Android 7.1,Android N主要新增瞭如下的新特性和優化。框架
1、新的Notification工具
Android N 增長了許多新的notifications API,進行了從新的設計,引入了新的風格。性能
● 模板更新:開發者將可以充分利用新模板,只需進行少許的代碼調整。開發工具
● 消息樣式自定義:能夠自定義更多與使用MessageStyle類的通知相關的用戶界面標籤。能夠配置消息、會話標題和內容視圖。字體
● 捆綁通知:系統能夠將消息組合在一塊兒(例如,按消息主題)並顯示組。用戶能夠適當地進行 Dismiss 或 Archive 等操做。
● 直接回復:對於實時通訊應用,Android 系統支持內聯回覆,以便用戶能夠直接在通知界面中快速回復短信。
● 自定義視圖:兩個新的 API ,在通知中使用自定義視圖時能夠充分利用系統裝飾元素,如通知標題和操做。
2、多窗口支持(分屏模式)
運行 Android N 的手機和平板電腦上,用戶能夠並排運行兩個應用,或者處於分屏模式時一個應用位於另外一個應用之上。用戶能夠經過拖動兩個應用之間的分隔線來調整應用。在Android TV 設備上,應用能夠將自身置於畫中畫模式,從而讓它們能夠在用戶瀏覽或與其餘應用交互時繼續顯示內容。
3、Quick Settings Tile API
「快速設置」一般用於直接從通知欄顯示關鍵設置和操做,很是簡單。在 Android N中,已擴展「快速設置」的範圍,使其更加有用更方便。爲額外的「快速設置」圖塊添加了更多空間,用戶能夠經過向左或向右滑動跨分頁的顯示區域訪問它們。 還讓用戶能夠控制顯示哪些「快速設置」圖塊以及顯示的位置 — 用戶能夠經過拖放圖塊來添加或移動圖塊。
對於開發者,Android N 還添加了一個新的 API,從而能夠定義本身的「快速設置」圖塊,使用戶能夠輕鬆訪問應用中的關鍵控件和操做。
4、快速的應用安裝路徑
Android 運行組件的 JIT 編譯器最實際的好處之一是應用安裝和系統更新的速度。即便在Android 6.0 中須要幾分鐘進行優化和安裝的大型應用,如今只需幾秒鐘就能夠完成安裝。系統更新也變得更快,由於省去了優化步驟。
5、隨時隨地低電耗模式
在 Android N 中,低電耗模式又前進了一步,隨時隨地能夠省電。只要屏幕關閉了一段時間,且設備未插入電源,低電耗模式就會對應用使用熟悉的 CPU 和網絡限制。這意味着用戶即便將設備放入口袋裏也能夠省電。
6、Project Svelte:後臺優化
Project Svelte在持續改善,以最大程度減小生態系統中一系列 Android 設備中系統和應用使用的 RAM。在 Android N 中,Project Svelte 注重優化在後臺中運行應用的方式。
後臺處理是大多數應用的一個重要部分。處理得當,可實現很是棒的用戶體驗—即時、快速和情境感知。若是處理不得當,後臺處理會毫無必要地消耗 RAM和電池,同時影響其餘應用的系統性能。
Android N 刪除了三項隱式廣播(CONNECTIVITY_ACTION、ACTION_NEW_PICTURE 和ACTION_NEW_VIDEO),以幫助優化內存使用和電量消耗。此項變動頗有必要,由於隱式廣播會在後臺頻繁啓動已註冊偵聽這些廣播的應用,刪除這些廣播能夠顯著提高設備性能和用戶體驗。
移動設備會經歷頻繁的鏈接變動,例如在 Wi-Fi 和移動數據之間切換時。目前,能夠經過在應用清單文件中註冊一個接收器來偵聽隱式 CONNECTIVITY_ACTION廣播,讓應用可以監控這些變動。因爲不少應用會註冊接收此廣播,所以單次網絡切換即會致使全部應用被喚醒並同時處理此廣播。同理,應用能夠註冊接收來自其餘應用(例如相機)的隱式ACTION_NEW_PICTURE 和ACTION_NEW_VIDEO 廣播。當用戶使用相機應用拍攝照片時,這些應用即會被喚醒處理廣播。
爲減緩這些問題,Android N應用瞭如下優化措施:
一、面向 Android N 開發的應用不會收到 CONNECTIVITY_ACTION 廣播,即便它們已有清單條目來請求接受這些事件的通知。在前臺運行的應用若是使用BroadcastReceiver請求接收通知,則仍能夠在主線程中偵聽CONNECTIVITY_CHANGE。
二、 應用沒法發送或接收 ACTION_NEW_PICTURE 和ACTION_NEW_VIDEO廣播。此項優化會影響全部應用,而不只僅是面向 Android N 的應用。
將來的 Android 版本還可能會棄用其餘隱式廣播以及未綁定的後臺服務。有鑑於此,應避免依賴在清單文件中聲明的接收器來偵聽隱式廣播或刪除此依賴關係,以及避免或刪除對後臺服務的依賴關係。
Android 框架提供多種解決方案來下降這些隱式廣播或後臺服務的必要性。例如,JobScheduler API 提供了一個穩健可靠的機制來安排知足指定條件(例如連入不按流量計費的網絡)時所執行的網絡操做。甚至可使用JobScheduler來響應內容提供程序所發生的變動。
7、Data Saver
在移動設備的整個生命週期,蜂窩數據計劃的成本一般會超出設備自己的成本。對於許多用戶而言,蜂窩數據是他們想要節省的昂貴資源。
Android N推出了Data Saver模式,這是一項新的系統服務,有助於減小應用使用的蜂窩數據,不管是在漫遊,帳單週期即將結束,仍是使用少許的預付費數據包。 Data Saver讓用戶能夠控制應用使用蜂窩數據的方式,同時讓開發者打開Data Saver時能夠提供更多有效的服務。
8、Vulkan API
Android N 將一項新的 3D 渲染 API Vulkan™ 集成到平臺中。就像 OpenGL™ ES 同樣,Vulkan是 3D 圖形和渲染的一項開放標準,由Khronos Group 維護。
Vulkan是徹底從零開始設計,以最小化驅動器中的 CPU 開銷,並能讓應用更直接地控制 GPU 操做。Vulkan還容許多個線程同時執行工做,如命令緩衝區構建,以得到更好的並行化。
Vulkan開發工具和庫都已捲入Android NDK。它們包括:
● 頭
● 驗證層(調試庫)
● SPIR-V 着色程序編譯器
● SPIR-V 運行時着色器編譯庫
● Vulkan僅適用於已啓用Vulkan硬件的設備上的應用,如 Nexus 5X、Nexus 6P 和Nexus Player。
9、號碼屏蔽
Android N 如今支持在平臺中進行號碼屏蔽,提供框架 API,讓服務提供商能夠維護屏蔽的號碼列表。默認短信應用、默認手機應用和提供商應用能夠對屏蔽的號碼列表進行讀取和寫入操做,其餘應用則沒法訪問此列表。
10、來電過濾
Android N 容許默認的手機應用過濾來電。手機應用執行此操做的方式是實現新的CallScreeningService,該方法容許手機應用基於來電的Call.Details執行大量操做,例如:
● 拒絕來電
● 不容許來電到達通話記錄
● 不向用戶顯示來電通知
11、多區域設置支持、多語言
Android N 如今容許用戶在設置中選擇多個區域設置,以更好地支持雙語用例。應用可使用新的 API 獲取用戶選擇的區域設置,而後爲多區域設置用戶提供更成熟的用戶體驗,如以多個語言顯示搜索結果,而且不會以用戶瞭解的語言翻譯網頁。
除多區域設置支持外,Android N 還擴展了用戶可用的語言範圍。它針對經常使用語言提供超過 25種的變體,如英語、西班牙語、法語和阿拉伯語。它還針對 100 多種新語言添加了部分支持。
應用能夠經過調用 LocaleList.GetDefault() 獲取用戶設置的區域設置列表。 爲支持擴展的區域設置數量,Android N 正在改變其解析資源的方式。
12、新增的表情符號
Android N引入更多表情符號和表情符號相關功能,包括膚色表情符號和支持變量選擇符。若是應用支持表情符號,請遵循如下準則,以便能充分利用這些表情符號相關功能優點。
● 在插入以前,檢查設備是否包含表情符號。若要檢查系統字體中有哪些表情符號,使用hasGlyph(String) 方法。
● 檢查表情符號是否支持變量選擇符。變量選擇符可以呈現一些彩色或黑白的表情符號。在移動設備上,應用應呈現彩色的表情符號,而不是黑白的。可是,若是應用顯示嵌入在文本中的表情符號,那應使用黑白變量。若要肯定表情符號是否有變量,使用變量選擇符。如需有關支持變量的字符的完整清單,請參閱變量的 Unicode 文檔中的表情符號變量序列部分。
● 檢查表情符號是否支持膚色。Android N容許用戶按照他們的喜愛修改表情符號呈現的膚色。鍵盤應用應爲有多個膚色的表情符號提供可視化的指示,並應容許用戶選擇他們喜歡的膚色。若要肯定哪些系統表情符號有膚色修改器,使用hasGlyph(String) 方法。能夠經過讀取Unicode 文檔來肯定哪些表情符號使用膚色。
十3、Android 中的 ICU4J API
ICU4J 是一個普遍使用的開源 Java 庫集合,爲軟件應用提供 Unicode 和全球化支持。Android N 在android.icu軟件包下顯示 Android 框架中的 ICU4J API 子集,供應用開發者使用。遷移很簡單,主要是須要從com.java.icu命名空間更改成android.icu。若是已在應用中使用 ICU4J 捆綁包,切換到 Android 框架中提供的android.icu API 能夠大量節省 APK 大小。
十4、OpenGL™ ES 3.2 API
Android N 添加了框架接口和對 OpenGL ES 3.2 的平臺支持,包括:
● 來自 Android 擴展包 (AEP) 的全部擴展(EXT_texture_sRGB_decode除外)。
● 針對 HDR 的浮點幀緩衝和延遲着色。
● BaseVertex繪圖調用可實現更好的批處理和流媒體服務。
● 強大的緩衝區訪問控制可減小WebGL開銷。
十5、VR 支持(面向Android的 Google VR SDK)
Android N 添加了新的VR 模式的平臺支持和優化,以使開發者能爲用戶打造高質量移動 VR體驗。新版針對開發者提供了大量性能加強特性,包括單一緩衝區渲染以及容許 VR 應用訪問某個專屬的CPU 核心。在應用中,能夠享受到專爲 VR 設計的平滑頭部跟蹤和立體聲通知功能。
十6、無障礙加強功能(API參考 android.accessibilityservice.GestureDescription)
Android N 如今針對新的設備設置直接在歡迎屏幕上提供「Vision Settings」。這使用戶能夠更容易發現和配置他們設備上的無障礙功能,包括放大手勢、字體大小、顯示屏尺寸和TalkBack。
十7、密鑰認證
使用硬件支持的密鑰庫,可更安全地在 Android 設備上建立、存儲和使用加密密鑰。它們可保護密鑰免受 Linux 內核、潛在的 Android 漏洞的攻擊,也可防止從已取得根權限的設備提取密鑰。
爲了讓硬件支持的密鑰庫使用起來更簡單和更安全,Android N 引入了密鑰認證。應用和關閉的設備可以使用密鑰認證以堅定地肯定 RSA 或 EC 密鑰對是否受硬件支持、密鑰對的屬性如何,以及其使用和有效性有何限制。
應用和關閉的設備服務能夠經過 X.509 認證證書(必須由有效的認證密鑰簽署)請求有關密鑰對的信息。認證密鑰是一個 ECDSA 簽署密鑰,其在出廠時被注入設備的硬件支持的密鑰庫。所以,有效的認證密鑰簽署的認證證書可確認硬件支持的密鑰庫是否存在,以及該密鑰庫中密鑰對的詳細信息。
爲確保設備使用安全的官方 Android 出廠映像,密鑰認證要求設備 bootloader向可信執行環境(TEE)提供如下信息:
設備上安裝的操做系統版本和補丁級別
● 驗證的啓動公鑰和鎖定狀態。
● 除密鑰認證外,Android N 還推出了指紋綁定密鑰,在指紋註冊時不會撤銷。
另外新增特性還有直接啓動、打印服務加強、持續性能 API、做用域目錄訪問、鍵盤快捷鍵輔助工具等。
Android 7.0諸多新特性,如何馬上體驗?
騰訊WeTest 雲真機上已經有多部Android 7.0手機能夠選擇,讓您在網頁端流暢控制雲端手機。點擊:http://wetest.qq.com/cloud/phone/step2?test=remote 便可當即體驗!