Android非SDK接口检测工具--veridex在window 10的使用

一.背景

    1.非 SDK 接口限制

            非SDK接口限制在Android P中就已提出,但是在Q中,被限制的接口的分类有较大变化。

            针对非 SDK 接口的限制官网说明

    2.非SDK接口介绍

            为了确保应用稳定性和兼容性,Android 平台开始限制您的应用可在 Android 9(API 级别 28)中使用哪些非 SDK 接口。Android Q包含更新后的受限非 SDK 接口列表(基于Android 开发者之间的协作以及最新的内部测试)。

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

获取方法报错信息

非SDK接口查找

如果您不确定自己的应用是否使用了非 SDK 接口,则可以测试该应用进行确认。

当你调用了非SDK接口时,会有类似Accessing hidden XXX的日志:

Accessing hidden field Landroid/os/Message;->flags:I(light greylist,JNI)

但是一个大项目到底哪里使用了这些方法,靠review代码和看日志肯定是不现实的,谷歌官方也提供了官方检查器veridex用来检测一个apk中哪里使用了非SDK接口。也就是本次要介绍的veridex的使用

二.veridex的下载

    1.官网下载地址:veridex

    2.官网下载需要梯子,这里提供百度云下载地址,如果链接失效,请在下发评论区留言

            百度网盘下载地址                      提取码:2tow

由于veridex现在没有window的版本,所以我们只能window系统的只能自己下载Linux系统进行使用,下面介绍window 1-安装Linux子系统 ubuntu

三.Windows10安装Linux子系统Ubuntu

    1、开启开发者模式

    顺序:打开 系统设置 --- 更新和安全 --- 针对开发人员---选择开发者模式

选择开发者模式

    点击后会自动安装环境

    2、安装 Windows 10 的 Linux 子系统组件

    顺序: 打开 系统设置 --- 应用 --- 右侧的程序和功能 --- 启动或关闭windows功能 ---勾选适用于 Linux 的 Windows 子系统

安装 Windows 10 的 Linux 子系统组件

    确定后,重启电脑,系统更新配置

    3、安装 Linux 子系统

    打开 Windows 应用市场,输入 linux 搜索,选择你自己想要的系统版本,我选择的是 Ubuntu ,然后下载安装,微软的下载速度还是挺快的,很快就下载完了。

Windows 应用市场搜索Linux

    然后点击启动,第一次会进行初始化安装。

安装启动

    安装时注意 Win10 有个存在好久一直没修复很烦人的 BUG ,就是 CMD 总是会遇到不会自动刷新输出内容卡在那儿不动,一直显示安装中,实际初始化是很快的,按下回车键发现已经安装好了只是没输出而已。

设置帐号密码

    初始化安装完成,现在设置帐号密码,就搞定了

    参考文档:Windows10安装Linux子系统Ubuntu

四.veridex的使用

    下载好veridex后解压文件,选择veridex-linux文件解压,并打开Ubuntu进入到该文件夹目录,选择要检测的安装包apk文件复制到相同文件夹目录下,然后使用下面的命令执行(test.apk为你的apk文件名):

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

    扫描结果分为两部分,一部分为被调用的非SDK接口的位置,另一部分为非SDK接口数量统计:

检测结果

        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接口需要我们进行适配。

五.非SDK接口适配

        如果您的应用依赖于非 SDK 接口,则应该开始计划迁移到 SDK 替代方案。如果您无法为应用中的某项功能找到使用非 SDK 接口的替代方案,则应该请求新的公共 API。

        官方要求targetSDK>=P的应用不使用这些方法,并寻找其他的公共API去替代这些非SDK接口,如果找不到,则可以向谷歌申请,请求一个新的公共API https://developer.android.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces#feature-request (一般不需要)。

项目中使用非SDK接口大概率有以下两种情况:

    1.在自定义View的过程中为了方便,使用反射修改某个参数。

    2.三方SDK中使用了非SDK接口(这种情况比较多)。

第一种是好解决的,毕竟是我们自己写的代码。

第二种就头疼了,只能更新到最新的三方SDK版本,或者提工单、换库(也是整个适配过程中工作量最庞大的部分)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容