Android7.0新特性

定名爲“Nougat”(牛軋糖)。谷歌2016年的 I/O 開發者大會在美西時間2016年5月18-20日召開

Android N 據谷歌介紹,Nougat帶來了250多項新特性。
        Google Assistant  “清除全部”按鈕
        Instant Apps(即時應用)  無縫更新
        Daydream VR支持
        真正的多窗口多任務處理
        捆綁通知
        直接回復通知
        概覽(Overview)按鈕
        夜間模式
        “省流量”模式
        改進的文件瀏覽器
        改進的Java 8語言支持

!!!:
新的Interpreter+JIT+AOT編譯器;
Daydream:一個在移動設備上創建虛擬現實體驗的VR SDK;
Vulkan:一個跨平臺的圖形和計算API。它來自Khronos Group,面向現代GPU;
多窗口:在Nougat上,開發人員可以創建兩個窗口;
藉助Direct Reply,開發人員可以增強通知功能;
改進了在Android Marshmallow 中引入的Doze,當屏幕關閉而設備沒有接通電源時,限制應用程序使用CPU和網絡;
Svelte 進一步降低了後臺運行的應用程序使用的內存。
包含有關“數據流量節省(Data Saver)”、號碼攔截、呼叫顯示、多區域支持、新Emojis、WebView(已迴歸Chrome)、 虛擬文件等特性的詳細信息。

 

1.多窗口模式 (Multi-Window Support)。7.0全新引入,8.0更加豐富,注意不是PicInPic。

        Android N 允許手持設備(智能手機或者平板電腦)同時運行兩個窗口.
一是,用戶可在最近任務的概覽界面,長按支持多窗口模式的應用標題不放,拖拽到屏幕頂部,這時該應用會切換到多窗口模式,屏幕底部繼續顯示其他任務的概覽界面;
二是,如果當前的應用可以支持多窗口模式,長按導航欄的窗口按鈕即可將當前應用切換到多窗口模式.
 

2.通知機制 (Notifications)

        Android 從4.1開始就支持了通知的擴展樣式,也就是我們通常所說的多行通知欄.Android N 可以根據來源將接收到的通知歸攏在一起,而不是像現在這樣四處散落
除此之外,Android N 的通知欄,可以直接對消息進行回覆.

  • 模板更新:我們正在更新通知模板,新強調了英雄形象和化身。開發者將能夠充分利用新模板,只需進行少量的代碼調整。
  • 消息傳遞樣式自定義:您可以自定義更多與您的使用 MessagingStyle 類的通知相關的用戶界面標籤。您可以配置消息、會話標題和內容視圖。
  • 捆綁通知:系統可以將消息組合在一起(例如,按消息主題)並顯示組。用戶可以適當地進行拒絕或歸檔等操作。如果您已實現 Android Wear 的通知,那麼您已經很熟悉此模式。
  • 直接回復:對於實時通信應用,Android 系統支持內聯回覆,以便用戶可以直接在通知界面中快速回復短信。
  • 自定義視圖:兩個新的 API 讓您在通知中使用自定義視圖時可以充分利用系統裝飾元素,如通知標題和操作。

 

3.流量節省程序(Data Saver)

        這是一項新的系統服務,有助於減少應用使用的移動數據網絡,無論是在漫遊,賬單週期即將結束,還是使用少量的預付費數據包。
        Android N中提供了一個全局的流量控制機制,目的自然是爲了防止應用程序在後臺惡意偷跑寶貴的移動流量。這個功能是默認關閉的,一旦開啓之後除了GMS
(Google Mobile Service,谷歌移動服務)外,其他應用都是默認不允許在後臺使用超過前臺所消耗的移動流量。還擴展了ConnectivityManager API 的能力,
        使得應用可以檢測系統是否開啓了流量保護模式。

4.Android 框架中提供部分ICU4J API支持

        ICU4J(International Components for Unicode)是由IBM維護,基於IBM公共許可證分發的免費開源Unicode工具庫,開發者可以使用ICU4J根據各地的風俗
和語言習慣,實現對數字、貨幣、時間、日期、和消息的格式化、解析,對字符串進行大小寫轉換、整理、搜索和排序等功能。

5.開始支持Java 8

        從Android N 開始,開發者可以使用Java 8來編寫應用程序,目前Android N對於Java 8的支持並不全面,但這依然是一個重量級的更新。目前支持以下內容:
默認和靜態接口方法;
Lambda 表達式;
反射及語言相關的API;
公用工具API;
爲了使用Java8同時還需要引入Jack編譯工具鏈,與傳統編譯工具鏈相比的優勢在於全部開源,編譯速度更快。

6.增強多語言支持 (Language and Locale)

        在Android N之前的系統中,多語言的匹配略顯粗暴.

7.更加省電 (Efficiency)隨時隨地低電耗模式..

        在安卓6.0中,安卓引入了新的省電機制Doze,當時針對的場景只是當手機同時處於滅屏以及靜止狀態來減少應用對電量的消耗。

        而在安卓7.0中,谷歌對Doze進行了更多的優化,休眠機制的使用規則和場景有所擴展.
.在 Android 7.0 中,低電耗模式又前進了一步,隨時隨地可以省電。只要屏幕關閉了一段時間,且設備未插入電源,低電耗模式就會對應用使用熟悉的 CPU 和網絡限制。

 

8.系統級電話黑名單功能

在安卓7.0中,谷歌將電話攔截功能變成了一個系統級功能。其它應用可以調用這個攔截名單,但只有個別應用可以寫入,包括撥號應用、默認的短信應用等.
支持在平臺中進行號碼屏蔽,提供框架 API,讓服務提供商可以維護屏蔽的號碼列表。

9,Project Svelte:後臺優化

Project Svelte 在持續改善,以最大程度減少生態系統中一系列 Android 設備中系統和應用使用的 RAM。在 Android 7.0 中,Project Svelte 注重優化在後臺中運行應用的方式。
自 Android 5.0 發佈以來,JobScheduler 已成爲執行後臺工作的首選方式
另一個非常好的選擇是 GCMNetworkManager(Google Play 服務的一部分),其在舊版 Android 中提供類似的作業安排和兼容性。
刪除了三個常用隱式廣播 — CONNECTIVITY_ACTION、ACTION_NEW_PICTURE 和ACTION_NEW_VIDEO — 因爲這些廣播可能會一次喚醒多個應用的後臺進程,同時會耗盡內存和電池。

10,SurfaceView

Android 7.0 可同步移動到 SurfaceView 類,此類在某些情況下提供的電池性能優於 TextureView:在渲染視頻或 3D 內容時,包含滾動和動畫視頻位置的應用在使用 SurfaceView 時比 TextureView 耗電更少。
SurfaceView 類可減少屏幕合成對電池的消耗,因爲它是在專用硬件中合成,與應用窗口內容分隔開。因此,它產生的中間副本少於 TextureView。
現在,SurfaceView 對象的內容位置和包含的應用內容同步更新。這一變化導致的一個結果是,在畫面移動時,SurfaceView 中播放的視頻的簡單的平移或縮放不再在畫面側面產生黑條。
從 Android 7.0 開始,我們強烈建議您使用 SurfaceView 代替 TextureView,以實現省電。

11,配置文件指導的 JIT/AOT 編譯

在 Android 7.0 中,我們添加了即時 (JIT) 編譯器,對 ART 進行代碼分析,讓它可以在應用運行時持續提升 Android 應用的性能。JIT 編譯器對 Android 運行組件當前的 Ahead of Time (AOT) 編譯器進行了補充,有助於提升運行時性能,節省存儲空間,加快應用更新和系統更新速度。
配置文件指導的編譯讓 Android 運行組件能夠根據應用的實際使用以及設備上的情況管理每個應用的 AOT/JIT 編譯。除提升應用的關鍵部分的性能外,配置文件指導的編譯還有助於減少整個 RAM 佔用,包括關聯的二進制文件。
Android 運行組件在管理配置文件指導的編譯時,可最大程度降低對設備電池的影響。

12,Vulkan API

Android 7.0 將一項新的 3D 渲染 API Vulkan™ 集成到平臺中。就像 OpenGL™ ES 一樣,Vulkan 是 3D 圖形和渲染的一項開放標準,由 Khronos Group 維護。
Vulkan 是完全從零開始設計,以最小化驅動器中的 CPU 開銷,並能讓您的應用更直接地控制 GPU 操作。Vulkan 還允許多個線程同時執行工作,如命令緩衝區構建,以獲得更好的並行化。
Vulkan 開發工具和庫都已捲入 Android 7.0DK。它們包括:
標頭
驗證層(調試庫)
SPIR-V 着色程序編譯器
SPIR-V 運行時着色器編譯庫

13,Quick Settings Tile API

 

 

“快速設置”通常用於直接從通知欄顯示關鍵設置和操作,非常簡單。在 Android 7.0 中,我們已擴展“快速設置”的範圍,使其更加有用更方便。

 

13,多語言區域支持,更多語言

 

14,新增的表情符號

 

 

15,WebView

多進程
從 Android 7.0 中的 Chrome 版本 51 開始,WebView 將開發者選項“多進程 WebView”被啓用時.在一個單獨的沙盒進程中運行網頁內容.
Javascript 在頁面加載之前運行
從以 Android 7.0 爲目標平臺的應用開始,JavaScript 上下文會在加載新頁面時重置。

 

 

16,OpenGL™ ES 3.2 API

Android 7.0 添加了框架接口和對 OpenGL ES 3.2 的平臺支持
 

17,Android TV 錄製

Android 7.0 通過新的錄製 API 添加了從 Android TV 輸入服務錄製和播放內容的功能。
 

18,Always on VPN

設備所有者和配置文件所有者可以確保工作應用始終通過指定的 VPN 連接。系統在設備啓動後自動啓動該 VPN。
 

19,無障礙增強功能

Android 7.0 現在針對新的設備設置直接在歡迎屏幕上提供“Vision Settings”。
 

20,直接啓動

直接啓動可以縮短設備啓動時間,讓註冊的應用具有有限的功能,即使在意外重啓後。
 

21,密鑰認證

Android 7.0 引入密鑰認證,這是一個新的安全工具,可幫助您確保設備的硬件支持的密鑰庫中存儲的密鑰對適當保護您的應用使用的敏感信息。
 

22,APK signature scheme v2

Android 7.0 引入一項新的應用簽名方案 APK Signature Scheme v2,它能提供更快的應用安裝時間和更多針對未授權 APK 文件更改的保護。
在默認情況下,Android Studio 2.2 和 Android Plugin for Gradle 2.2 會使用 APK Signature Scheme v2 和傳統簽名方案來簽署您的應用。。最佳的實踐是,打包時同時打開v1,v2兩種模式,這樣低版本可以使用低版本,高版本可以使用更好的v2.

  android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }

 

23,虛擬文件

在較早的 Android 版本中,您的應用可以使用存儲訪問框架來允許用戶從他們的雲存儲帳戶中選擇文件,如 Google Drive。但是,不能表示沒有直接字節碼錶示的文件;每個文件都必須提供一個輸入流。

 

 

系統權限更改

爲了提高私有文件的安全性,面向 Android 7.0 或更高版本的應用私有目錄被限制訪問 (0700)。此設置可防止私有文件的元數據泄漏,如它們的大小或存在性。此權限更改有多重副作用:

  • 私有文件的文件權限不應再由所有者放寬,爲使用 MODE_WORLD_READABLE 和/或 MODE_WORLD_WRITEABLE 而進行的此類嘗試將觸發 SecurityException

    :迄今爲止,這種限制尚不能完全執行。應用仍可能使用原生 API 或 File API 來修改它們的私有目錄權限。但是,我們強烈反對放寬私有目錄的權限。

在應用間共享文件(Uri共享地址)

對於面向 Android 7.0 的應用,Android 框架執行的 StrictMode API 政策禁止在您的應用外部公開 file:// URI。如果一項包含文件 URI 的 intent 離開您的應用,則應用出現故障,並出現 FileUriExposedException 異常。
要在應用間共享文件,您應發送一項 content:// URI,並授予 URI 臨時訪問權限。
想目前常用的發送 Intent 進行拍照圖片選擇,Intent 進行下載apk的安裝,在這裏都會報送異常。

屏幕縮放

Android 7.0 支持用戶設置顯示尺寸,以放大或縮小屏幕上的所有元素,從而提升設備對視力不佳用戶的可訪問性。

NDK 應用鏈接至平臺庫

從 Android 7.0 開始,系統將阻止應用動態鏈接非公開 NDK 庫,這種庫可能會導致您的應用崩潰。此行爲變更旨在爲跨平臺更新和不同設備提供統一的應用體驗。即使您的代碼可能不會鏈接私有庫,但您的應用中的第三方靜態庫可能會這麼做。因此,所有開發者都應進行相應檢查,確保他們的應用不會在運行 Android 7.0 的設備上崩潰。如果您的應用使用原生代碼,則只能使用公開 NDK API
.mk編譯時,編譯爲私有庫:   

LOCAL_LDLIBS := -lfoo:= -lfoo

 

名爲 Crypto 的 JCA 提供程序已棄用,因爲它僅有的 SHA1PRNG 算法爲弱加密。應用無法再使用 SHA1PRNG(不安全地)派生密鑰。

org.apache不支持問題:
defaultConfig{
        useLibrary 'org.apache.http.legacy'
}

SharedPreferences閃退,不再支持多應用多進程模式
//MODE_WORLD_READABLE
改使用 MODE_PRIVATE

 

發佈了154 篇原創文章 · 獲贊 123 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章