HarmonyOS鸿蒙Next中混淆之后运行异常
HarmonyOS鸿蒙Next中混淆之后运行异常 App场景:
-
主HSP:部分文件名+接口不能混淆,其他混淆;(出现不混淆的代码无法引用混淆的文件和接口)
-
主HSP+依赖HSP:主功能的调用依赖HSP接口无法找到;(HSP导出类未混淆,内部的接口被混淆了)
-
APP+RN模式开发,很多模块+接口是需要保留原样的,加白名单太多了,另外很容易遗漏(遗漏了之后运行并不会闪退);
-
1个工具类HSP:仅开放调用接口和类,混淆其他相关代码;(Index导出,白名单模式要吓死人)
-
TS/JS模式习惯,Map/JSON属性用点的方式调用,加白名单排查很困难;
已开启混淆规则: -enable-property-obfuscation -enable-toplevel-obfuscation -enable-filename-obfuscation -enable-export-obfuscation -remove-comments -remove-log
已开启白名单模式,不混淆部分文件、文件名、属性和接口
混淆规则太少!白名单模式很繁琐!有没有注解或者标签类的,可以在对应的类、属性和接口上打,就可以忽略混淆???
更多关于HarmonyOS鸿蒙Next中混淆之后运行异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
混淆规则提供了 “保留选项”的能力,请参考
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5#保留选项
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5#混淆各功能上线sdk版本
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5#如何排查功能异常
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5#常见报错案例
目前没有注解或者标签类的忽略混淆的方式
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5#混淆选项
SDK API列表中的名称不会被混淆。
SDK API列表是构建时从SDK中自动提取出来的一个名称列表,其缓存文件为systemApiCache.json,路径为工程目录下build/default/cache/{…}/release/obfuscation中
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5#如何查看混淆效果
更多关于HarmonyOS鸿蒙Next中混淆之后运行异常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,混淆(ProGuard或R8)可能导致应用运行异常。混淆通过重命名类、方法和字段来优化和缩小代码,但有时会误删或错误重命名关键代码,导致运行时错误。常见问题包括反射调用失败、动态加载的类找不到、资源文件路径错误等。解决方法是确保混淆规则正确配置,保留必要的类、方法和字段。可以在proguard-rules.pro
文件中添加-keep
规则,防止关键代码被混淆或删除。例如,保留所有Activity类可以使用-keep public class * extends ohos.aafwk.ability.Ability
。此外,确保资源文件和动态加载的类不被混淆。混淆后,建议进行全面的测试,确保应用功能正常。
在HarmonyOS鸿蒙Next中,混淆可能导致运行异常,通常是由于混淆规则未正确配置。建议检查混淆配置文件(如proguard-rules.pro
),确保关键类、方法或字段未被混淆。特别是涉及反射、JNI调用的代码,需明确保留。同时,使用-keep
或-keepclassmembers
规则保护必要的类或方法。检查日志中的堆栈信息,定位异常源头,并调整混淆规则。确保混淆后的应用经过充分测试,以验证其功能正常。