Android P版本使用veridex工具扫描非 SDK 接口

在 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,下载地址为:

链接:https://pan.baidu.com/s/1TWtezFscuf94L2VB4G8Qkw 
提取码:awtb 

veridex工具支持linux和macOS系统,解压缩之后,你会在README.txt中看到:

### Windows 10

Native Windows binaries are not provided, but the Linux binaries can be executed
with Windows Subsystem for Linux (WSL).

在windows下没有尝试成功,这里以linux环境为例做个示范
4.1、拷贝runtime-master-appcompat至具体目录,如下图所示

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接口

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值