2

OpenHarmony4.0Release无法调用高级组件问题分析

 6 months ago
source link: https://www.51cto.com/article/783784.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

OpenHarmony4.0Release无法调用高级组件问题分析

作者:Diemit 2024-03-15 09:32:07
最近学习北向应用开发,发现有个高级组件-子标题符合我的布局需求,但是调用的时候发生了cppcrash,调查一番之后解决了,分享一下解决过程。
320ddc018f05f87b9e583523ae06317c686aba.png

想了解更多关于开源的内容,请访问:

51CTO 鸿蒙开发者社区

https://ost.51cto.com

最近学习北向应用开发,发现有个高级组件-子标题符合我的布局需求,但是调用的时候发生了cppcrash,调查一番之后解决了,分享一下解决过程。

2.开发环境

  • 系统版本: 4.0-Release
  • DevEco Studio版本: 4.0 Release (build:4.0.0.600)
  • SDK版本: 4.0.10.18(及以上)
  • 设备型号: 开发者手机

一开始进行应用布局的时候,想着有没有一些系统原生组件能让开发更简单点,不用自己费劲的写自定义组件,然后发现了这个:

https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-composite-components-subheader.md。

参照示例把代码复制到应用之后,编译运行,应用闪退,报cppcrash错误,具体日志没截下来,但是cppcrash一般就是系统代码有问题,然后就在系统源码中搜索subheader,找到了对应的源码:

e1ec4c683aa9b8f7d79048a82dc2e7ca766aac.png

发现subheader是属于advanced_ui_component这个bundle。

d5d9b1925a5aaaf4d4257696839d4707f7f3b8.png

继续调查发现开发者手机的系统组件中并没有包含。

98482fe429d818fe345444fa09627dabec562c.png

查看advanced_ui_component下的文件夹,发现有个patches,里面有这么一个链接https://gitee.com/openharmony/productdefine_common/pulls/682,打开发现pr关闭了,查看源码修改,是有希望在组件里面添加高级组件的,但是不知道什么原因没有合并

f12b5466120d4df4a0e839de23f266b79e814f.png

之后我在开发者手机的配置中自己添加了高级组件。

99a61bd640a393aefc8128c337baa90d760681.png

编译运行后发现cppcrash解决了,但是又报了jscrash,提示没有提供OperationType这个类型。

416612277374daa66a93467d17a5f2d3ed7aab.png

一开始以为是SDK的问题,又是一番左右试探,冥思苦想之后查看源码,发现这么一个低级错误,js源码中,声明的是OperationType,但是导出时写的是OperationStyle!!!

c613dbf457efc6fec1e4933ce3a0d391f1faf4.png
a5d50b148b8d6a32b3576286390c83eb33443f.png

编译之后烧录系统,运行正常了。写到这里不吐不快啊,感觉怎么会有如此低级的错误,代码质量真的急需加强。

想了解更多关于开源的内容,请访问:

51CTO 鸿蒙开发者社区

https://ost.51cto.com

责任编辑:姜华 来源: 51CTO 鸿蒙开发者社区

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK