史上最嚴管控,Android P非SDK接口管控特性解讀及適配

導讀android

在 Android P 版本中,谷歌加入了非 SDK 接口使用限制,不管是經過調用、反射仍是JNI等方式,開發者都沒法對非 SDK 接口進行訪問,此接口的濫用將會帶來嚴重的系統兼容性問題。app

針對谷歌的大動做,開發者該如何快速反應,更便捷、高效的實現P版本的適配?華爲專家爲您帶來非 SDK 管控特性適配指導的詳細解讀,一塊兒來看看吧。ide


在開發過程當中,開發者若是調用了非 SDK 接口,會致使應用出現crash,沒法啓動;或在運行過程當中出現崩潰、閃退等現象;也可能致使應用功能不可用等嚴重兼容性問題,其影響範圍波及全部調用此接口的應用,所以,非 SDK 接口管控被譽爲Android史上最嚴格的變動特性之一。 工具


1、特性介紹

SDK 接口: 測試

https://developer.android.google.cn/reference/packages,可以在谷歌網站查詢到的接口都是 SDK 接口; 網站


非 SDK 接口: google

除以上的 SDK 接口外,其餘都是非 SDK 接口 spa


應用濫用 non-SDK interfaces 的危害: 調試

非 SDK 接口在版本之間可能有所變化,將帶來兼容性問題。 日誌


非 SDK 接口管控名單:

名單說明


查看名單  https://android.googlesource.com/platform/frameworks/base/+/master/config/


非 SDK 接口調用警告


  • 全部私有 API 均在 Logcat 中顯示警告。

  • DP版本在 Activity 開始時會顯示 Toast 警告。

  • Debuggable 應用出現對話框警告,彈框內容和 Toast 提示內容一致。

  • 從 DP2 開始,由StrictMode內新增的detectNonSdkApiUsage()來檢測違規的調用。

  • 正式商用版本將去掉 Toast 警告和對話框提示。


2、兼容性影響

影響範圍

調用非 SDK(包括深灰名單、黑名單)接口的全部應用都將受到影響


具體影響

在 Developer Preview後續版本中,各類訪問非SDK接口的方法都會產生錯誤或其餘不良結果:


3、兼容性適配指導

獲取應用使用的全部非 SDK 接口列表

輸出非 SDK 接口列表:


非 SDK 接口掃描方法


方法1:動態運行,經過日誌分析掃描

經過自動化或人工測試,遍歷應用每個界面和全部功能,抓取日誌分析調用的全部非 SDK 接口。


關鍵日誌

*Accessinghidden field Landroid/os/Message;->flags:I (light greylist, JNI)

*Accessing hidden method

Landroid/app/ActivityThread;->currentActivityThread()Landroid/app/ActivityThread;(dark greylist, reflection)

*Accessing hidden method

Landroid/app/ActivityThread;->currentActivityThread()Landroid/app/ActivityThread;(blacklist, reflection)

方法2:靜態掃描,經過谷歌提供的 Veridex 掃描工具掃描

  • 工具路徑:art/tools/veridex/

  • 工具編譯:make appcompat

  • 工具執行:

./art/tools/veridex/appcompat.sh --dex-file=test.apk

使用帶參數的命令掃描可以使掃描的結果更全面,但可能存在誤報的狀況:./art/tools/veridex/appcompat.sh --dex-file=test.apk --imprecise

  • 輸出掃描結果:


  • 備註:已經加固的應用,須要使用加固前的 APK進行掃描

  • 工具下載:


谷歌已開放 DP2 版本對應的代碼下載:

https://android.googlesource.com/platform/art/+/android-p-preview-2

源碼下載指導:

https://source.android.google.cn/setup/downloading

下載P版本 Android 工程代碼後,可直接在工程下編譯運行掃描工具,再進行非 SDK 接口掃描。


非SDK接口整改

目前在P版本中,淺灰名單中的非SDK接口若不整改,仍能夠正常使用。開發者須要重點關注的是++深灰名單和黑名單++中的非 SDK 接口,找到可替代的 SDK 接口進行適配。


沒法整改的接口:向谷歌申請從新評估

若是調用的接口在深灰名單或者黑名單中,且沒法找到可替代的SDK接口,可向谷歌提供必需使用此接口的詳細緣由,申請從新評估該接口,問題反饋連接:

https://issuetracker.google.com/issues/new?component=328403&template=1027267

問題反饋郵件模板:


重點關注

  • 應用測試發現須要申請加入淺灰名單的非SDK接口需儘快反饋給谷歌,越晚反饋,谷歌修改的難度將越大,可能會致使沒法加入灰名單而影響應用的功能;

  • 谷歌發佈的 DP2 版本中已加入黑名單,建議開發者在DP2版本中測試驗證應用調用的非 SDK 接口,針對沒法整改的非SDK接口,及時向谷歌反饋必需使用此接口的詳細緣由,申請從新評估該接口。


4、P版本兼容性測試驗證方法

方法一:購買谷歌 Pixel、Pixel XL、Pixel二、Pixel 2 XL,刷 P 版本進行測試

版本下載,參考:

 

https://developer.android.google.cn/preview/download

 


刷機

*刷機前須要退出以前登陸的谷歌帳號

1.下載對應設備的壓縮包並解壓;

2.手機連 USB 後,執行 adb reboot bootloader 命令;

3.手機出現小機器人圖案,並顯示‘unlock’字樣時,執行壓縮包中的 bat 腳本。


若是是「lock」字樣:

1.連續點擊設置-版本號7次,打開開發人員選項;

2.在開發人員選項中打開 OEM unlock;

3.鏈接手機到電腦,執行 adb reboot bootloader 命令到小機器人界面;

4.執行 fastboot oem unlock,手機就解鎖了,再使用上面的刷機方法便可。


方法二:遠程真機調試

1.新用戶註冊使用

新用戶如需申請使用華爲終端開放實驗室的雲測功能,需加入安卓綠色聯盟,成爲會員。可經過如下步驟申請:

  • 登陸https://deveco.huawei.com/

  • 使用所在公司尾綴的郵箱進行帳號註冊;

  • 將您新申請的帳號、所在公司、我的姓名及電話、負責的應用名稱發送至deveco@huawei.com,申請成爲安卓綠色聯盟會員,經過審覈後,將爲您開通使用權限;


2.登陸帳號選擇真機進行遠程調試



3.選擇手機:Pixel



4.點擊「當即體驗」,上傳 APK 進行調試



方法三:使用谷歌模擬器驗證

安裝和配置 Android P SDK 和模擬器

參考:https://developer.android.google.cn/preview/setup-sdk


相關文章
相關標籤/搜索