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

Diemit
发布于 2024-3-13 11:35
浏览
1收藏

1 简介

最近学习北向应用开发,发现有个高级组件-子标题符合我的布局需求,但是调用的时候发生了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,​找到了对应的源码:

OpenHarmony4.0Release无法调用高级组件问题分析-鸿蒙开发者社区


​发现​subheader​​是属于advanced_ui_component这个bundle,

OpenHarmony4.0Release无法调用高级组件问题分析-鸿蒙开发者社区

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

OpenHarmony4.0Release无法调用高级组件问题分析-鸿蒙开发者社区

查看advanced_ui_component下的文件夹,发现有个patches,里面有这么一个链接​​https://gitee.com/openharmony/productdefine_common/pulls/682​

,打开发现pr关闭了,查看源码修改,是有希望在组件里面添加高级组件的,但是

不知道什么原因没有合并

OpenHarmony4.0Release无法调用高级组件问题分析-鸿蒙开发者社区

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

OpenHarmony4.0Release无法调用高级组件问题分析-鸿蒙开发者社区


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

OpenHarmony4.0Release无法调用高级组件问题分析-鸿蒙开发者社区

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

OpenHarmony4.0Release无法调用高级组件问题分析-鸿蒙开发者社区

OpenHarmony4.0Release无法调用高级组件问题分析-鸿蒙开发者社区

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


已于2024-3-13 11:35:58修改
4
收藏 1
回复
举报
3条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

所以有时真是不得不造轮子

回复
2024-3-13 11:58:38
有故事的王同学
有故事的王同学

开发者手机在哪里买?

回复
2024-5-13 14:26:17
青舟321
青舟321

坑确实不少

回复
2024-5-14 10:43:31
回复
    相关推荐