Android P FAQ第一弹:非SDK管控特性
??Android P預覽版發布的非 SDK 接口管控特性,被稱為 Android 史上最嚴格的變更特性之一,針對這個特性開發者在適配工作中普遍遇到哪些疑點和困惑?華為終端開放實驗室整理了一份Android P非 SDK 管控特性 FAQ,一起來看看吧。
Q1.什么是非 SDK 接口?
A:谷歌網站:
https://developer.android.goo... 在此網站能夠查詢到的接口都是 SDK 接口;除以上的 SDK 接口外,其他都是非 SDK 接口。
Q2.如果調用了非 SDK 接口,會怎么樣?
A: 無論通過調用、反射還是 JNI 等方式調用非 SDK 接口,都會導致應用出現 crash,無法啟動;或在運行過程中出現崩潰、閃退等現象;也可能導致應用功能不可用等嚴重兼容性問題,其影響范圍波及所有調用此接口的應用,因此,非 SDK 接口管控被稱為 Android 史上最嚴格的變更特性之一。
Q3. 什么是非 SDK 接口管控名單?
A: 名單類型分 light grey list (淺灰名單), dark grey list (深灰名單), dark list(黑名單)。
Q4.怎么查非 SDK 接口管控名單?
A: 查詢鏈接:
https://android.googlesource....
Q5.hidden api淺灰名單、深灰名單和黑名單進一步說明:
A:①淺灰名單:
hiddenapi-light-greylist.txt+hiddenapi-vendor-list.txt,hiddenapi-p-light-greylist.txt 名單目前還未用到,可以暫不關注。
②深灰名單和黑名單:
目前沒有具體的代碼名單可以看到深灰和黑名單接口列表,開發者可以通過編譯谷歌提供的靜態掃描veridex工具(需要下載谷歌 Android P 整個工程代碼),動態生成淺灰、深灰和黑名單接口名單:
工具路徑: art/tools/veridex/
工具編譯:make appcompat
outtargetcommonobjPACKAGING下會動態生成三個名單:
?
源碼下載指導:
https://source.android.google...
③需要整改的接口名單: 黑名單接口
④在 DP1 版本中黑中名單是空的,只有淺灰+深灰,不會因為非 SDK 變更導致應用出現兼容性問題;而 DP2 版本開始加入黑名單,如果應用未在 DP1 版本整改和適配的話,可能會因為 DP2 版本加入的黑名單導致兼容性問題。
Q6.名單變化的趨勢是怎樣的?
A:整合 OEM 廠商的掃描測試+谷歌的掃描測試+開發者自己掃描測試,申請將掃描到的黑名單接口加入到灰名單中。目前趨勢是黑名單不斷減少,淺灰名單不斷增加。DP2 版本淺灰名單是現在谷歌最新淺灰名單的一個子集,應用在 DP2 版本中測試可以充分暴露問題。因此,針對非 SDK 問題,應用在 DP2 版本整改之后,不會在后續版本引入新的問題。
Q7.名單申請deadline是什么時間?
A:目前谷歌官方未公布,應用須盡快向谷歌反饋需要加灰名單的接口;越晚反饋申請難度越大,之后再發現有新的必須調用的非 SDK API 就只能走 escalation 了,申請修改加灰名單的難度系數將增加很多。
Q8.應用使用 blacklist 非 SDK 接口導致崩潰,無法發現其調用的其他更多非 SDK 接口,怎么辦?
A:請用下面的命令將 blacklist 設為只警報不崩潰:
adb shell settings put global hidden_api_policy_pre_p_apps 1
adb shell settings put global hidden_api_policy_p_apps 1
注意:此為開發者選項,僅供開發時使用
復位命令:
adb shell settings delete global hidden_api_policy_pre_p_apps
adb shell settings delete global hidden_api_policy_p_apps
Q9.應用現在要做的最緊急的事情是?
A:在DP2版本中通過 veridex 靜態分析 + logcat 動態測試充分暴露問題,發現必須要使用的且不在淺灰名單的非 SDK 接口,需盡快反饋給谷歌,申請加淺灰名單,并提交申請理由,以確保后續的 DP 版本不會出現同樣的非 SDK 接口問題。
問題反饋鏈接:
https://issuetracker.google.c...
Q10. 使用加固的應用該怎么做?
A:對于使用加固的應用,因為 OEM 廠商和谷歌都無法通過靜態工具幫助應用掃描使用的非 SDK 接口列表。如果應用還未更新最新適配谷歌 Android P 的加固版本,存在無法啟動的問題,那么通過動態掃描的方式也是無法進行的。所以使用加固的應用需要通過靜態+動態掃描白包的方式獲取正在使用的非 SDK 接口,并反饋給谷歌申請加灰名單。
重點關注:
1.應用測試中發現需要申請加入淺灰名單的非 SDK 接口需盡快反饋給谷歌,越晚反饋,谷歌修改的難度將越大,可能導致無法加入灰名單而影響應用功能;
2.谷歌發布的 DP2 版本中已加入黑名單,建議開發者在 DP2 版本中測試驗證應用調用的非 SDK 接口,針對無法整改的非 SDK 接口,及時向谷歌反饋必需使用此接口的詳細原因,申請重新評估該接口。
Android P FAQ系列將持續推出,歡迎大家掃描屏幕下方二維碼關注了解更多
總結
以上是生活随笔為你收集整理的Android P FAQ第一弹:非SDK管控特性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Service的onSt
- 下一篇: R12.1.3 R12.2.X 注册客