OpenHarmony4.0Release無法調用高級組件問題分析
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,找到了對應的源碼:
發現subheader是屬于advanced_ui_component這個bundle。
繼續調查發現開發者手機的系統組件中并沒有包含。
查看advanced_ui_component下的文件夾,發現有個patches,里面有這么一個鏈接https://gitee.com/openharmony/productdefine_common/pulls/682,打開發現pr關閉了,查看源碼修改,是有希望在組件里面添加高級組件的,但是不知道什么原因沒有合并
之后我在開發者手機的配置中自己添加了高級組件。
編譯運行后發現cppcrash解決了,但是又報了jscrash,提示沒有提供OperationType這個類型。
一開始以為是SDK的問題,又是一番左右試探,冥思苦想之后查看源碼,發現這么一個低級錯誤,js源碼中,聲明的是OperationType,但是導出時寫的是OperationStyle?。。?/p>
編譯之后燒錄系統,運行正常了。寫到這里不吐不快啊,感覺怎么會有如此低級的錯誤,代碼質量真的急需加強。