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