步调出现运行时crash会打印报错堆栈,堆栈行号及名称对应于编译及混淆后的缓存文件。开发人员可使用DevEco Studio命令工具Command Line Tools中的hstack插件来还原为源码堆栈。如需支持对应用的堆栈举行还原,必要确保保存足够的信息以举行还原。应用每次编译时都会天生sourceMaps.map,其中存储源代码与编译代码对应位置映射的信息。若开启混淆还会天生nameCache.json文件,其中存储源代码与混淆代码对应名称映射的信息。
DevEco Studio会将sourceMaps.map文件生存在build/default/cache/default/default@CompileArkTS/esmodule/release目录中,将nameCache.json文件生存在build/default/cache/default/default@CompileArkTS/esmodule/release/obfuscation目录中。Hstack插件读取sourceMaps.map文件中的位置映射关系与nameCache.json混淆名称映射关系实现将release应用crash堆栈还原为源码对应堆栈
反混淆工具hstack
hstack必要将Node.js设置到环境变量中
常见题目
混淆后出现雷同hvigor ERROR: Could not resolve “…/…/…/…/…/z2undefined” from "oh_modules/.ohpm/${module_name}/oh_modules/KSAdSDK/src/main/ets/q/p2/v2/w2/x2.js"的题目
导入导出语句中为文件夹路径,而不是文件路径时,混淆文件名时会出现undefined字符串。
由于匹配文件后缀未匹配到,返回undefined。然后在拼接字符串时,undefined被拼接成了文件路径。
请更新版本至4.1release版本。