OpenHarmony4.0Release無法調(diào)用高級組件問題分析
想了解更多關(guān)于開源的內(nèi)容,請?jiān)L問:
1.簡介
最近學(xué)習(xí)北向應(yīng)用開發(fā),發(fā)現(xiàn)有個(gè)高級組件-子標(biāo)題符合我的布局需求,但是調(diào)用的時(shí)候發(fā)生了cppcrash,調(diào)查一番之后解決了,分享一下解決過程。
2.開發(fā)環(huán)境
- 系統(tǒng)版本: 4.0-Release
- DevEco Studio版本: 4.0 Release (build:4.0.0.600)
- SDK版本: 4.0.10.18(及以上)
- 設(shè)備型號(hào): 開發(fā)者手機(jī)
一開始進(jìn)行應(yīng)用布局的時(shí)候,想著有沒有一些系統(tǒng)原生組件能讓開發(fā)更簡單點(diǎn),不用自己費(fèi)勁的寫自定義組件,然后發(fā)現(xiàn)了這個(gè):
https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/arkui-ts/ts-composite-components-subheader.md。
參照示例把代碼復(fù)制到應(yīng)用之后,編譯運(yùn)行,應(yīng)用閃退,報(bào)cppcrash錯(cuò)誤,具體日志沒截下來,但是cppcrash一般就是系統(tǒng)代碼有問題,然后就在系統(tǒng)源碼中搜索subheader,找到了對應(yīng)的源碼:
發(fā)現(xiàn)subheader是屬于advanced_ui_component這個(gè)bundle。
繼續(xù)調(diào)查發(fā)現(xiàn)開發(fā)者手機(jī)的系統(tǒng)組件中并沒有包含。
查看advanced_ui_component下的文件夾,發(fā)現(xiàn)有個(gè)patches,里面有這么一個(gè)鏈接https://gitee.com/openharmony/productdefine_common/pulls/682,打開發(fā)現(xiàn)pr關(guān)閉了,查看源碼修改,是有希望在組件里面添加高級組件的,但是不知道什么原因沒有合并
之后我在開發(fā)者手機(jī)的配置中自己添加了高級組件。
編譯運(yùn)行后發(fā)現(xiàn)cppcrash解決了,但是又報(bào)了jscrash,提示沒有提供OperationType這個(gè)類型。
一開始以為是SDK的問題,又是一番左右試探,冥思苦想之后查看源碼,發(fā)現(xiàn)這么一個(gè)低級錯(cuò)誤,js源碼中,聲明的是OperationType,但是導(dǎo)出時(shí)寫的是OperationStyle?。?!
編譯之后燒錄系統(tǒng),運(yùn)行正常了。寫到這里不吐不快啊,感覺怎么會(huì)有如此低級的錯(cuò)誤,代碼質(zhì)量真的急需加強(qiáng)。