Android P版本 (七)veridex工具扫描非 SDK 接口

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yi_master/article/details/80664674

在 Android P 版本中,谷歌加入了非 SDK 接口使用限制,无论是通过调用、反射还是JNI等方式,开发者都无法对非 SDK 接口进行访问,此接口的滥用将会带来严重的系统兼容性问题。
在开发过程中,开发者如果调用了非 SDK 接口,会导致应用出现crash,无法启动;或在运行过程中出现崩溃、闪退等现象;也可能导致应用功能不可用等严重兼容性问题,其影响范围波及所有调用此接口的应用;

1:那什么是SDK接口?
https://developer.android.google.cn/reference/packages,能够在谷歌网站查询到的接口都是 SDK 接口;

2:那什么是非SDK接口?
所有SDK接口之外的都是非SDK接口

2.1:非SDK接口的三种分类:浅灰名单,深灰名单和黑名单
这里写图片描述

由图可知,当在一个P版本的手机中,即使你的应用targetsdk < p,如果你的app使用了黑名单,那么也会造成app的crash

2.2:那我们在app中使用了非SDK的接口,会出现什么情况?

  • 所有私有 API 均在 Logcat 中显示警告。
  • DP版本在 Activity 开始时会显示 Toast 警告。
  • Debuggable 应用出现对话框警告,弹框内容和 Toast 提示内容一致。
  • 从 DP2 开始,由StrictMode内新增的detectNonSdkApiUsage()来检测违规的调用。

3:所以我们应该明确,在P版本中,使用非SDK接口会造成各种兼容性问题,具体产生的不良后果如图所示
这里写图片描述

4:那我们如何知道自己的app使用了非标准SDK的接口?google已经为我们制造了这样的一个工具:veridex

veridex下载地址

veridex工具支持linux,windows和macOS三种操作系统,解压缩之后,你会在README.txt中看到具体的操作指南,这里以linux环境为例做个示范

4.1)拷贝runtime-master-appcompat至具体目录,如下图所示
这里写图片描述

扫描二维码关注公众号,回复: 3387743 查看本文章

4.2)解压缩runtime-master-appcompat文件夹里面的veridex-linux.zip至本地,并拷贝待扫描的apk至此位置
这里写图片描述

由上图可知,我是将veridex-linux.zip解压缩至原位置,同时将待扫描apk即migusdk-debug.apk也放到了该位置

4.3)执行如下命令完成apk对非SDK接口的扫描

./appcompat.sh –dex-file=test.apk

我执行的具体命令和扫描结果如下
这里写图片描述

由上图可知,一共扫描出
1个非SDK接口在深灰名单
8个非SDK接口在浅会名单
并没有使用黑名单里面的非SDK接口

猜你喜欢

转载自blog.csdn.net/yi_master/article/details/80664674
今日推荐