如何解决module打包完成之后看不到源码的问题?
工程级build-profile.json5中useNormalizedOHMUrl配置为true时,打包产物为字节码HAR,未开启混淆时,.ets代码文件打包后产物后为.abc、.d.ets文件,无法查看源码。工程级build-profile.json5中useNormalizedOHMUrl配置为false时,打包产物为源码码HAR,未开启混淆时,.ets代码文件打包后产物后依然为.ets文件
本问答帖原创发布在华为开发者联盟社区 ,欢迎开发者前往论坛提问交流。
更多与该问题相关的讨论,请点击原帖查看:
module打包问题,打包完成之后看不到源码了-华为开发者问答 | 华为开发者联盟 (huawei.com)
问题描述:
如何解决module打包完成之后看不到源码的问题?
解决方案:
【背景知识】
HAR打包产物有两种,一种是字节码HAR,一种是源码HAR,他们的区别:
- 字节码HAR:HAR包中包含abc字节码、资源文件、配置文件、readme、changelog声明文件、license证书文件,提升发布到ohpm中心仓产物的安全性。
- 源码HAR:HAR包中包含源码的HAR包,其中包含源码、资源文件以及配置文件等,方便开发者进行本地调测。
通过在HAR模块的build-profile.json5中,配置byteCodeHar属性,设置打包产物为源码HAR,还是字节码HAR。HAR模块的build-profile.json5 byteCodeHar属性默认不配置,通过工程的build-profile.json5中的useNormalizedOHMUrl进行控制:
- 当工程级build-profile.json5中useNormalizedOHMUrl配置为true时,byteCodeHar缺省默认值为true;
- 当useNormalizedOHMUrl配置为false时,byteCodeHar缺省默认值为false。
【问题定位】
- 若是开启混淆,.ets代码文件打包后产物为.js、.d.ets文件,无法查看源码。
- 工程级build-profile.json5中useNormalizedOHMUrl配置为true时,打包产物为字节码HAR,未开启混淆时,.ets代码文件打包后产物后为.abc、.d.ets文件,无法查看源码。
- 工程级build-profile.json5中useNormalizedOHMUrl配置为false时,打包产物为源码码HAR,未开启混淆时,.ets代码文件打包后产物后依然为.ets文件,且可以查看源码。
【分析结论】
由于工程级build-profile.json5中useNormalizedOHMUrl配置为true,导致打包产物为字节码HAR,所以不能查看源码。
【修改建议】
将工程级build-profile.json5中useNormalizedOHMUrl配置为false,重新使用Make Module 'module'打包HAR包,打出的产物即可查看源码。
【总结】
若是想查看HAR源码,建议编译源码HAR,对于对外提供SDK,以及高安全的场景,推荐使用字节码HAR,可以降低源码泄漏的风险。
tips:字节码HAR有使用限制,请查看字节码约束条件。
更多推荐

所有评论(0)