Android系統版本特性與差別

[toc] 前幾天,Android I/O大會在上海舉辦,Google中國在B站上傳了一個Android開發最新技術概覽的視頻,裏面講解到了Android 十、Jetpack、Android Studio等新技術和黑科技,忽然發現本身不太瞭解各個Android系統版本的特性和發佈的功能點,因而查看了Android開發者官方文檔整理並總結各個系統版本的差別。android

版本 特色
Android 4.4 KitKat 一、NFC功能
二、傳感器
三、截屏和視頻錄製
四、全屏沉浸式模式
Android 5.0 Lollipop 一、Material Design
二、改善通知(鎖屏也能顯示通知)
三、靜態編譯與動態編譯同時使用
Android 6.0 Marshmallow 一、運行時權限(動態權限)
二、低耗電模式和待機模式
三、靜態編譯與動態編譯同時使用
四、文本選擇(剪切、複製、全選)
Android 7 Nougat 一、應用分屏
二、通知欄快捷回覆
三、快速設置
Android 8 Oreo 一、全新的通知(渠道等)
二、自動填充框架
三、畫中畫(小窗口,播放視頻等)
四、自適應圖標(圓形、方形圖標)
Android 9 Pie 一、室內定位
二、劉海屏、凹凸屏的適配
三、多攝像頭支持
四、神經網絡API的支持
Android 10 一、可摺疊設備的支持
二、暗黑模式
三、5G網絡的支持
四、手勢導航
五、分享API的更新
六、設備標識碼的權限
六、地理位置權限

Android 4.4 KitKat

  1. 經過主機卡模擬新的NFC功能
    Android 4.4經過主機卡模擬(HCE)進行基於NFC的安全交易、支付、卡存取、過境通行證和其餘自定義服務引入新的平臺支持。apache

  2. 打印框架
    Android 應用能夠經過 WLAN 或雲託管服務(例如 Google 雲打印)打印任何類型的內容。在支持打印的應用中,用戶能夠發現可用的打印機,更改紙張尺寸,選擇要打印的特定頁面,打印幾乎任何種類的文檔、圖像或文件。設計模式

  3. 存儲訪問框架
    新的存儲訪問框架讓用戶可以在其全部首選文檔存儲提供程序中方便地瀏覽並打開文檔、圖像以及其餘文件。用戶能夠經過易用的標準 UI,以統一方式在全部應用和提供程序中瀏覽文件和訪問最近使用的文件。api

  4. 低功耗傳感器緩存

    • 傳感器批處理:Android 4.4 針對硬件傳感器批處理引入平臺支持,這是一項新的優化功能,能夠顯著下降傳感器持續活動所消耗的電量。安全

    • 步測器和計步器:Android 4.4 還增長對了兩種新的複合傳感器 — 步測器和計步器 — 的平臺支持,它們讓您的應用能夠在用戶行走、跑步或攀爬樓梯時跟蹤步數。這些新的傳感器在硬件中實現,以下降耗電量。bash

  5. 短信提供程序
    若是您開發使用短信或彩信的消息傳遞應用,如今您可使用共享短信提供程序和新的 API 管理您的應用的消息存儲和檢索。新的短信提供程序和 API 定義了一個適用於全部短信或彩信處理應用的標準交互模式。網絡

  6. 開發漂亮應用的新方式架構

    • 全屏沉浸式模式:您的應用能夠利用設備屏幕上的每個像素顯示內容和捕獲觸摸事件。Android 4.4添加了新的全屏沉浸模式,讓您能夠在手機和平板上建立從一個邊緣延伸到另外一個邊緣的全出血 UI,隱藏全部系統 UI,例如狀態欄和導航欄。它適用於鮮豔的視覺內容,例如照片、視頻、地圖、書本和遊戲。
      在新模式中,系統UI保持隱藏狀態,即便在用戶與您的應用或遊戲交互時,您能夠從屏幕上的任何位置(甚至在系統欄佔據的其餘位置)捕獲觸摸事件。這是您在應用或遊戲中建立更大、更加豐富和更加沉浸式的UI並減小視覺分散的絕佳方式。
      爲確保用戶在全屏沉浸模式中始終能輕鬆、一致地訪問系統UI, Android 4.4 支持新的手勢。如今,在沉浸模式中,從屏幕頂部或底部邊緣滑動手指能夠顯示系統 UI。
      要返回沉浸模式,用戶能夠觸摸欄界限以外的屏幕或等待一小段時間,讓欄自動隱藏。爲提供一致的用戶體驗,新的手勢還與以前隱藏狀態欄的方法配合使用。app

    • 用於動畫場景的轉場框架:利用此轉場框架,您能夠定義場景、典型視圖層次和轉場,它們描述如何在用戶進入或退出場景時製做場景動畫或轉換場景。您可使用多種預約義的轉場類型,根據特定屬性(例如佈局界限或可見性)製做場景動畫。還有一種自動轉場類型,能夠在場景切換時自動淡出淡入、移動視圖和調整視圖大小。此外,您能夠定義自定義轉場,爲對您的應用最爲重要的屬性製做動畫,並且您能夠在必要時插入您本身的動畫樣式。

    • 透明系統UI樣式:要使內容發揮最大做用,您如今可使用新的窗口樣式和主題請求透明系統 UI,包括狀態欄和導航欄。爲確保導航欄按鈕或狀態欄信息清晰可辨,在系統狀態欄後面顯示微妙的漸變效果。典型用例是須要顯示出壁紙的應用。

  7. 新的媒體功能
    屏幕錄製:如今,能夠輕鬆地從 Android 設備直接對應用製做高質量視頻。 Android 4.4 添加了對屏幕錄製的支持,提供屏幕錄製實用程序,讓您可以在經過 USB 鏈接到 Android SDK 環境的設備上啓動和中止錄製。這是一種爲應用、測試材料、營銷視頻等建立演示和教程的絕佳新方式。

Android 5.0 Lollipop

  1. Material Design
    提供擴充的UI工具包,便於在應用中集成新的設計模式。 新增的三維視圖容許設置Z維度來讓視圖元素升高偏離視圖層次並投射實體陰影。

  2. ART運行時
    Android在全新的ART運行時上獨佔運行,這個全新開發的運行時支持混合使用預先編譯(AOT)代碼、即時編譯(JIT)代碼和解析代碼。它支持 ARM、x86 和 MIPS 架構,並全面兼容 64 位。
    ART 可改善應用性能和響應速度。高效的垃圾收集可減小 GC 事件的暫停次數和持續時間,讓事件可以充分適應垂直同步窗口,以免您的應用發生跳幀。ART 還能經過動態轉移內存來優化前臺使用的性能。

  3. 通知
    改善通知欄,在鎖屏狀態下也能接收到通知,在來電狀態下能出如今擡頭通知中。

  4. 屏幕採集和屏幕共享

Android 6.0 Marshmallow

  1. 運行時權限
    用戶能夠直接在運行時管理應用權限。這種模式讓用戶可以更好的瞭解和控制權限。同時爲應用開發者精簡了安裝和自動更新過程。用戶可爲所安裝的各個應用分別授予或撤銷權限。

  2. 低電耗模式和應用待機模式

    • 低電耗模式 若是用戶拔下設備的電源插頭,並在屏幕關閉後的一段時間內使其保持不活動的狀態,設備會進入低電耗模式,該模式下設備會嘗試讓系統保持休眠狀態。在該模式下,設備會按期短期恢復工做,以便進行應用同步,還可讓系統執行任何掛起操做。 (當不碰手機,手機自動關閉屏幕後,過一會,手機將進入瞌睡模式。在瞌睡模式下,設備只會按期的喚醒,而後繼續執行等待中的任務接着又進入瞌睡;)
    • 應用待機模式 應用待機模式容許系統斷定應用在用戶未主動使用它的它處於空閒狀態。當用戶有一段時間未觸摸應用時,系統便會做出此斷定。若是拔下了設備電源插頭,系統會爲其視爲空閒的應用停用網絡訪問以及暫停同步和做業。 (假如用戶一段時間不觸碰手機,設備將進入待機模式。在這個模式下,系統會認爲全部app是閒置的,這時系統會關閉網絡,而且暫停app以前正在執行的任務。)
  3. 取消支持Apache HTTP客戶端 Android 6.0 版移除了對 Apache HTTP 客戶端的支持。建議使用HttpURLConnection。若是繼續使用Apache HTTP API,就先在build.gradle文件中聲明編譯時依賴項:

android {    
    useLibrary 'org.apache.http.legacy'
}
複製代碼
  1. 文本選擇 如今,當用戶在您的應用中選擇文本時,您能夠在一個浮動工具欄中顯示「剪切」、「複製」和「粘貼」等文本選擇操做。其在用戶交互實現上與爲單個視圖啓用上下文操做模式中所述的上下文操做欄相似。

  2. 運行時
    ART 運行時環境如今可正確實現 newInstance() 方法的訪問規則。此變動修正了以前版本中 Dalvik 沒法正確檢查訪問規則的問題。若是您的應用使用 newInstance() 方法,而且您想重寫訪問檢查,請調用 setAccessible() 方法(將輸入參數設置爲 true)。若是您的應用使用 v7 appcompat 庫或 v7 recyclerview 庫,則您必須更新應用以使用這些庫的最新版本。不然,請務必更新從 XML 引用的任何自定義類,以便可以訪問它們的類構造函數。
    此版本更新了動態連接程序的行爲。動態連接程序如今能夠識別庫的 soname 與其路徑之間的差別(公開錯誤 6670),而且如今已實現了按 soname 搜索。以前包含錯誤的 DT_NEEDED 條目(一般是開發計算機文件系統上的絕對路徑)卻仍工做正常的應用,現在可能會出現加載失敗。
    現已正確實現 dlopen(3) RTLD_LOCAL 標記。請注意,RTLD_LOCAL 是默認值,所以不顯式使用 RTLD_LOCAL 的 dlopen(3) 調用將受到影響(除非您的應用顯式使用 RTLD_GLOBAL)。使用 RTLD_LOCAL 時,在隨後經過調用 dlopen(3) 加載的庫中並不能使用這些符號(這與由 DT_NEEDED 條目引用的狀況大相徑庭)。
    在以前版本的 Android 上,若是您的應用請求系統加載包含文本重定位信息的共享庫,系統會顯示警告,但仍容許加載共享庫。今後版本開始,若是您的應用的目標 SDK 版本爲 23 或更高,則系統會拒絕加載該庫。爲幫助您檢測庫是否加載失敗,您的應用應該記錄 dlopen(3) 失敗日誌,並在日誌中加入 dlerror(3) 調用返回的問題描述文本。要詳細瞭解如何處理文本重定位,請參閱此指南。

Android 7 Nougat

  1. 多窗口支持(原生分屏)
    在運行 Android 7.0 的手機和平板電腦上,用戶能夠並排運行兩個應用,或者處於分屏模式時一個應用位於另外一個應用之上。用戶能夠經過拖動兩個應用之間的分隔線來調整應用。

  2. 通知加強功能
    最大的改變是能夠在通知欄上直接對通知進行回覆。

  3. 配置文件知道的JIT/AOT編譯
    在Android 7.0中,添加了即時(JIT)編譯器,對ART進行代碼分析,讓它能夠在應用運行時持續提高Android應用的性能。JIT編譯器對Android運行組件當前的Ahead of Time(AOT)編譯器進行了補充,有助於提高運行時性能,節省存儲空間,加快應用更新和系統更新速度。
    配置文件指導的編譯讓 Android 運行組件可以根據應用的實際使用以及設備上的狀況管理每一個應用的 AOT/JIT 編譯。例如,Android 運行組件維護每一個應用熱方法的配置文件,而且能夠預編譯和緩存這些方法以實現最佳性能。對於應用的其餘部分,在實際使用以前不會進行編譯。
    除提高應用的關鍵部分的性能外,配置文件指導的編譯還有助於減小整個 RAM 佔用,包括關聯的二進制文件。此功能對於低內存設備很是尤爲重要。
    Android 運行組件在管理配置文件指導的編譯時,可最大程度下降對設備電池的影響。僅當設備處於空閒狀態和充電時才進行編譯,從而能夠經過提早執行該工做節約時間和省電。

  4. 隨時隨地低電耗模式
    Android 6.0 推出了低電耗模式,即設備處於空閒狀態時,經過推遲應用的 CPU 和網絡活動以實現省電目的的系統模式,例如,設備放在桌上或抽屜裏時。如今,在 Android 7.0 中,低電耗模式又前進了一步,隨時隨地能夠省電。只要屏幕關閉了一段時間,且設備未插入電源,低電耗模式就會對應用使用熟悉的 CPU 和網絡限制。這意味着用戶即便將設備放入口袋裏也能夠省電。

  5. Quick Settings Tile API
    「快速設置」一般用於直接從通知欄顯示關鍵設置和操做,很是簡單。在 Android 7.0 中,咱們已擴展「快速設置」的範圍,使其更加有用更方便。咱們爲額外的「快速設置」圖塊添加了更多空間,用戶能夠經過向左或向右滑動跨分頁的顯示區域訪問它們。咱們還讓用戶能夠控制顯示哪些「快速設置」圖塊以及顯示的位置 — 用戶能夠經過拖放圖塊來添加或移動圖塊。

  6. 號碼屏蔽、來電過濾

Android 8 Oreo

  1. 通知
    在Android 8.0中,從新設計通知:

    • 通知渠道:Android 8.0中引入了通知渠道,其容許您爲要顯示的每種通知類型建立用戶可自定義的渠道。用戶界面將通知渠道稱之爲通知類別。

    • 通知標誌:Android 8.0 引入了對在應用啓動器圖標上顯示通知標誌的支持。通知標誌可反映某個應用是否存在與其關聯、而且用戶還沒有予以清除也未對其採起行動的通知。通知標誌也稱爲通知點。

    • 休眠:用戶能夠將通知置於休眠狀態,以便稍後從新顯示它。從新顯示時通知的重要程度與首次顯示時相同。應用能夠移除或更新已休眠的通知,但更新休眠的通知並不會使其從新顯示。

    • 通知超時:如今,使用 setTimeoutAfter() 建立通知時您能夠設置超時。您可使用此函數指定一個持續時間,超過該持續時間後,通知應取消。若是須要,您能夠在指定的超時持續時間以前取消通知。

    • 背景顏色:您如今能夠設置和啓用通知的背景顏色。只能在用戶必須一眼就能看到的持續任務的通知中使用此功能。例如,您能夠爲與駕車路線或正在進行的通話有關的通知設置背景顏色。您還可使用 Notification.Builder.setColor() 設置所需的背景顏色。這樣作將容許您使用 Notification.Builder.setColorized() 啓用通知的背景顏色設置。

    • 消息樣式:如今,使用 MessagingStyle 類的通知可在其摺疊形式中顯示更多內容。對於與消息有關的通知,您應使用 MessagingStyle 類。您還可使用新的 addHistoricMessage() 函數,經過向與消息相關的通知添加歷史消息爲會話提供上下文。

  2. 自動填充框架
    賬號建立、登陸和信用卡交易須要時間而且容易出錯。在使用要求執行此類重複性任務的應用時,用戶很容易遭受挫折。Android 8.0 經過引入自動填充框架,簡化了登陸和信用卡表單之類表單的填寫工做。在用戶選擇接受自動填充以後,新老應用均可使用自動填充框架。

  3. 畫中畫模式
    Android 8.0容許以畫中畫 (PIP) 模式啓動操做組件。PIP 是一種特殊的多窗口模式,最經常使用於視頻播放。目前,PIP模式可用於 Android TV,而Android 8.0 則讓該功能可進一步用於其餘 Android 設備。
    當某個Activity處於PIP模式時,它會處於暫停狀態,但仍應繼續顯示內容。所以,您應確保您的應用在onPause()處理程序中進行處理時不會暫停播放。相反,您應在onStop()中暫停播放視頻,並在onStart()中繼續播放。

  4. 自適應圖標
    Android 8.0 引入自適應啓動器圖標。自適應圖標支持視覺效果,可在不一樣設備型號上顯示爲各類不一樣的形狀。好比有些設備應用程序圖標是方形,有些是圓形。

  5. 統一的佈局外邊距和內邊距
    Android 8.0 讓您能夠更輕鬆地指定 View 元素的對邊使用相同外邊距和內邊距的情形。具體來講,您如今能夠在佈局 XML 文件中使用如下屬性:

    • layout_marginVertical,同時定義 layout_marginTop 和 layout_marginBottom。
    • layout_marginHorizontal,同時定義 layout_marginLeft 和 layout_marginRight。
    • paddingVertical,同時定義 paddingTop 和 paddingBottom。
    • paddingHorizontal,同時定義 paddingLeft 和 paddingRight。

Android 9 pie

  1. 利用Wifi RTT 進行室內定位 Android 9添加了對IEEE 802.11 mc Wi-Fi協議的平臺支持,從而讓您的應用能夠利用室內定位功能。
    在運行 Android 9 且具備硬件支持的設備上,應用可使用 RTT API 來測量與附近支持 RTT 的 Wi-Fi 接入點 (AP) 的距離。 設備必須已啓用位置服務並開啓 Wi-Fi 掃描(在 Settings > Location 下),同時您的應用必須具備 ACCESS_FINE_LOCATION 權限。
    設備無需鏈接到接入點便可使用 RTT。 爲了保護隱私,只有手機能夠肯定與接入點的距離;接入點無此信息。

  2. 顯示屏缺口支持(劉海屏、凹凸屏)
    Android 9 支持最新的全面屏,其中包含爲攝像頭和揚聲器預留空間的屏幕缺口。 經過 DisplayCutout 類可肯定非功能區域的位置和形狀,這些區域不該顯示內容。 要肯定這些屏幕缺口區域是否存在及其位置,請使用 getDisplayCutout() 函數。

  3. 多攝像頭支持和攝像頭更新
    在運行 Android 9 的設備上,您能夠經過兩個或更多物理攝像頭來同時訪問多個視頻流。] 在配備雙前置攝像頭或雙後置攝像頭的設備上,您能夠建立只配備單攝像頭的設備所不可能實現的創新功能,例如無縫縮放、背景虛化和立體成像。 經過該 API,您還能夠調用邏輯或融合的攝像頭視頻流,該視頻流可在兩個或更多攝像頭之間自動切換。
    攝像頭方面的其餘改進還包括附加會話參數和 Surface 共享,前者有助於下降首次拍照期間的延遲,然後者則讓攝像頭客戶端可以處理各類用例,而無需中止並啓動攝像頭視頻流。 咱們還針對基於顯示屏的 flash 支持和 OIS 時間戳訪問新增了一些 API,用以實現應用級的圖像穩定化和特效。

  4. 適用於可繪製對象和位圖的ImageDecoder
    Android 9 引入了 ImageDecoder 類,可提供現代化的圖像解碼方法。 使用該類取代 BitmapFactory 和BitmapFactory.Options API。
    ImageDecoder 讓您可經過字節緩衝區、文件或 URI 來建立 Drawable 或 Bitmap。 要解碼圖像,請首先以編碼圖像的來源爲參數,調用 createSource()。 而後,經過傳遞 ImageDecoder.Source 對象來調用 decodeDrawable() 或 decodeBitmap(),從而建立 Drawable] 或 Bitmap。 要更改默認設置,請將 OnHeaderDecodedListener 傳遞給 decodeDrawable() 或 decodeBitmap()。 ImageDecoder 調用 onHeaderDecoded(),以圖像的默認寬度和高度(若已知)爲參數。 若是編碼圖像是動畫 GIF 或 WebP,decodeDrawable() 將返回 Drawable,它是 AnimatedImageDrawable 類的一個實例。
    您可使用不一樣的方法來設置圖像屬性:

    • 要將解碼的圖像縮放到精確尺寸,請將目標尺寸傳遞給 setTargetSize()。 您也可使用樣圖尺寸來縮放圖像。 將樣圖尺寸直接傳遞給 setTargetSampleSize()。
    • 要在縮放圖像的範圍內裁剪圖像,請調用 setCrop()。
    • 要建立可變位圖,請將 true 傳遞給 setMutableRequired()。

    經過 ImageDecoder 還能夠爲圓角或圓形遮罩之類的圖像添加複雜的定製效果。 以 PostProcessor 類的一個實例做爲參數使用 setPostProcessor(),執行您所需的任何繪圖命令。

  5. Neural Networks api 1.1
    Android 8.1(API 級別 27)中引入了 Neural Networks API 以加快 Android 設備上機器學習的速度。

  6. 統一輩子物識別身份驗證對話框
    在 Android 9 中,系統表明您的應用提供生物識別身份驗證對話框。 該功能可建立標準化的對話框外觀、風格和位置,讓用戶更加確信,他們在使用可信的生物識別憑據檢查程序進行身份驗證。

Android 10

  1. Foldables(可摺疊設備的UI適配+應用連續性)
    基於強大的多窗口支持,Android 10能夠跨應用程序窗口擴展多任務處理,並提供屏幕連續性,以便在設備摺疊或展開時保持您的應用程序狀態。

  2. 5G網絡
    5G承諾提供始終如一的更快速度和更低的延遲,Android 10增長了對5G的平臺支持,並擴展了現有的API, 以幫助您利用這些加強功能。

  3. 隱私

    • 設備ID不可隨便獲取(防止設備跟蹤)
      應用程序沒法再訪問可用於跟蹤的不可重置設備標識符,包括設備IMEI,序列號和相似標識符。
    • 分區存儲
    • 後臺禁止啓動Activity
    • 地理位置權限
      用戶能夠經過新的權限選項更好地控制他們的位置數據,他們如今能夠容許應用僅在應用實際使用時(在前臺運行)訪問位置。
    • API限制
  4. 界面

    • 手勢導航
      Android 10引入了徹底手勢導航模式,消除了導航欄區域,並容許應用程序使用全屏幕來提供更豐富,更身臨其境的體驗。它經過邊緣滑動而不是可見按鈕保留熟悉的Back,Home和Recents導航。要與手勢導航無縫融合,您應該邊緣到邊緣,在導航欄後面繪製以建立身臨其境的體驗。
    • 全面屏優化、沉浸式
    • 深色主題
      Android 10增長了系統範圍的黑暗主題,很是適合低光照,有助於節省電池電量。
    • 通知欄:
      高低優先級、智能回覆、建議操做。Android 10使用設備上的ML來建議通知中的上下文操做,例如對消息進行智能回覆或打開通知中地址的地圖。您的應用能夠當即利用此功能,而無需執行任何操做。
    • 分享UI及其API
      共享快捷方式使分享更快捷,讓用戶直接跳轉到另外一個應用程序以共享內容。開發人員能夠發佈在其應用中添加內容的特定活動的共享目標,並在共享UI中向用戶顯示這些目標。由於它們是預先發布的,因此共享UI在啓動時會當即加載。
    • 新的長寬比
    • multi-resume:
      在multi-window狀態下,全部位於頂層的用戶可見而且可聚焦的Activity處於Resume狀態。可是如下狀況中,Activity的狀態爲Paused:被一個透明的activity覆蓋、不可聚焦
    • saw(system_alart_window)權限被廢止
    • bubbles開發者預覽版,交互式通知的新方式
  5. 系統

    • TLS 1.3默認開啓,提升安全性、和隱私性
    • BiometricPrompt 人臉、指紋等API,生物識別登陸。認證確認(顯示、隱式)
    • 更好的文字支持
    • 更好的編解碼器
    • ANGLE:OpenGL ES
    • 神經網絡API的演進 1.2
    • Google Play推薦使用Android App Bundle

Jetpack更新

  1. camerax 兼容到L 設備一致性 使用方便

  2. Jetpack compose 下一代UI工具包、非綁定時、響應式、kotlin優先

  3. Jetpack Security library 基於AES-256GCM提供文件和SharedPreference加密

  4. benchmark library 衡量代碼性能、防止常見的測量錯誤

  5. DataBind優化

  6. view binding android studio 3.6 不要findviewby

相關文章
相關標籤/搜索