Android Q非SDK接口的检测查找

 先上干货 ,非SDK接口的Google官方检测工具:

     Linux版本:veridex-linux

     Mac版本:veridex-mac

 

1.非SDK接口限制

Android P版本中就已经提出了非SDK接口限制,但在最新的Q版本中,被限制的接口的分类有较大变化

非SDK接口限制就是某些SDK中的私用方法,如private方法,你通过Java反射等方法获取并调用了。那么这些调用将在target>=P或target>=Q的设备上被限制使用,当你使用了这些方法后,会报错。

 

2.检测工具的使用

  1)根据系统下载对应版本的工具并解压

       非SDK接口的Google官方检测工具:

       Linux版本:veridex-linux

       Mac版本:veridex-mac

  2)使用命令行cd到veridex-linux/veridex-mac 目录下

  3) chmod 777 * 给权限(不给权限的情况下可能失败)

  4)执行./appcompat.sh --dex-file=Q.apk 进行检测(Q.apk为包的绝对路径,如果包与veridex在相同目录下直接输入包文件名即可)

  5)查看结果

  另:如果是执行 ./appcompat.sh --dex-file=Q.apk > report.txt 会自动检测并把控制台输出重定向到报告文件

 

以下是mac的实际操作与结果:(只截取了部分内容)

执行过程

打印结果

Android Q非SDK接口的检测查找_第1张图片

Android Q非SDK接口的检测查找_第2张图片

3.结果分析

  1)greylist: 灰名单,即当前版本仍能使用的非SDK接口,但在下一版本中可能变成被限制的非SDK接口

  2)blacklist:黑名单,使用了就会报错。也是我们项目中必须解决的非SDK接口

  3)greylist-max-o:在targetSDK<=O中能使用,但是在targetSDK>=P中被限制的非SDK接口

  4)greylist-max-p:在targetSDK<=P中能使用,但是在targetSDK>=Q中被限制的非SDK接口

所以从适配Q的角度出发,除了greylist我们可以暂时不解决以外,其余三种类型的非SDK接口需要我们进行适配。

 

特别感谢:好基友宇神

 

 

 

 

 

 

 

 

你可能感兴趣的:(android,Q)