写点什么

veridex 执行错误分析与方案

作者:XCG00
  • 2023-08-09
    北京
  • 本文字数:791 字

    阅读完需:约 3 分钟

一句话描述:


通过修改 hiddenapi-flags.csv 中的 max-target-s 为 max-target-r 兼容可执行文件,解决执行崩溃问题。



veridex 是 Google 官方提供的用于检查 non-SDK interface 调用的工具。在使用时,需要替换工具包中的 hiddenapi-flags.csv 为你的目标版本的文件。


在替换成 Android 13 的文件后,执行命令发生报错。


veridex F 08-08 18:12:00 19657 4918151 hidden_api.cc:38] Check failed: success Unknown ApiList flag: Landroid/app/Activity;->setDisablePreviewScreenshots(Z)V,max-target-sAbort trap: 6
复制代码


Google 相关问题发现,已经有很多人遇到同样的问题,最早提出问题的是 2022.09.30,但目前依然人提供最终的解法。



于是自己根据报错从源码角度查原因,发现是由于可执行文件与 csv 文件不兼容导致。在源码中会定义可以识别出的 flags 有哪些,csv 文件中如果出现了源码中没有定义的 flag,则会报错。




所以,修改方向就是使可执行文件与 csv 文件匹配


由于没有源码环境,从零搭建再编译成本太高,所以就想从可直接修改的 csv 文件入手。我们的目标是应用升级到 target 33,即 Android 13,所以可以把不能识别的 max-target-s 标识全部替换成 max-target-r。因为我们既然要适配到 s,必然需要适配 r,s 相关的记到 r 上并不影响适配工作。


替换完成后,执行依然报错。


veridex F 08-09 15:50:21 46274 5359706 hidden_api.cc:38] Check failed: success Unknown ApiList flag: Landroid/Manifest$permission;-><init>()V,public-api,sdk,system-api,test-api,Abort trap: 6
复制代码


在表格中查看,这一行在原始 csv 文件和新 csv 文件中完全一样。why?使用 sublime Text 查看,发现文件格式有差异。



原来是在使用 wps 查看和修改 csv 文件文件后,在每行结尾被添加了一些英文逗号。在 sublime text 中使用正则匹配,{2,}并替换成空字符串,直接卡死,最后使用 python 脚本瞬间完成。


修改后的 csv 文件已上传 github,需要自取。veridex


发布于: 刚刚阅读数: 4
用户头像

XCG00

关注

Everything is a game. 2017-12-21 加入

公zh【hey6771】

评论

发布
暂无评论
veridex执行错误分析与方案_Android;_XCG00_InfoQ写作社区