Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android N版本(7.0)適配

Android N版本(7.0)適配

編輯:關於Android編程

AndroidN beta版本已經出來了, 雖然還沒有搭載的機器上市,但是已經Android N版本早早的就可以體驗試用了。

近期使用Nexus 6 刷了7.0版本, 對負責的項目進行了適配。大問題不多,小問題不少,還是耗費了些時間。整理如下:

簡單總結(具體的官方文檔中都有描述):

1,多窗口支持:

在 Android N 中,引入了一個新的而且非常需要的多任務處理功能 — 多窗口支持。

現在,用戶可以一次在屏幕上打開兩個應用。

在運行 Android N 的手機和平板電腦上

,用戶可以並排運行兩個應用,或者處於分屏模式時一個應用位於另一個應用之上。 用戶可以通過拖動兩個應用之間的分隔線來調整應用。

在 Android TV 設備上,應用可以將自身置於畫中畫模式,從而讓它們可以在用戶浏覽或與其他應用交互時繼續顯示內容。

2,通知增強功能(請參閱通知指南)

在 Android N 中,重新設計了通知,使其更易於使用並且速度更快。 部分變更包括:

模板更新

消息樣式自定義

捆綁通知

直接回復

自定義視圖

3,個人資料指導的 JIT/AOT 編譯

在 Android N 中,添加了 Just in Time (JIT) 編譯器,對 ART 進行代碼分析,讓它可以在應用運行時持續提升 Android 應用的性能。 JIT 編譯器對 Android 運行組件當前的 Ahead of Time (AOT) 編譯器進行了補充,有助於提升運行時性能,節省存儲空間,加快應用更新和系統更新速度。

4,快速的應用安裝路徑

Android 運行組件的 JIT 編譯器最實際的好處之一是應用安裝和系統更新的速度。 即使在 Android 6.0 中需要幾分鐘進行優化和安裝的大型應用,現在只需幾秒鐘就可以完成安裝。 系統更新也變得更快,因為省去了優化步驟。

5,隨時隨地低電耗模式

現在,在 Android N 中,低電耗模式又前進了一步,隨時隨地可以省電。只要屏幕關閉了一段時間,且設備未插入電源,低電耗模式就會對應用使用熟悉的 CPU 和網絡限制。這意味著用戶即使將設備放入口袋裡也可以省電。

 

低電耗模式現在應用限制以延長電池壽命,即使設備未處於靜止狀態。

6,Project Svelte:後台優化

Project Svelte 在持續改善,以最大程度減少生態系統中一系列 Android 設備中系統和應用使用的 RAM。 在 Android N 中,Project Svelte 注重優化在後台中運行應用的方式。

7,Data Saver

Android N 推出了 Data Saver 模式,這是一項新的系統服務,有助於減少應用使用的蜂窩數據,無論是在漫游,賬單周期即將結束,還是使用少量的預付費數據包。 Data Saver 讓用戶可以控制應用使用蜂窩數據的方式,同時讓開發者打開 Data Saver 時可以提供更多有效的服務。

8,Vulkan API(API 文檔)

Android N 將一項新的 3D 渲染 APIVulkan?集成到平台中。就像OpenGL? ES一樣,Vulkan 是 3D 圖形和渲染的一項開放標准,由 Khronos Group 維護。

9,Quick Settings Tile API(API 參考)

Android N 添加了一個新的 API,可以定義自己的“快速設置”圖塊,使用戶可以輕松訪問應用中的關鍵控件和操作。

10,號碼屏蔽(API 參考)

Android N 現在支持在平台中進行號碼屏蔽,提供框架 API,讓服務提供商可以維護屏蔽的號碼列表。 默認短信應用、默認手機應用和提供商應用可以對屏蔽的號碼列表進行讀取和寫入操作。 其他應用則無法訪問此列表。

11,來電過濾(API 參考android.telecom.CallScreeningService)

Android N 允許默認的手機應用過濾來電。手機應用執行此操作的方式是實現新的CallScreeningService,該方法允許手機應用基於來電的Call.Details執行大量操作

12,多區域設置支持、多語言(多語言支持)

Android N 現在允許用戶在設置中選擇多個區域設置,以更好地支持雙語用例。 應用可以使用新的 API 獲取用戶選擇的區域設置,然後為多區域設置用戶提供更成熟的用戶體驗 — 如以多個語言顯示搜索結果,並且不會以用戶了解的語言翻譯網頁。

13,新增的表情符號

Android N 引入更多表情符號和表情符號相關功能,包括膚色表情符號和支持變量選擇符

14,Android 中的 ICU4J API(ICU4J 支持)

Android N 目前在 Android 框架(位於android.icu軟件包下)中提供ICU4JAPI的子集。 遷移很簡單,主要是需要從com.java.icu命名空間更改為android.icu。如果您已在您的應用中使用 ICU4J 捆綁包,切換到 Android 框架中提供的android.icuAPI 可以大量節省 APK 大小

15,OpenGL? ES 3.2 API

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

16,Android TV 錄制

Android N 通過新的錄制 API 添加了從 Android TV 輸入服務錄制和播放內容的功能。 構建在現有時移 API 之上,TV 輸入服務可以控制能夠錄制的渠道數據、保存錄制的會話的方式,同時可通過錄制的內容管理用戶交互。

17,Android for Work

Android for Work 針對運行 Android N 的設備添加了許多新功能和 API。部分重要內容如下— 有關變更的完整列表,請參閱Android forWork 更新。

18,無障礙增強功能(API 參考中的android.accessibilityservice.GestureDescription)

Android N 現在針對新的設備設置直接在歡迎屏幕上提供“Vision Settings”。 這使用戶可以更容易發現和配置他們設備上的無障礙功能,包括放大手勢、字體大小、顯示屏尺寸和 TalkBack。

19,直接啟動

在 Android N 中,直接啟動充分利用基於文件的加密,以針對系統和應用數據啟用細化的加密策略。為系統和應用數據。系統針對選定的系統數據和顯式注冊的應用數據使用設備加密的存儲。 默認情況下,憑據加密的存儲可用於所有其他系統數據、用戶數據、應用及應用數據。

20,密鑰認證

為了讓硬件支持的密鑰庫使用起來更簡單和更安全,Android N 引入了密鑰認證。 應用和關閉的設備可使用密鑰認證以堅決地確定 RSA 或 EC 密鑰對是否受硬件支持、密鑰對的屬性如何,以及其使用和有效性有何限制。

21,網絡安全性配置(網絡安全性配置)

在 Android N 中,通過使用說明性“網絡安全性配置”(而不是使用傳統的易出錯的編程 API(例如,X509TrustManager)),應用可以安全地自定義其安全(HTTPS、TLS)連接的行為,無需任何代碼修改。

22,APK signature scheme v2(建議行方案)

23,作用域目錄訪問

在 Android N 中,應用可以使用新的 API 請求訪問特定的外部存儲目錄,包括可移動媒體上的目錄,如 SD 卡。新 API 大大簡化了應用訪問標准外部存儲目錄的方式,如Pictures目錄。 應用(如照片應用)可以使用這些 API(而不是使用READ_EXTERNAL_STORAGE),其授予所有存儲目錄的訪問權限或存儲訪問框架,從而讓用戶可以導航到目錄。

24,鍵盤快捷鍵輔助工具

在 Android N 中,用戶可以按“Alt + /”觸發“鍵盤快捷鍵”屏幕,它會顯示的系統和對焦的應用中可用的所有快捷鍵

25,VR 支持(面向 Android 的 Google VR SDK)

26,打印服務增強

27,FrameMetricsListener API

FrameMetricsListenerAPI 允許應用監測它的 UI 渲染性能。 API 通過公開流式傳輸 Pub/Sub API 來提供此能力,以傳遞應用當前窗口的幀計時信息。 返回的數據相當於adb shelldumpsysgfxinfo framestats顯示的數據,但不限定於在過去的 120 幀內。

28,虛擬文件

Android N 在存儲訪問框架中增加了“虛擬文件”的概念。虛擬文件功能可以讓您的DocumentsProvider返回可與ACTION_VIEWIntent使用的文件 URI,即使它們沒有直接字節碼表示。 Android N 還允許您為用戶文件(虛擬或其他類)提供備用格式。

 

適配問題:

問題1:

支持StatusbarTranslucent時顯示URL bar位置需要在狀態欄之下 (setcontent view時統一處理,但狀態欄位置是動態添加所以需要特殊處理)

多窗口時:

1,在窗口下的位置時,控制顯示的urlbar位置需要特殊處理;在窗口上位置時時,無需處理。所以面臨多窗口狀態下需要區分多窗口的問題。

2,全屏模式下可解決1的問題, 但是全屏模式下在多窗口裡無法隱藏狀態欄,所以在窗口上位置時,存在和狀態欄重疊的問題。

3,多窗口變化時動態改變狀態欄顯示(理論上可行,但是增加額外的處理成本和頁面重繪)

最終處理:

對24及以上版本,去除對StatusbarTranslucent支持。

問題2:

使用了24版本的API,則編譯版本需指向Target 24

指向24後,很容易出現JDK版本沖突問題:

1,(Can't process class[dalvik/system/DexClassLoader.class] (Unsupported class version number [52.0](maximum 51.0, Java 1.7)))

2,如果找不對JDK 沖突的包單方面指向1.8還會有:

UNEXPECTEDTOP-LEVEL EXCEPTION:

com.android.dx.cf.iface.ParseException:bad class file magic (cafebabe) or version (0034.0000)

3, javac:無效的源發行版:1.8

最終處理:

使用android-24裡的android.jar那麼就得支持java 8版本, 需要檢查編譯的Jar包,proguard (proguard5.2.1支持) 是否均支持java 8版本。

問題3:

多窗口UI顯示問題

1,顯示不全的頁面,添加滾動支持。

2,通過屏幕寬高計算顯示位置和數量的,區分狀態顯示處理。

3,輸入法遮擋的,暫不處理。

4,實在難兼容的,獨立Task,不支持多窗口。

 

問題4:

涉及廣播監聽等和新API等問題,根據業務需要靈活適配。

 

相關資料:

https://developer.android.com/preview/api-overview.html官方說明(Android N for Developers)

https://developer.android.com/preview/samples.html官方demo

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved