veridex 执行错误分析与方案
一句话描述:
通过修改 hiddenapi-flags.csv 中的 max-target-s 为 max-target-r 兼容可执行文件,解决执行崩溃问题。
veridex 是 Google 官方提供的用于检查 non-SDK interface 调用的工具。在使用时,需要替换工具包中的 hiddenapi-flags.csv 为你的目标版本的文件。
在替换成 Android 13 的文件后,执行命令发生报错。
Google 相关问题发现,已经有很多人遇到同样的问题,最早提出问题的是 2022.09.30,但目前依然人提供最终的解法。
于是自己根据报错从源码角度查原因,发现是由于可执行文件与 csv 文件不兼容导致。在源码中会定义可以识别出的 flags 有哪些,csv 文件中如果出现了源码中没有定义的 flag,则会报错。
所以,修改方向就是使可执行文件与 csv 文件匹配。
由于没有源码环境,从零搭建再编译成本太高,所以就想从可直接修改的 csv 文件入手。我们的目标是应用升级到 target 33,即 Android 13,所以可以把不能识别的 max-target-s 标识全部替换成 max-target-r。因为我们既然要适配到 s,必然需要适配 r,s 相关的记到 r 上并不影响适配工作。
替换完成后,执行依然报错。
在表格中查看,这一行在原始 csv 文件和新 csv 文件中完全一样。why?使用 sublime Text 查看,发现文件格式有差异。
原来是在使用 wps 查看和修改 csv 文件文件后,在每行结尾被添加了一些英文逗号。在 sublime text 中使用正则匹配,{2,}并替换成空字符串,直接卡死,最后使用 python 脚本瞬间完成。
修改后的 csv 文件已上传 github,需要自取。veridex
版权声明: 本文为 InfoQ 作者【XCG00】的原创文章。
原文链接:【http://xie.infoq.cn/article/3ad5153ce7eb04568ee2241ea】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论