開發人員專用的 Android 7.0

Android 7.0 Nougat 推出了多種 為使用者和開發人員推出新功能 本文件將重點介紹開發人員適用的新功能,

請務必參閱 Android 7.0 行為變更:瞭解平台變更的部分 可能會影響您的應用程式。

如要進一步瞭解 Android 7.0 的消費者功能,請前往 www.android.com

多視窗模式支援

在 Android 7.0 中,我們在平台中推出了許多人期待的全新多工處理功能,也就是多視窗支援功能。

使用者現在可以同時在畫面上彈出兩個應用程式。

  • 在手機和平板電腦上 在 Android 7.0 中,使用者可以透過並排執行兩個應用程式,或 就能在分割畫面模式中使用者可透過拖曳的方式調整應用程式大小 之間的分隔線
  • 在 Android TV 裝置上,應用程式可以自行採用子母畫面模式 模式,讓使用者在瀏覽或離開網頁時,能繼續顯示內容。 與其他應用程式互動
在分割畫面模式中執行行動應用程式

圖 1. 應用程式在分割畫面模式下執行。

尤其是平板電腦及其他大螢幕裝置,多視窗模式支援 可讓你以全新方式與使用者互動。您甚至可以啟用 讓使用者輕鬆地在您的應用程式之間來回拖曳內容。 如何提升使用者體驗

您可以輕鬆在應用程式中加入多視窗模式支援功能,並設定這項功能 會處理多視窗顯示內容。舉例來說,您可以指定活動可用的最小尺寸,避免使用者將活動縮減至低於該尺寸。您也可以停用應用程式的多視窗顯示功能 可確保系統僅以全螢幕模式顯示您的應用程式。

詳情請參閱「多視窗模式支援」。 開發人員文件。

通知強化

在 Android 7.0 中,我們重新設計了通知功能,讓通知變得更加容易, 使用起來更快速這些變更包括:

  • 範本更新:我們預計將通知範本更新為 在主頁橫幅和顯示圖片上增添新的強調效果開發人員將可 使用新範本並盡量減少修改程式碼。
  • 自訂訊息樣式:您可以自訂更多 建立與通知相關的使用者介面標籤 MessagingStyle 類別。您可以設定訊息 對話標題和內容檢視畫面
  • 分類通知:系統可以將郵件分組 例如依訊息主題分組,並顯示群組。使用者可以 並對這些動作採取所需動作,例如「關閉」或「封存」。如果您已為 Android Wear 實作通知,就會熟悉這個模型。
  • 直接回覆:如果是即時通訊應用程式, Android 系統支援內嵌回覆,方便使用者快速回覆 直接在通知介面中傳送簡訊或簡訊。
  • 自訂檢視畫面:兩種新的 API 可讓您運用系統 裝飾 (例如通知標頭和動作) 檢視通知
手機顯示套裝組合通知
手機顯示單一訊息通知
手機在通知介面中顯示內嵌郵件回覆

圖 2. 組合通知與直接回覆。

若要瞭解如何實作新功能,請參閱 通知 指南。

設定檔指引 JIT/AOT 編譯

在 Android 7.0 中,我們新增了內含程式碼的 Just in Time (JIT) 編譯器 進而持續提升 Android 應用程式。JIT 編譯器與 ART 現行做法相輔相成 預先 (AOT) 編譯器,有助於改善執行階段效能,且可節省成本 儲存空間,加快應用程式更新和系統更新的速度。

設定檔引導編譯作業可讓 ART 管理以下項目的 AOT/JIT 編譯作業: 以便根據實際使用情況以及裝置上的條件 來預測每個應用程式的效能 舉例來說,ART 會維護每個應用程式熱門方法的設定檔, 為獲得最佳效能,請預先編譯及快取這些方法。這會讓應用程式的其他部分在實際使用前保持未編譯狀態。

除了改善應用程式重要部分的效能之外,以設定檔為導向的編譯作業還可減少應用程式的整體 RAM 占用空間,包括相關聯的二進位檔。這項功能在記憶體不足的裝置上尤其重要。

ART 管理設定檔引導編譯的方式,將對 以及裝置電池只有在裝置處於閒置狀態且裝置處於閒置狀態時,系統才會進行預先編譯 就能事先處理這些事務,既省時又省電

快速安裝應用程式

ART 的 JIT 編譯器最實質的好處之一,就是速度 安裝和系統更新即使是需要幾分鐘時間 您現在可以在 Android 6.0 中安裝最佳化及安裝 秒內請求驗證碼。而且更新速度也更快,因為沒有最佳化步驟。

隨時隨地打盹...

Android 6.0 導入「打盹」模式,這個系統模式可延後設定來節省電力 應用程式CPU 和網路活動 (例如裝置處於閒置狀態) 坐在桌上或抽屜裡

在 Android 7.0 中,Doze 更進一步,可在移動中節省電力。只要螢幕關閉一段時間,且裝置未插電,Doze 就會對應用程式套用部分 CPU 和網路限制。如此一來,即使使用者隨身攜帶裝置,也可以節省電力 口袋裡

插圖:打盹功能如何套用第一層的系統活動限制,藉此延長電池續航力

圖 3. 現已套用打盹功能 限制以改善電池續航力。

在裝置處於電池狀態時,螢幕關閉不久後就會關閉「打盹」功能 限制網路存取、延後工作和同步處理作業。短暫維護期間 Windows、應用程式允許網路存取,以及任何延遲 系統會執行多項工作/同步作業開啟螢幕或接上電源時 以便透過「打盹」功能測試裝置的連線狀態

裝置再次靜止不動時,螢幕關閉並持續充電, 進入休眠模式時,「打盹」模式會全面對 PowerManager.WakeLockAlarmManager 個鬧鐘和 GPS/Wi-Fi 掃描。

調整應用程式打盹模式的最佳做法,同樣是 裝置處於移動狀態,因此如果您已經妥善更新應用程式 進入「打盹」模式後,就大功告成了!如果沒有,請開始調整 啟動「打盹」功能

Svelte 專案:背景最佳化

Project Svelte 是一項持續進行的計畫,旨在減少系統和應用程式在生態系統中各種 Android 裝置上的 RAM 用量。在 Android 7.0 中,Project Svelte 著重於改善應用程式在背景執行的方式。

背景處理是大多數應用程式不可或缺的一環。只要妥善處理 能夠立即、快速且符合情境感知的使用者體驗,打造令人驚豔的使用者體驗。 如果未妥善處理,背景處理程序可能會順利耗用 RAM (且 電池) 及影響其他應用程式的系統效能。

自 Android 5.0 起,JobScheduler 已成為執行背景工作的首選方式,可為使用者提供良好的體驗。應用程式可以安排工作時程,同時讓系統根據各項因素進行最佳化 記憶體、電力和連線狀況等因素。JobScheduler 提供控管機制 簡化作業,而我們希望所有應用程式都能使用

另一個建議做法: GCMNetworkManager,屬於 Google Play 服務的一部分, 提供類似的工作排程功能,並與舊版 Android。

我們將持續擴充 JobSchedulerGCMNetworkManager,即可看到更多 根據自身需求自訂排程,例如在 Android 7.0 中排定背景執行時程 大量更新同時也要開始 淘汰部分可能會降低系統效能的舊模式 尤其是在低記憶體裝置上

我們將在 Android 7.0 中移除三種常用的隱式廣播訊息。 CONNECTIVITY_ACTIONACTION_NEW_PICTUREACTION_NEW_VIDEO — 因為它們可以喚醒 會同時處理多個應用程式的背景處理程序,對記憶體和電池供電。如果應用程式收到這些訊息,請改為利用 Android 7.0 遷移至 JobScheduler 和相關 API。

查看「背景」 最佳化說明文件。

SurfaceView

Android 7.0 將同步動作導入 SurfaceView 類別,因此能更有效率地電池效能 是否比 TextureView 高:轉譯影片時 3D 內容、包含捲動畫面和動畫影片位置的應用程式比較耗電 SurfaceView,比 TextureView 低。

SurfaceView 類別可提高耗電量 因為這個元件是由專屬硬體組成,與應用程式分開運作 視窗內容。因此,它產生的中間副本比 TextureView 少。

SurfaceView 物件的內容位置現在會同步更新 與包含的應用程式內容重疊這項異動的好處之一是 SurfaceView 中播放的影片翻譯或比例 不再隨著檢視畫面移動而產生黑色長條

從 Android 7.0 版本開始,我們強烈建議使用 SurfaceView 取代 TextureView

數據節省模式

「設定」中的數據節省模式

圖 4.

使用行動裝置期間,行動數據方案的費用一般 超出裝置本身的成本對許多使用者而言,行動數據是昂貴的資源,他們希望能節省使用。

Android 7.0 推出了數據節省模式,這項新的系統服務可減少 行動數據網路用量 (包括漫遊、在帳單週期結束前), 或小型預付數據方案數據節省模式可讓使用者控管應用程式 使用行動數據,並讓開發人員能夠提供更有效率的服務 省電模式已開啟。

使用者在「設定」中啟用數據節省模式,且使用計量付費網路時,系統會封鎖背景數據使用,並通知應用程式在前景時盡可能減少數據用量,例如限制串流的位元率、降低圖片品質、延後樂觀預先快取等。使用者可以允許特定應用程式允許背景使用計量付費資料 用量。

Android 7.0 會擴充 ConnectivityManager,透過擷取使用者的數據節省模式偏好設定,以及監控偏好設定變更的方式,來提供應用程式。所有應用程式都應檢查使用者是否已啟用數據節省模式,並盡量限制前景和背景數據用量。

Vulkan API

Android 7.0 將 Vulkan™ 這項全新的 3D 算繪 API 整合至平台。喜歡 OpenGLTM ES,Vulkan 是 3D 圖形和算繪的開放式標準 也就是 Khronos Group 的延伸

Vulkan 的設計初衷是盡可能減少驅動程式中的 CPU 額外負擔,並讓應用程式更直接地控制 GPU 作業。Vulkan 也能讓多個執行緒 例如一次命令緩衝區建構

Vulkan 開發工具和程式庫已整合至 Android 7.0 SDK。他們 包括:

  • 標頭
  • 驗證層 (偵錯程式庫)
  • SPIR-V 著色器編譯器
  • SPIR-V 執行階段著色器編譯程式庫

Vulkan 僅適用於搭載支援 Vulkan 的硬體裝置上的應用程式。 例如 Nexus 5X、Nexus 6P 和 Nexus Player。我們正與 合作夥伴,盡快在更多裝置上提供 Vulkan。

詳情請參閱 API 說明文件

快速設定方塊 API

通知欄中的「快速設定」圖塊

圖 5. 通知欄中的快速設定方塊。

「快速設定」是相當熱門的熱門設定方式 可讓你輕鬆掌握重要的設定和動作 直接在通知欄中顯示通知在 Android 7.0 中,我們擴大了 「快速設定」更加實用,

我們增加了更多空間,可用於新增額外的「快速設定」圖塊,供使用者 左右滑動即可使用分頁顯示區域。我們也讓使用者可以控制快速設定方塊的顯示內容和位置,只要拖曳即可新增或移動方塊。

我們也為開發人員提供 Android 7.0 的新 API, 快速設定資訊方塊可讓使用者輕鬆在應用程式中存取重要的控制選項和動作。

快速設定方塊的控制方式為 可能必須或經常使用,而且不應做為 來啟動應用程式

資訊方塊定義完畢後,您可以向其他使用者顯示這些方塊, 只要將檔案拖曳到「快速設定」選單即可

如要瞭解如何建立應用程式資訊方塊,請參閱參考說明文件 (Tile)。

電話號碼封鎖

Android 7.0 現已支援平台中的號碼封鎖功能,並提供架構 API,讓服務供應商維護封鎖號碼清單。 預設訊息應用程式、預設的電話應用程式和電信業者應用程式 寫入封鎖編號清單。其他應用程式無法存取這個清單。

Android 透過數字來封鎖平台的標準功能 讓應用程式支援多種不同的號碼封鎖 裝置。應用程式還有以下優點:

  • 封鎖通話的號碼也會遭到封鎖
  • 重設後,如果使用「備份與」選項,已封鎖的號碼仍可保留 還原地圖項目
  • 多個應用程式可使用相同的封鎖號碼清單

此外,與 Android 系統整合的電信業者應用程式 讀取裝置上的已封鎖號碼清單,並執行服務端封鎖作業 防止使用者騷擾電話和簡訊 經由 VOIP 端點或轉接電話等媒介追蹤流量。

如需詳細資訊,請參閱 BlockedNumberContract

來電過濾

Android 7.0 允許預設電話應用程式過濾來電。手機 方法是實作新的 CallScreeningService。 可讓手機應用程式根據 來電的 Call.Details,例如:

  • 拒接來電
  • 不允許進行通話記錄
  • 不要向使用者顯示通話通知

詳情請參閱 CallScreeningService 的參考說明文件。

支援多個語言代碼,支援更多語言

Android 7.0 現在可讓使用者在「設定」中選取多個語言代碼。 以便支援雙語用途應用程式可以使用 新 API 可取得使用者選取的地區, 多地區使用者的使用者體驗,例如: 以及不使用 Google 翻譯服務 使用者就會知道

除了支援多語言,Android 7.0 也進一步擴充了支援的語言 使用者可使用的資源每個版本都提供超過 25 個常用變化版本 例如英文、西班牙文、法文和阿拉伯文此外,這個函數也會 支援 100 多種新語言

應用程式可以呼叫 LocaleList.GetDefault()。為了支援更多語言代碼數量,Android 7.0 變更解析資源的方式務必測試及驗證應用程式 能與新的資源解析邏輯正常運作。

如要瞭解新的資源解析行為和最佳做法 請參閱「多語言支援」一文。

全新表情符號

Android 7.0 推出了其他表情符號和表情符號相關功能,包括膚色表情符號和變化選取器支援。如果您的應用程式支援表情符號,請遵循下列規範,充分運用這些表情符號相關功能。

  • 插入裝置前,檢查裝置上是否含有表情符號。 如要檢查系統字型中包含哪些表情符號,請使用 hasGlyph(String) 方法。
  • 檢查表情符號是否支援變化工具。 使用變化版本選取器 以彩色或黑白呈現特定表情符號。 在行動裝置上,應用程式應以彩色表示表情符號,而非黑白。不過 如果您的應用程式顯示內嵌文字的表情符號,則應使用黑白變化版本。 如要判斷表情符號是否含有變化形式,請使用變化形式選取器。 如需完整的字元變化清單,請參閱 有關變化版本的 Unicode 說明文件
  • 確認表情符號是否支援膚色。Android 7.0 可讓使用者 依照喜好顯示表情符號的膚色。鍵盤應用程式應提供視覺元素 表示表情符號具有多種膚色,應讓使用者 選擇偏好的膚色如何判斷哪些系統表情符號 膚色修飾語,請使用 hasGlyph(String) 方法。您可以參閱 Unicode 說明文件,判斷哪些表情符號會使用膚色。

Android 中的 ICU4J API

在下方的 Android 架構中,Android 7.0 現在提供一部分 ICU4J API android.icu 套件。遷移作業很簡單,大多只需從 com.java.icu 命名空間變更為 android.icu。如果您已經在 應用程式則改用 Android 提供的 android.icu API 可大幅節省 APK 大小。

如要進一步瞭解 Android ICU4J API,請參閱「ICU4J 支援」。

WebView

Chrome 和 WebView 搭配使用

自 Android 7.0 以上版本的 Chrome 51 以上版本開始,裝置上的 Chrome APK 用於提供及轉譯 Android System WebView。這種做法可改善 還能降低 WebView 為最新版 (因為獨立的 WebView APK 將不再更新) 只要 Chrome 維持啟用狀態就會消失

啟用開發人員選項和 選取「WebViewImplementation」(WebView 實作)。您可以使用任何相容的 裝置上安裝的 Chrome 版本 (開發人員版、Beta 版或穩定版) 利用獨立 WebView APK 實作 WebView。

多重處理程序

從 Android 7.0 中的 Chrome 51 版開始,WebView 將以 開發人員選項「Multiprocess WebView」時,採用的沙箱機制

我們希望針對 N 的相容性和執行階段效能提供意見 ,然後再於日後的 Android 版本中啟用多處理程序 WebView。在本 版本、啟動時間迴歸、記憶體總用量和軟體 顯示出預期的結果

如果你發現多程序模式中出現未預期的問題,請向我們回報 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件請透過 Chromium 錯誤追蹤器與 WebView 團隊聯絡。

在網頁載入前執行 JavaScript

從以 Android 7.0 為目標的應用程式開始,載入新頁面時,系統會重設 JavaScript 情境。目前,系統會依據 在新 WebView 執行個體中載入第一頁。

想要在 WebView 中插入 JavaScript 的開發人員應執行 指令碼。

針對不安全來源的地理位置

從指定 Android 7.0 為目標版本的應用程式開始,Geolocation API 只會 允許傳送至安全來源 (透過 HTTPS)。這項政策旨在保護使用者在使用不安全連線時的私人資訊。

使用 WebView Beta 版進行測試

WebView 會定期更新,因此建議您測試相容性 宣傳自家應用程式如要開始測試 Android 7.0 的 WebView 預發布版本,請下載並安裝 Chrome 開發人員版或 Chrome Beta 版,然後按照上述說明,在開發人員選項中選取該版本做為 WebView 實作。請透過 Chromium 回報問題 錯誤追蹤程式,以便我們在新版 WebView 發生前加以修正 已發布。

OpenGL™ ES 3.2 API

Android 7.0 新增了 OpenGL ES 3.2 的架構介面和平台支援,包括:

  • 的所有擴充功能 Android 擴充功能套件 (AEP),EXT_texture_sRGB_decode除外。
  • 適用於 HDR 和延遲陰影的浮點影格緩衝區。
  • 使用 BaseVertex 繪圖呼叫,提升批次處理和串流效能。
  • 健全的緩衝區存取權控管,減輕 WebGL 負擔。

在 Android 7.0 上,OpenGL ES 3.2 的架構 API 隨附 GLES32 類別。使用 OpenGL ES 3.2 時,請務必使用 <uses-feature> 標記和 android:glEsVersion 屬性,在資訊清單檔案中宣告需求。

如需使用 OpenGL ES 的資訊,包括如何檢查裝置的 支援的 OpenGL ES 版本,請參閱 OpenGL ES API 指南

Android TV 錄製

Android 7.0 新增錄製及播放 Android TV 輸入裝置中的內容 或 Google Cloud 服務在現有的時間轉移 API 之上,電視輸入服務可以控制可記錄的頻道資料、如何儲存已錄製的工作階段,以及管理使用者與已錄製內容的互動情形。

詳情請參閱「Android TV Recording API」。

Android for Work

Android for Work 為搭載 Android 7.0 的裝置新增許多新功能和 API。 以下列舉幾個重點。如需完整的功能清單,請參閱 Android Enterprise 功能 list

工作資料夾安全驗證問題

指定 N SDK 的設定檔擁有者 可以在 Cloud Shell 中 工作資料夾。當使用者嘗試開啟任何工作應用程式時,系統就會顯示工作驗證。順利完成安全性驗證即可解鎖 以及視需要解密資料。對於設定檔擁有者,ACTION_SET_NEW_PASSWORD 會提示使用者設定工作驗證,而 ACTION_SET_NEW_PARENT_PROFILE_PASSWORD 會提示使用者設定裝置鎖定。

設定檔擁有者可以針對工作驗證設定專屬的密碼政策 (例如 PIN 碼的長度或是否可使用指紋) 使用 setPasswordQuality()解鎖設定檔) setPasswordMinimumLength() 和相關方法。個人資料 擁有者也可以使用DevicePolicyManager設定裝置鎖定 新 getParentProfileInstance() 方法傳回的例項。 此外,個人資料擁有者也能自訂 使用新的 setOrganizationColor()setOrganizationName() 方法。

關閉工作資料夾

如果裝置設有工作資料夾,使用者可以切換工作模式。工作模式處於啟動狀態時 由受管理使用者暫時關閉,工作資料夾會停用 應用程式、背景同步處理和通知包括個人資料擁有者 應用程式。工作模式關閉時,系統會顯示持續性狀態 圖示,提醒使用者他們無法啟動工作應用程式。啟動器會指出無法存取工作應用程式和小工具。

永久連線 VPN

裝置擁有者和設定檔擁有者可以確保工作應用程式一律透過指定的 VPN 連線。系統會在 裝置開機

新的 DevicePolicyManager 方法為 「setAlwaysOnVpnPackage()」和 getAlwaysOnVpnPackage()

因為無需應用程式,系統就能直接繫結 VPN 服務 互動,VPN 用戶端需要處理永久連線 VPN 的新進入點。阿斯 則會以意圖篩選器比對方式向系統表示服務 動作 android.net.VpnService

使用者也可以手動設定永久連線的 VPN 用戶端 VPNService 種方法使用 [設定] > [更多] > [Vpn]。啟用永久連線 VPN 的選項 只有在 VPN 用戶端指定 API 級別 24 時,才能使用「設定」。

自訂佈建

應用程式可自訂設定檔擁有者和裝置擁有者佈建設定 以帶有企業顏色和標誌的流程設計 DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR 項自訂 流程色彩DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI 使用公司標誌自訂流程

無障礙功能強化

Android 7.0 版現在可直接在歡迎畫面中提供視覺設定,並新增 裝置設定。如此一來,使用者就能更容易找到及設定 使用者裝置上的無障礙功能,包括放大手勢、字型 大小、顯示大小和 TalkBack

隨著無障礙功能的顯示位置變得更加顯眼,使用者 啟用這些應用程式後,可增加使用者試用應用程式的機會。請務必在早期啟用這些設定來測試應用程式。你可以依序前往「設定」>「無障礙設定」啟用這些功能。

此外,在 Android 7.0 中,無障礙服務現在可協助動作功能受損的使用者觸碰螢幕。新的 API 可讓您以下列方式建構服務: 臉部追蹤、眼球追蹤、點掃描等等 滿足這些使用者的需求

如需詳細資訊,請參閱 GestureDescription

直接啟動

直接啟動功能可縮短裝置啟動時間,並允許註冊 即使裝置意外重新啟動,應用程式功能仍會受到限制。 舉例來說,如果加密裝置在使用者處於休眠狀態時重新啟動, 已註冊的鬧鐘、訊息和來電現在可以繼續通知 使用者照常這也表示無障礙服務也可以 重新啟動後即可立即使用

直接啟動功能利用 Android 7.0 的檔案型加密技術 ,針對系統和應用程式資料啟用精細的加密政策。 系統會使用裝置加密儲存庫來儲存特定系統資料,並明確指定 已註冊的應用程式資料。在預設情況下 其他系統資料、使用者資料、應用程式和應用程式資料。

啟動時,系統會以受限模式啟動,能夠存取 裝置加密資料,且無法存取應用程式或資料。 如果想在這種模式下執行某些元件,可以註冊 只要在資訊清單中設定標記即可重新啟動後,系統會啟動 透過廣播 LOCKED_BOOT_COMPLETED 註冊元件 意圖。系統會確保註冊裝置加密的應用程式資料可供使用 再解鎖。在使用者確認鎖定前,其他所有資料都可供存取 才能解密。

詳情請參閱直接啟動

金鑰認證

Android 7.0 推出了金鑰認證,這項全新的安全性工具有助於 務必確認儲存在裝置支援硬體支援的金鑰組 KeyStore 可妥善保護應用程式的機密資訊 使用方式。使用這項工具,您就能更加確信自己的應用程式 與位於安全硬體中的金鑰互動 (即使裝置 已啟用 Root 權限如果您使用硬體支援 KeyStore 中的金鑰 您應該使用這項工具,特別是在您使用按鍵 驗證應用程式中的機密資訊。

金鑰認證可讓您確認是否已完成 RSA 或 EC 金鑰組 儲存到裝置的硬體支援 KeyStore 信任的執行環境 (TEE)這項工具還可讓您使用 應用程式的後端伺服器 嚴格驗證金鑰組的用途和有效性。這些功能提供 可以為金鑰組多添一層的安全防護,就算有其他人 取得裝置的 Root 權限,或 Android 平台的安全性 應用程式。

注意: 只有少數搭載 Android 7.0 的裝置 支援硬體層級金鑰認證所有其他搭載 Android 7.0 的裝置 請改用軟體層級的金鑰認證驗證資源前的注意事項 裝置硬體支援金鑰的結構 請確保裝置支援硬體層級金鑰認證目的地: 因此,您應該檢查認證憑證鏈結是否包含 以及 Google 認證根金鑰簽署的憑證 鍵中的 attestationSecurityLevel 元素 說明 資料結構已設為 TrustedEnvironment 安全性 第二,自訂角色只能 套用至專案或機構

詳情請參閱 金鑰認證 開發人員文件。

網路安全性設定

在 Android 7.0 中,應用程式可以自訂安全 (HTTPS、TLS) 的行為 不必修改程式碼,只要使用宣告式程式碼 網路安全性設定,而非使用傳統 容易發生錯誤的程式輔助 API (例如 X509TrustManager)。

支援功能:

  • 自訂信任錨點。讓應用程式自訂 憑證授權單位 (CA) 受到安全連線信任。適用對象 例如信任特定的自行簽署憑證或一組受限的公開 CA。
  • 僅限偵錯的覆寫值。讓應用程式開發人員安全地偵錯應用程式的安全連線,不會對已安裝應用程式的使用者增添風險。
  • 選擇不採用明文流量。可讓應用程式自我保護 意外使用明文流量。
  • 憑證綁定。進階功能,可讓應用程式限制哪些伺服器金鑰可用於安全連線。

詳情請參閱網路安全性設定

預設信任的憑證授權單位

根據預設,指定 Android 7.0 的應用程式僅信任系統提供的憑證 ,不再信任使用者新增的憑證授權單位 (CA)。指定 Android 7.0 (API 級別 24) 為目標版本的應用程式,如果想信任使用者新增的 CA,應使用網路安全性設定,指定應如何信任使用者 CA。

APK Signature Scheme v2

Android 7.0 導入 APK 簽名配置 v2,這是一種全新的應用程式簽署配置, 加快應用程式安裝速度,並進一步防範未經授權的行為 APK 檔案的變更。根據預設,Android Studio 2.2 和 Android Gradle 2.2 外掛程式會使用 APK Signature Scheme v2 和 傳統簽署配置 採用 JAR 簽署

雖然我們建議您為應用程式套用 APK Signature Scheme v2,但這個新版 配置並非必要。如果應用程式在使用 APK 簽署配置 v2 時無法正確建構,您可以停用新配置。停用程序 會使 Android Studio 2.2 版和 Gradle 適用的 Android 外掛程式 2.2 版簽署您的 讓應用程式只使用傳統簽署配置。如果僅使用 傳統配置,請開啟模組層級的 build.gradle 檔案,然後 在版本簽署協議中加入第 v2SigningEnabled false 行 設定:

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

注意: 如果您使用 APK 簽署應用程式 「Signature Scheme v2」並進一步變更應用程式 (應用程式的簽名) 已失效。因此,請在使用 APK 簽署配置 v2 簽署應用程式前,使用 zipalign 等工具,而不是在簽署後使用。

詳情請參閱 Android Studio 文件,其中說明瞭 在 Android Studio 中簽署應用程式,以及如何 設定 使用 Gradle 適用的 Android 外掛程式簽署應用程式的建構檔案

限定範圍目錄存取權

在 Android 7.0 中,應用程式可以使用新的 API 來要求存取特定外部 儲存空間目錄,包括 SD 等卸除式媒體上的目錄 資訊卡新的 API 可大幅簡化應用程式存取標準的方式 外部儲存空間目錄,例如 Pictures 目錄。相片應用程式等應用程式可以使用這些 API,而非使用 READ_EXTERNAL_STORAGE (可授予存取所有儲存空間目錄的權限),或 Storage Access Framework (可讓使用者前往目錄)。

此外,新 API 可簡化使用者將權限授予外部時 能存取應用程式的儲存空間當您使用新的 API 時,系統會採用一個簡單的 權限 UI,清楚說明應用程式目錄 要求存取。

詳情請參閱 限定範圍 目錄存取權開發人員說明文件。

鍵盤快速鍵協助工具

在 Android 7.0 中,使用者可以按下 Meta + / 觸發「Keyboard Shortcuts」畫面,這會顯示系統和焦點應用程式提供的所有可用快速鍵。系統會擷取 捷徑 (如果有的話)。您也可以為螢幕提供經過精細調整的捷徑清單。您可以做的 做法是覆寫 onProvideKeyboardShortcuts() 方法

注意:Meta 鍵完全不存在 鍵盤:Macintosh 鍵盤上的是 Command 鍵, 是 Windows 鍵, Pixel C 和 ChromeOS 鍵盤是搜尋鍵

如要在應用程式中任何位置觸發鍵盤快速鍵輔助程式,請呼叫 requestShowKeyboardShortcuts() 從事相關活動

自訂指標 API

Android 7.0 導入 Custom Pointer API,可讓您自訂 指標的外觀、顯示設定和行為。這項功能 尤其使用者可以透過滑鼠或觸控板進行互動 使用者介面物件預設指標使用標準圖示。這個 API 也包含 提供進階功能,例如根據政策變更指標圖示的外觀 特定滑鼠或觸控板移動

如要設定指標圖示,請覆寫 onResolvePointerIcon() View 類別的方法。這個方法使用 PointerIcon 物件,用於繪製與 特定動作事件

持續效能 API

長時間執行的應用程式效能可能會大幅波動 系統會在裝置元件送達 溫度上限。此波動代表了應用程式不斷變動的目標 開發人員負責打造高效能的長時間執行應用程式。

為解決這些限制,Android 7.0 支援持續效能模式,讓原始設備製造商 (OEM) 可針對長時間執行的應用程式提供裝置效能功能提示。應用程式開發人員 運用這些提示微調應用程式 讓裝置長時間維持穩定一致的效能。

應用程式開發人員只能在 Nexus 6P 裝置上試用 Android 7.0 中的這個新 API。如要使用這項功能, 設定視窗的持續效能視窗旗標 建議您選擇持續效能模式使用以下程式碼設定這個標記: Window.setSustainedPerformanceMode() 方法。系統會自動 當視窗不再處於焦點時,停用這個模式。

VR 支援

Android 7.0 針對全新的 VR 模式新增平台支援和最佳化功能,讓開發人員 為使用者打造優質的行動 VR 體驗。包括多個面向 包括使用 VR 應用程式專屬的 CPU 核心等強化功能 在應用程式中使用 智慧頭部追蹤功能 以及適用於 VR 的立體聲通知最重要的是,Android 7.0 提供 以及極低延遲的圖像。如要進一步瞭解如何建構 Android 7.0 適用的 VR 應用程式,請參閱 Google VR SDK for Android

在 Android 7.0 中,列印服務開發人員現在可以顯示其他資訊 關於個別印表機和列印工作

列出個別印表機時,列印服務現在可以透過兩種方式設定個別印表機的圖示:

此外,您可以提供每台印表機的活動,以顯示其他 呼叫 setInfoIntent()

您可以在列印工作中指定列印工作的進度和狀態 通知, 「setProgress()」和 setStatus()

Frame Metrics API

Frame Metrics API 可讓應用程式監控其 UI 轉譯情形 才需進行這個 API 會公開串流 Pub/Sub API,以便傳輸應用程式目前視窗的框架時間資訊,藉此提供這項功能。傳回的資料是 相當於 adb shell dumpsys gfxinfo framestats 顯示的影格,但不限於過去 120 個影格。

您可以使用 Frame Metrics API 評估互動層級 UI ,無需 USB 連線。這個 API 相較於資料的收集方式 adb shell dumpsys gfxinfo。系統可收集應用程式中特定互動的資料,因此可提供更精細的資料,系統不必擷取整個應用程式效能的全球摘要,也不必清除任何全域狀態。您可以使用 收集效能資料及擷取 UI 效能迴歸的功能 以用於應用程式內的特殊用途

如要監控視窗,請採用 OnFrameMetricsAvailableListener.onFrameMetricsAvailable() 回呼方法,並在該視窗中註冊此方法。

API 提供 FrameMetrics 物件, 包含轉譯子系統針對不同里程碑所回報的時間資料 都屬於影格生命週期支援的指標包括:UNKNOWN_DELAY_DURATIONINPUT_HANDLING_DURATIONANIMATION_DURATIONLAYOUT_MEASURE_DURATIONDRAW_DURATIONSYNC_DURATIONCOMMAND_ISSUE_DURATIONSWAP_BUFFERS_DURATIONTOTAL_DURATIONFIRST_DRAW_FRAME

虛擬檔案

在舊版 Android 中,應用程式可使用儲存空間存取權 可讓使用者從雲端儲存空間帳戶中選取檔案的架構。 例如 Google 雲端硬碟然而,沒有任何一種方式能夠表示 沒有直接位元碼表示法;您需要為每個檔案 以及輸入串流

Android 7.0 新增了虛擬檔案的概念:「儲存空間存取權」 架構。透過虛擬檔案功能 DocumentsProvider 以傳回可產生的文件 URI 與 ACTION_VIEW 意圖搭配使用 並沒有直接的位元碼表示法Android 7.0 還可讓您 為使用者檔案提供替代格式,虛擬或其他形式。

如要進一步瞭解如何開啟虛擬檔案,請參閱 在 儲存空間存取架構指南