HarmonyOS 鸿蒙Next 疑惑,目前IDE打包release是不是存在混淆导致的严重问题
HarmonyOS 鸿蒙Next 疑惑,目前IDE打包release是不是存在混淆导致的严重问题
先说发现的问题,默认打包release开启了代码混淆,会导致一个严重的问题,并且在模拟器上无法调试发现。临时解决办法,关闭代码混淆
事情如下,受激励金诱惑,想开发一个元服务,舍不得买真机,于是一路模拟器摸索着开发,中间踩了非常多的坑,让我不得不吐糟一下,目前鸿蒙开发环境对开发者不友好,还有很多成长空间。
受模拟器与真机区别限制太多,砍了大部分功能,调试开发完成打包上架,被审核驳回两次,原因都是功能无法使用。但模拟器调试又无法复现,而release无法调试,不过好在可以运行,通过一路打印日志,发现这么一个问题。
1. 首先我定义一个类如下
```typescript
export class PlayItem {
id:number=0
name: string = ""
short_path: string = ""
full_path: string = ""
ossurl: string = ""
play: boolean = false
}
- 请求后台返回对象,并打印
let httpRequest = http.createHttp();
httpRequest.request ....省略get请求
...
let item=res.result as PlayItem
console.log("debug3==item=="+json.stringify(item))
console.log("debug3 id "+item.id)
console.log("debug3 ossurl "+item.ossurl)
console.log("debug3 full_path "+item.full_path)
console.log("debug3 short_path "+item.short_path)
console.log("debug3 name "+item.name)
- 在模拟器/预览器debug调试,均正常返回,打印日志如下
debug3==item=={"full_path":"airdry.m4a","id":1,"name":"吹风机(止哭效果非常好)","ossurl":"airdry.m4a","short_path":"airdry.m4a","type":"1"}
debug3 id 1
debug3 ossurl https://data.kuizii.com/audio/airdry.m4a
debug3 full_path airdry.m4a
debug3 short_path airdry.m4a
debug3 name 吹风机(止哭效果非常好)
- 然而经过release运行过后,日志输出变成如下
debug3==item=={"full_path":"airdry.m4a","id":1,"name":"吹风机(止哭效果非常好)","ossurl":"airdry.m4a","short_path":"airdry.m4a","type":"1"}
debug3 id 1
debug3 ossurl undefined
debug3 full_path undefined
debug3 short_path undefined
debug3 name 吹风机(止哭效果非常好)
可以发现,id,name都还是正常打印,而其它属性取不到值了.这大无语事件
通过各种排查,查文档,论坛,最终在开发者群里经人提醒可能是默认release代码混淆开启导致,我查了下官方文档也没提到会对动态返回的对象有影响啊,可是经过我关闭混淆之后,一下就成功了。 这…我感觉是个非常严重的Bug啊。大家觉得呢?
附上关闭混淆,在对应模块的build-profile.json5文件中,找到obfuscation.ruleOptions.enable并设置为false
"buildOptionSet": [
{
"name": "release",
"arkOptions": {
"obfuscation": {
"ruleOptions": {
"enable": false,
"files": [
"./obfuscation-rules.txt"
]
}
}
}
}
],
更多关于HarmonyOS 鸿蒙Next 疑惑,目前IDE打包release是不是存在混淆导致的严重问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
感谢您的发帖。
网络请求的返回数据,debug包正常, release包把token返回搞没了,但是其他字段正常。 很难排查。
谁能想到代码混淆能造成这样的影响。
更多关于HarmonyOS 鸿蒙Next 疑惑,目前IDE打包release是不是存在混淆导致的严重问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next的开发环境中,IDE(集成开发环境)在打包release版本时,确实会进行代码混淆处理以提高应用的安全性。代码混淆是一种通过改变代码中的类、方法、变量名等标识符来使代码难以被反编译和理解的技术。然而,这通常不会导致严重的功能问题,因为混淆过程主要是改变标识符的名称,而不改变代码的逻辑。
如果在release版本中遇到了由混淆导致的严重问题,这可能是由于以下几个原因:
- 混淆配置不当:检查混淆配置文件(如proguard规则文件),确保关键类和成员被正确保留。
- 第三方库兼容性:某些第三方库可能不兼容混淆处理,需要在混淆配置中排除这些库。
- 代码本身的问题:代码可能存在某些依赖于特定标识符名称的逻辑,这些逻辑在混淆后失效。
为了解决这些问题,可以重新检查并调整混淆配置,确保所有必要的类和成员都被正确保留。同时,也可以尝试使用IDE提供的调试工具来定位问题的具体原因。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,