給華為反饋的鴻蒙HarmonyOS Bug與解決進(jìn)度,涉及底層、Java、JS等
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
下面的問題綠色代表當(dāng)前已解決,藍(lán)色代表華為已經(jīng)有解決方案并在新版本中解決,紅色代表未解決,黑色代表自己想出的規(guī)避解決方案,但是還是希望官方能夠解決。
一、工具相關(guān)
(1)xml代碼中飄紅現(xiàn)象,但是實(shí)際代碼運(yùn)行時(shí)生效的
該問題已經(jīng)在SDK4中解決,如果之前安裝過SDK3,需要手動(dòng)將SDK3刪除才不會(huì)有此問題。
(2)graphic目錄下的代碼編寫無任何提示
該問題已經(jīng)在規(guī)劃中,下一個(gè)IDE版本發(fā)布解決
(3)$media、$graphic等無法關(guān)聯(lián)跳轉(zhuǎn)
該問題已經(jīng)在規(guī)劃中,下一個(gè)IDE版本發(fā)布解決
(4)Eco Studio無法導(dǎo)入外部module
單獨(dú)編寫了一個(gè)手動(dòng)導(dǎo)入的辦法,請見我另一篇帖子。
二、JS代碼相關(guān)
(1)、JS FA調(diào)用java PA的一個(gè)關(guān)鍵操作引入,功能正常,但是IDE飄紅
該問題已經(jīng)在下一個(gè)SDK版本中解決,等待發(fā)版本
(2)、JS vedio標(biāo)簽中control屬性設(shè)置為false,視頻有聲音沒圖像
該問題卡了非常之久,最開始認(rèn)為不是bug,是我單例現(xiàn)象,華為方其他合作方和內(nèi)部開發(fā)測試無問題。后來我經(jīng)過模擬器、真機(jī)、精簡代碼、反復(fù)對比測試等各種手段發(fā)現(xiàn)依然不行,最后拉了華為各個(gè)領(lǐng)域的一堆技術(shù)支持支撐,最終確認(rèn)這就是bug,根因是對外發(fā)布的版本有一段代碼沒有合入,確認(rèn)此bug之后會(huì)在后續(xù)版本中更新此問題。
(3)、js中的dialog只能從屏幕底部彈出,并且不能設(shè)置dialog的位置為屏幕居中
(4)、js FA中的img或者vedio標(biāo)簽如何加載ava PA中傳遞過來的圖片或者視頻
(5)、在tv和Wearable居然不支持setTimeout和setInterval方法,僅僅只能在LiteWearable上支持
下面是我的代碼,
然后這個(gè)打印結(jié)果沒有出來,取而代之的是一個(gè)底層的報(bào)錯(cuò),截圖如下:
在TV和Wearable上都會(huì)報(bào)這個(gè)錯(cuò)。
后來通過翻閱HarmonyOS底層源碼等方式,自己嘗試找到一個(gè)規(guī)避辦法。
在app.js種調(diào)用了setTimeout方法,發(fā)現(xiàn)是可以正常執(zhí)行的,沒有我之前的那個(gè)TypeError的錯(cuò)誤了,而之前在頁面中直接調(diào)用這個(gè)是不可行的。瞬間像發(fā)現(xiàn)了新大陸了,于是我自己在app.js中定義一個(gè)mySetTimeout方法來進(jìn)行中轉(zhuǎn)setTimeout方法。代碼如下,
然后我們就要想辦法在頁面中如何調(diào)用app.js中我們自己封裝的方法了。于是頁面中的代碼可以這么寫,如下圖:
在此,問題得到解決,setInterval的解決方案同理。
實(shí)現(xiàn)上雖然麻煩了點(diǎn),總算是解決了問題,希望華為官方后面能更新api以支持可以直接頁面中調(diào)用定時(shí)器。
三、Java代碼相關(guān)
(1)、不支持webview
(2)、java讀寫本地文件,文件路徑如何編寫?
目前官網(wǎng)手冊上編寫了動(dòng)態(tài)權(quán)限、讀寫文件相關(guān)的api,但是官網(wǎng)手冊上寫的路徑的寫法是不可靠的,這個(gè)路徑具體如何編寫?比如讀取sdcard下的,讀取app自帶目錄的,/data/data/app包名。 并且關(guān)于如何讀取工程rawfile目錄下的文件,官網(wǎng)描述了如何讀取的api,但是路徑如何取不清楚,這個(gè)自己試出來了。
(3)、不支持系統(tǒng)相冊調(diào)用
(4)、Java graphic文件中支持shape但是不支持selecter寫法,不方便快速定制一些UI效果。
(5)、模擬器不支持橫豎屏切換,SDK也沒有橫豎屏切換相關(guān)的api??
(6)、遠(yuǎn)程模擬器沒有聲音
等待新版本更新解決
(7)、遠(yuǎn)程模擬器只能啟動(dòng)一個(gè),沒有本地模擬器,無法通過模擬器做傳感器、分布式等開發(fā)
等待新版本更新解決
四、開發(fā)板相關(guān)
(1)開發(fā)板燒錄經(jīng)常會(huì)出現(xiàn)boot燒掛的現(xiàn)象,燒掛之后如何補(bǔ)救
補(bǔ)救措施單獨(dú)編寫了一份文檔給華為方
(2)只能支持多進(jìn)程單線程,不支持信號(hào)量
五、官網(wǎng)手冊錯(cuò)誤糾正
(1)、錯(cuò)誤案例連接地址
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-js-fa-developing-0000000000500572
這個(gè)循環(huán)遍歷數(shù)據(jù)的功能是開發(fā)中最常用的功能了,這里居然是錯(cuò)的,狠狠得把我誤導(dǎo)了不少時(shí)間,還好最后在官網(wǎng)api手冊上找到了
目前官網(wǎng)已經(jīng)修復(fù)
(2)、錯(cuò)誤案例鏈接地址
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/wearable-adding-module-0000001053581601
目前官網(wǎng)已經(jīng)修復(fù)
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)