如何將應用完美遷移至Android P版本

來源:互聯網
上載者:User

標籤:開始   cep   函數   dom   cap   移動   instance   運行   網路攝影機   

Android P(API 層級 P)引入了行為變更以及您的應用中可加以利用的新功能和 API。本文概述了將應用遷移到 Android P 的兩個關鍵階段的步驟:

1、確保相容 Android P

驗證您的應用能夠在新版本平台上全功能運行。在此階段,您不需要使用新的 API,也不需要更改應用的 targetSdkVersion,但可能需要進行一些細微的更改。

2、更新您的目標版本並使用 Android P 功能

當您準備好利用平台的新功能時,將targetSdkVersion更新至“P”,驗證應用是否仍可按預期方式運行,然後開始使用新的 API。

Android P升級計劃

確保相容 Android P

此處的目標是確保您的現有應用在 Android P(API 層級 P)上照常運行。由於一些平台變化可能影響應用的行為方式,因此可能需要進行一些調整,但您不需要使用新的 API 或更改 targetSdkVersion。

 

 

 準備一台運行 Android P 的裝置

如果您有一台相容裝置(Pixel、Pixel XL、Pixel 2、Pixel 2XL),請從官網擷取適合您的裝置的Android P系統映像,然後按照說明將映像刷入裝置。

執行相容性測試

與 Android P(API層級P)的相容性測試多半與您準備發布應用時執行的測試屬於同一類型。

不過,測試還有另一個層面:Android P 向 Android平台引入了一些變化,即便不對 targetSdkVersion 做任何變動,仍可能影響應用的行為或令其根本無法運行。因此,您必須回顧下表中的關鍵變化,並對任何為適應這些變化而實現的修複進行測試。

  • 對於非 SDK 介面的限制

現已禁止訪問特定的非 SDK 介面,無論是直接存取,還是通過 JNI 或反射進行間接訪問。嘗試訪問受限制的介面將會產生 NoSuchFieldException 和 NoSuchMethodException 之類的錯誤。有關詳情,請參閱對於非 SDK 介面的限制。

  • 移除加密提供者

從 Android P 開始,Crypto JCA 提供者現已被移除。調用 SecureRandom.getInstance("SHA1PRNG", "Crypto") 將會引發 NoSuchProviderException。

  • 更嚴格的 UTF-8 解碼器

在 Android P 中,針對 Java 語言的 UTF-8 解碼器比以往更嚴格,並且遵循 Unicode 標準。

  • 禁止空閑應用訪問網路攝影機、麥克風和感應器

在應用處於空閑狀態時,不能再訪問網路攝影機、麥克風或 SensorManager 感應器。

測試 Android P 應用

完成以上準備工作後,您就可以構建應用,然後對其做進一步測試,以確保 Android P(API 層級 P)為目標平台時它能正常工作。這時有必要再次回顧一下核心應用品質指南和測試最佳實務。

如果您構建應用時將 targetSdkVersion設定為P,應該注意特定的平台變化。即便您不實現 Android P 中的新功能,其中的一些變化仍可能嚴重影響應用的行為或令其根本無法運行。

  • 前台服務許可權

現在,想要使用前台服務的應用必須首先請求 FOREGROUND_SERVICE 許可權。這是普通許可權,因此,系統會自動為請求許可權的應用授予此許可權。在未獲得此許可權的情況下啟動前台服務將會引發 SecurityException。

  • 棄用 Bouncy Castle 加密

Android P 棄用了幾個來自 Bouncy Castle 提供者中的加密技術,代之以由 Conscrypt 提供者提供的加密技術。調用請求 Bouncy Castle 提供者的 getInstance() 將會產生 NoSuchAlgorithmException 錯誤。要解決這些錯誤,請不要在 getInstance() 中指定提供者(也就是請求預設實現)。

  • 移除對 Build.serial 的直接存取

現在,需要 Build.serial 標識符的應用必須請求 READ_PHONE_STATE 許可權,然後使用 Android P 中新增的新 Build.getSerial() 函數。

  • 不允許共用 WebView 資料目錄

現在,不允許應用在不同進程之間共用一個 WebView 資料目錄。如果您的應用有多個進程使用 WebView、CookieManager 或 android.webkit 軟體包中的任何其他 API,則在第二個進程調用 WebView 函數時,您的應用將會崩潰。

  • SELinux 禁止訪問應用的資料目錄

系統強制每個應用的 SELinux 沙箱對每個應用的私人資料目錄強制執行逐個應用的 SELinux 限制。現在,不允許直接通過路徑訪問其他應用的資料目錄。應用可以繼續使用處理序間通訊 (IPC) 機制(包括通過傳遞 FD)共用資料。

相容性解決方案

如果您沒有支援安卓P版本的相容裝置,可訪問華為終端開放實驗室雲測平台,免費擷取Pixel的使用權。

平台擁有一套完善的行動裝置 AppDevOps解決方案,在GoogleIO大會之後,率先上線Android P DP2版本的Pixel機型,免費提供給安卓綠色聯盟會員使用。

在Google官方的解決方案基礎上,從11項中測試並解決安卓P版本相容性。

 

如何將應用完美遷移至Android P版本

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.