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

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