關於Android P 黑名單的檢測 windows下的 veridex的使用

醉過才知酒濃發表於2018-07-06

在 Android P 版本中,谷歌加入了非 SDK 介面使用限制,無論是通過呼叫、反射還是JNI等方式,開發者都無法對非 SDK 介面進行訪問,此介面的濫用將會帶來嚴重的系統相容性問題。 在開發過程中,開發者如果呼叫了非 SDK 介面,會導致應用出現crash,無法啟動;或在執行過程中出現崩潰、閃退等現象;也可能導致應用功能不可用等嚴重相容性問題,其影響範圍波及所有呼叫此介面的應用;

1:那什麼是SDK介面? https://developer.android.google.cn/reference/packages,能夠在谷歌網站查詢到的介面都是 SDK 介面;

2:那什麼是非SDK介面? 所有SDK介面之外的都是非SDK介面

2.1:非SDK介面的三種分類:淺灰名單,深灰名單和黑名單 這裡寫圖片描述

關於Android P  黑名單的檢測 windows下的 veridex的使用

由圖可知,當在一個P版本的手機中,即使你的應用targetsdk < p,如果你的app使用了黑名單,那麼也會造成app的crash

2.2:那我們在app中使用了非SDK的介面,會出現什麼情況?

所有私有 API 均在 Logcat 中顯示警告。 DP版本在 Activity 開始時會顯示 Toast 警告。 Debuggable 應用出現對話方塊警告,彈框內容和 Toast 提示內容一致。 從 DP2 開始,由StrictMode內新增的detectNonSdkApiUsage()來檢測違規的呼叫。 3:所以我們應該明確,在P版本中,使用非SDK介面會造成各種相容性問題,具體產生的不良後果如圖所示 這裡寫圖片描述

關於Android P  黑名單的檢測 windows下的 veridex的使用

4:那我們如何知道自己的app使用了非標準SDK的介面?google已經為我們製造了這樣的一個工具:veridex veridex下載地址 veridex使用方法 這個工具只提供了 Mac 和 Linux 版本的工具, 那我們windows怎麼辦呢 官方也提供瞭解決辦法就是用windows子系統linux(wsl)來執行 Linux版本的工具

Native Windows binaries are not provided, but the Linux binaries can be executed with Windows Subsystem for Linux (WSL). Follow the instructions at this link and install Ubuntu distribution when given the choice. Once installed, launch an Ubuntu terminal and follow instructions for Linux.

這個是下載Ubuntu的windows版本 下載地址

安裝完成後 輸入任何字元都會出現閃退的情況,這是因為你還沒有配置成功 配置方法

按照這個配置完成後需要重新啟動 重啟之後在開啟Linux終端 會提示你輸了使用者名稱和密碼 完成後就進入真正的命令輸入終端了

然後輸入命令

“/mnt/e/runtime-master-appcompat/appcompat.sh --dex-file=/mnt/e/runtime-master-appcompat/test.apk”

回車確定 就會開始檢測了

/mnt/ 這是用來和windows互動的命令
後面的e/runtime-master-appcompat/appcompat.sh這個是你在windows下存放這個檔案的路徑 e是e盤 後面的file= apk的路徑也是一樣的
如圖

關於Android P  黑名單的檢測 windows下的 veridex的使用

檢測結果

關於Android P  黑名單的檢測 windows下的 veridex的使用
由上圖可知,一共掃描出

5個非SDK介面在深灰名單

59個非SDK介面在淺會名單

並沒有使用黑名單裡面的非SDK介面

參考

blog.csdn.net/yi_master/a…

blog.csdn.net/zhouzme/art…

相關文章