開篇第一句,所有學習與開發(fā)資料以官方資料為準。任何博客類只能作為參考,自行判斷優(yōu)良,不要被誤導,包括本人的所有博客。
HarmonyOS 官方文檔地址
應用開發(fā):
https://developer.harmonyos.com/cn/documentation
設備開發(fā):
https://device.harmonyos.com/
OpenHarmony 官方文檔地址
如下:
https://gitee.com/openharmony/docs/
HarmonyOS 與 OpenHarmony 的區(qū)別
關于 HarmonyOS 與 OpenHarmony 的區(qū)別我這里不再過多闡述,請看開放原子基金會的官方介紹。
我這里著重從開發(fā)角度上講解它們的區(qū)別:
①開發(fā)語言支持
HarmonyOS 主要支持 Java 和 JS 來開發(fā)應用(當然還有 C 和 C++),而 OpenHarmony 不支持 Java 來開發(fā)應用。
目前階段 HarmonyOS 里面還是有部分功能是基于 AOSP 的,因此還是要用 Java,而 OpenHarmony 不再使用 Java,應該是想徹底放棄 AOSP 了。
②SDK 的不同
應用開發(fā)工具都是統(tǒng)一使用華為的 DevEco Studio,但是使用的 sdk 不同,開發(fā)前首先要切換 sdk 配置。
雖然 HarmonyOS 和 OpenHarmony 都可以用 js 來開發(fā)應用,但是它們的 api 還是有些細微的區(qū)別。
OpenHarmony 的 api 參考請參看 OpenHarmony 的官方文檔,千萬別看錯了。
然后 OpenHarmony 的 sdk 請下載官方的支持 OpenHarmony 開發(fā)的 sdk,而不是 DevEco studio 自帶的 HarmonyOS sdk。
關于 OpenHarmony sdk 配置請參考官方文檔,我這里僅僅附上官方鏈接:
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/配置OpenHarmony-SDK.md
③創(chuàng)建項目方式不同
在 DevEco 2.2 Beat1 版本之后,可以直接支持創(chuàng)建 OpenHarmony 應用項目了。
創(chuàng)建方式如下圖:
這里重點對 standard 解釋下,即 OpenHarmony 官方說的“標準系統(tǒng)”,本文中所說的所有 OpenHarmony 應用開發(fā)都是針對的標準系統(tǒng)。
輕量和小型系統(tǒng)(參考內存《128MB),標準系統(tǒng)(參考內存≥128MB),詳細說明請看官方文檔:
https://gitee.com/openharmony/docs/blob/master/zh-cn/readme.md
⑤運行調測方式不同
HarmonyOS 支持 previewer 預覽、模擬器運行、真機運行三種方式;OpenHarmony 支持 previewer 預覽、真機(目前主要使用 3516 系列開發(fā)板)運行。
首先,目前 OpenHarmony 是沒有模擬器的,真正運行調測只能借助開發(fā)板(主要采用 HI3516 系列開發(fā)板),注意目前是不支持手機平板等真機調測的。
⑥簽名方式不同
OpenHarmony 的簽名方式我這里就不贅述,直接附上官方文檔鏈接:
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/配置OpenHarmony應用簽名信息.md
HarmonyOS 的簽名我最想吐槽的就是需要添加設備 ID。OpenHarmony 的簽名我只想吐槽一句,既然 open 為何還必須要簽名。
埋坑
上面的區(qū)別對比已經(jīng)埋了部分坑了,下面再針對純粹上層應用開發(fā)人員初次接觸 OpenHarmony 開發(fā)的坑。
①OpenHarmony 操作系統(tǒng)編譯
為何要編譯操作系統(tǒng),如果你手上有現(xiàn)成的安裝好操作系統(tǒng)的開發(fā)板你,操作系統(tǒng)和 sdk 版本也對應。
比如我們是基于 OpenHarmony-SDK-2.0-Canary 版本,那你應該燒錄一個對應的操作系統(tǒng)版本。比如我手上是很久之前的一個 1.0 版本的 3516 開發(fā)板,顯然要升級。
操作系統(tǒng)編譯的完整資料依然請參考官網(wǎng):
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-standard.md
關于這里我強調幾點:
(1)使用 repo 進行代碼倉同步時,官方描述的操作命令如下:
repo sync -c
建議替換成:
repo sync -c -j8
這個后面的數(shù)字 8 根據(jù)自己的 cpu 核數(shù)進行設置,查看 cpu 核數(shù)的命令如下:
grep -c ‘processor’ /proc/cpuinfo
這樣配置之后,會大大加快你的同步速度,否則這個同步時間會非常漫長。
同步過程請使用無限制的公網(wǎng)網(wǎng)絡,比如某些公司訪問外網(wǎng)會有限制。然后就是網(wǎng)絡下載速度也會會直接關系到你的同步速度。
repo 中途同步失敗了(比如斷網(wǎng)或者異常關機),也不要過于緊張,可以根據(jù) log 提示刪除某些同步異常的部分倉庫,然后繼續(xù)執(zhí)行上面的同步命令即可。
(2)編譯環(huán)境安裝時,Linux 編譯服務器終端輸入不識別的命令時,提示“ImportError: No module named apt_pkg”。
解決辦法:執(zhí)行如下命令重新安裝 python3-apt。
sudo apt-get remove python3-apt
sudo apt-get install python3-apt
(3)編譯構建時,我這里遇到一個大坑,就是電腦突然斷電了,然后再執(zhí)行編譯的時候報大量錯誤,錯誤內容如下:
rm: cannot remove ‘XXXXX‘: Bad message
這種問題本來可以采用 fsck 的方式來修復文件系統(tǒng),但是由于編譯過程中產生了大量的很小的臨時文件,所以修復起來太慢太不現(xiàn)實,干脆刪除了虛擬機重新加載之前保存的虛擬機鏡像,重新再來一次。
②操作系統(tǒng)燒錄
官方描述的是使用網(wǎng)口進行燒錄,官網(wǎng)地址如下:
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-standard-burn.md
需要注意的點:本文檔針對的開發(fā)版是官方推薦的 AI_Camera_Hi3516DV300 開發(fā)套件。
(1)確保 USB 轉串口驅動能安裝上,即在 PC 的設備管理器上能識別到 COM 口。
首先安裝 USB-to-Serial Comm Port.exe 驅動,如果沒有識別請再安裝 CH341SER 驅動。
(2)網(wǎng)口燒錄注意事項:不支持無線,需要使用網(wǎng)線直連 PC,網(wǎng)卡是千兆網(wǎng)卡,最好選擇六類網(wǎng)線,這樣速度更快。
PC 端需要設置 ip 地址為 192.168.1.2/24,網(wǎng)關為 192.168.1.1,如下圖:
燒錄工具上網(wǎng)口的設置:
upload_net_server_ip:對應 PC 上網(wǎng)口設置的地址。
upload_net_client_mask:設置開發(fā)板的子網(wǎng)掩碼,對應 PC 上設置的子網(wǎng)掩碼,確保開發(fā)板和 PC 在一個網(wǎng)段。
upload_net_client_gw:和 PC 上設置的網(wǎng)關保持一致。
upload_net_client_ip:設置開發(fā)板的 IP 地址,例如 192.168.1.3,確保和 PC 在一個網(wǎng)段即可。
我沒有使用官方推薦的 DevEco Device Tool 進行燒錄,而是使用了我喜歡的 HiBurn 進行燒錄,但是基本配置相同,截圖如下:
點完燒寫按鈕之后,需要先下電再上電,上電之后就會自動進行燒寫了。網(wǎng)口燒錄時間比較慢,標準系統(tǒng) 2.2beta 版本燒錄估計要 20 分鐘。
(3)USB 燒錄(強烈推薦,最快的方式,一分鐘即可燒寫完畢),這種方式是我在配置過程中最卡我的一種方式。主要就是 USB 的驅動一直無法識別。
首先我們來看看正確識別驅動之后,設備管理器中的頁面,必須看到通用串行設備下識別了設備才行,如下圖:
(1)開發(fā)套件上面有兩個 typec 接口,屁股后面的那個才是 USB 口,前面的僅僅是供電口。
(2)安裝 HiUSBBurnDriver 驅動程序。
(3)Win10 操作系統(tǒng)需要修改注冊表。
a.創(chuàng)建一個“文本文檔.TXT”,文件后綴名修改為 .reg,如 usb.reg。
b.右鍵打開創(chuàng)建的 usb.reg,將如下腳本拷貝到該文件中,然后保存并關閉。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlusbflags12D1D0010100]“SkipBOSDescriptorQuery”=hex:01,00,00,00“osvc”=hex:00,00“IgnoreHWSerNum”=hex:01
c.雙擊執(zhí)行 usb.reg 文件,自動修改注冊表文件信息。
(4)我 PC 依然遲遲無法識別 USB 驅動的時候,我在系統(tǒng)的 boot 里面(串口終端連接下,進入 uboot 之前,狂按回車進入 boot)輸入以下命令終于解決了無法識別驅動的問題。
usb device
(5)待識別了 USB 驅動之后燒錄需要注意的問題。
設置好燒錄鏡像之后,在下電在上電之前,請一直按住開發(fā)板上面的 update 按鈕(在開發(fā)板的串口旁邊),上電之后,待出現(xiàn)開始燒寫的打印之后再松開按鈕。
③OpenHarmony 安裝應用到開發(fā)板
此處依然貼出對應的官方文檔:
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/安裝運行OpenHarmony應用.md
這里使用的是 hdc_std.exe,而不是 HarmonyOS sdk 中的 hdc.exe。
hdc_std.exe 在哪里?它在 OpenHarmony sdk 的 toolchains 目錄下面,確保它和開發(fā)板上的版本一致,即確保 sdk 版本和開發(fā)板的操作系統(tǒng)版本匹配即可。
④自己編譯 OpenHarmony SDK
為了確保 sdk 和自己燒寫的操作系統(tǒng)版本一致,我們可以自己編譯 sdk。
編譯命令如下:
。/build.sh --product-name ohos-sdk --ccache
結果輸出:
out/ohos-arm64-release/packages/ohos-sdk/
耗時了好久終于寫完了,希望本文加上配上 OpenHarmony 官方的文檔能夠幫助更多的開發(fā)者快速投入 OpenHarmony 共建中。
責任編輯:haq
-
操作系統(tǒng)
+關注
關注
37文章
6808瀏覽量
123291 -
鴻蒙系統(tǒng)
+關注
關注
183文章
2634瀏覽量
66308 -
HarmonyOS
+關注
關注
79文章
1974瀏覽量
30147 -
OpenHarmony
+關注
關注
25文章
3716瀏覽量
16271
原文標題:HarmonyOS與OpenHarmony,區(qū)別很大!
文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區(qū)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論