《從零開發(fā)鴻蒙小游戲App》直播答疑(包含新版2048游戲代碼)
https://harmonyos.51cto.com/#zz
請到附件中下載新版2048游戲代碼。最好能對該代碼再做一些優(yōu)化(見下述問題8),歡迎感興趣的朋友隨時跟我探討,^_^
問題1:如何將開發(fā)的Lite Wearable項目部署在鴻蒙手表Watch GT2 Pro真機上?
答復:
步驟(1)生成秘鑰和證書請求文件
鏈接:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/create_csr-0000001053702411。
步驟(2)在手機中安裝App:應用調測助手,通過該App獲得鴻蒙手表的udid
點擊主界面中的復制按鈕,可以復制手表的udid。
步驟(3)給項目起一個包名(Package name)
起的包名是任意的,例如:com.test.lwdemo。以后每次創(chuàng)建Lite Wearable項目時,都要使用該包名。
步驟(4)發(fā)郵件給agconnect@huawei.com
郵件中要包含4樣東西:步驟(1)中的兩個文件,步驟(2)中的udid,步驟(3)中的包名。
步驟(5)官方回復郵件
回復的郵件中包含兩個文件:.p7b文件、.cer文件。
步驟(6)在DevEco Studio中創(chuàng)建一個Lite Wearable的項目
創(chuàng)建項目時的Package Name,請使用步驟(3)中的包名。
步驟(7)在DevEco Studio中進行配置
在菜單欄中選擇File,然后點擊Project Structure,在彈出窗口中做如下配置:

步驟(8)在DevEco Studio中構建簽名的hap包
在菜單欄中選擇Build,在彈出的菜單中點擊Build App(s)/Hap(s),然后點擊Build Debug Hap(s)。
生成的簽名hap包所在的路徑為:<項目根路徑>\build\outputs\hap\debug\liteWearable。
步驟(9)將簽名的hap包拷貝到手機的指定位置
在手機的sd卡根目錄中新建一個名為haps的目錄,將步驟(8)中的hap包拷貝到haps目錄中。
步驟(10)將手機中的hap包通過App應用調測助手安裝到手表中
打開步驟(2)中安裝的App應用調測助手,在主界面中點擊按鈕“應用管理”,在新打開的頁面中就可以看到手機中的hap包了。點擊hap包后面的按鈕“安裝”,就可以將hap包安裝到手表中了。安裝完成后,應用調測助手中會跳出提示“安裝完成”。
問題2:在Lite Wearable上開發(fā)的項目,如何做到“一次開發(fā),多端部署”(直接部署在Wearable和TV這兩個平臺上)
答復:
要點(1)Lite Wearable屬于輕鴻蒙,Wearable和TV屬于富鴻蒙
輕鴻蒙和富鴻蒙在項目配置上目前是不統(tǒng)一的,比如富鴻蒙目前需要有Java的shell,而輕鴻蒙是沒有的,所以在DevEco Studio中輕鴻蒙和富鴻蒙的項目是不能通用的,還不能做到同一個項目支撐兩套開發(fā)。但是,在Lite Wearable平臺上編寫的JS代碼文件是可以直接復用到Wearable或TV的項目里面的。
要點(2)通過指定deviceType,可以讓同一個項目在多個輕鴻蒙設備或多個富鴻蒙設備上通用
例如:Wearable和TV都屬于富鴻蒙。新建一個Wearable的項目,在項目的文件config.json中,deviceType的值默認是["wearable"]。如果將deviceType的取值修改為["wearable", "tv"],那么這個Wearable的項目就可以直接運行在TV平臺上。
問題3:就目前而言,相對于Wearable和TV這兩個平臺,為什么說在Lite Wearable這個平臺上相關的開發(fā)工具是最全面、最穩(wěn)定的,并且給開發(fā)者的體驗是最好的?
答復:
要點(1)鴻蒙手表Watch GT2 Pro已經上市
既然都已經上市了,所以相關的開發(fā)工具是最全面、最穩(wěn)定的!
要點(2)Lite Wearable既有本地的預覽器,又有本地的模擬器
如果選擇Wearable和TV這兩個平臺進行App的開發(fā),目前華為還沒有開放基于X86的本地模擬器,因此,需要將編寫的代碼發(fā)送到遠程的ARM處理器以運行代碼,在本機上只能預覽運行結果,而無法在本機上運行和調試代碼。因此,就目前而言,Wearable和TV這兩個平臺,給開發(fā)者的體驗是相對不太好的。但是,如果我們選擇Lite Wearable這個平臺,那就不一樣了,既可以使用本機的預覽器Previewer來預覽代碼的運行效果,也可以使用本機的模擬器simulator來運行和調試代碼,因此,就目前而言,Lite Wearable這個平臺給開發(fā)者的體驗是最棒的!
問題4:開發(fā)Lite Wearable的App,可以使用的編程語言有哪些?支持Python、C#或C++嗎?
答復:
要點(1)作為第三方開發(fā)者,開發(fā)Lite Wearable的App,只能使用編程語言JavaScript。
開發(fā)Wearable的App,可以使用的編程語言有:JavaScript、Java。
開發(fā)TV的App,可以使用的編程語言有:JavaScript、Java。
開發(fā)手機的App,可以使用的編程語言有:JavaScript、Java。
短期內,對于第三方開發(fā)者,不會支持其它編程語言,包括:Python、C#、C++、等等。
要點(2)對于鴻蒙手表Watch GT2 Pro中預裝的App,華為內部的工程師在開發(fā)時還可以使用編程語言C++。
C++只供華為內部的工程師使用,目前沒有對第三方開發(fā)者開發(fā),以后是否會開放,還要看鴻蒙團隊的考量。
問題5:老師在直播中有提到:鴻蒙對HTML、CSS和JavaScript做了很多裁剪和優(yōu)化,具體做了哪些裁剪和優(yōu)化呢?
答復:
目前官方還沒有發(fā)布一個完整詳細的list,來說明具體做了哪些裁剪和優(yōu)化。如果有Web前端開發(fā)的經驗,可以閱讀開源框架ace_lite_jsfwk的源代碼,這是一個輕量級的JS核心開發(fā)框架,地址為:https://gitee.com/openharmony/ace_lite_jsfwk。
問題6:在JS代碼中調用文件存儲或數據存儲相關的API時,只能"寫"數據,而無法"讀"數據,請問如何操作才能讀到數據呢?
答復:
這是預覽器Previewer和模擬器simulator的一個bug,我已經將這個bug反饋給官方,官方會在本月中旬發(fā)布一個新版本以修復該bug。
問題7:當把編譯之后的簽名hap包安裝到鴻蒙手表Watch GT2 Pro之后,在預覽器或模擬器看到的頁面顯示效果,與在真機看到的顯示效果并不是完全一致的,請問如何解決才能讓兩者有一致的顯示效果?
答復:
這是預覽器Previewer和模擬器simulator的一個bug,我已經將這個bug反饋給官方,官方會在本月中旬發(fā)布一個新版本以修復該bug。
問題8:老師共享的2048游戲代碼中,對于index.hml中的組件canvas,在canvas的下方顯示了一個紅色的波浪線,把鼠標放上去,提示說:<canvas>是一個未知的組件,這是什么原因呢?
答復:
目前,官方還沒有正式release組件canvas,因此在其下方會顯示一個紅色的波浪線,但是,并不影響代碼的運行。之前共享給大家的2048游戲代碼,仍然是可以正常運行在預覽器或模擬器中的。
因為組件canvas還沒有正式release,所以,之前共享給大家的2048游戲代碼,無法正常運行在鴻蒙手表Watch GT2 Pro中。為此,這里再為大家提供一份2048的游戲代碼(可以到附件中下載)。該代碼沒有使用組件canvas,而是采取另外一種實現思路:當滑動時,去更換16個格子的背景色、數字以及數字的顏色。因為該份代碼中大量使用了動態(tài)綁定,所以導致手表的內存占用較大,近乎接近臨界值,因此,最好是能對該份代碼再做一些優(yōu)化,歡迎感興趣的朋友隨時跟我探討,^_^。
https://harmonyos.51cto.com/#zz