一、概念
- OpenHarmony(OH) :?OpenAtom OpenHarmony
- HarmonyOS(HO):開發 | 華為開發者聯盟 (huawei.com)
HO當前最高是3.1,在華為mate 60上面也是。關于4.0、5.0和next這類版本說法都是面向用戶的,不是開發人員。對于程序員,最高只到了版本3。
OH基于內核,市面了解的是叫HO。先有內核版本才有應用層版本,因此OH的版本會比HO高級。
(一)HarmonyOS
分為應用開發和設備開發,這里只關注HarmonyOS鴻蒙應用開發了。
(二)OpenHarmony
OpenHarmony 4.0 Release對應API能力級別為API 10 Release,
HO比OH找工作容易(估計是應用層需求大上手多),但是OH的API更加完善。
?
二、開發工具 IDE(DevEco Studio)
v3和v4的DevEco 的SDK是不大相同的(下載鏈接也是),而且新的都建議用v4。
?
- OH 4.0 DevEco Studio 安裝包?:OpenHarmony-v4.0-release
- HO 3.1 DevEco Studio 安裝包?:HUAWEI DevEco Studio 3.1.1 Release
- 版本說明-DevEco Studio-工具 | 華為開發者聯盟 (huawei.com)
(一)HarmonyOS?v3.1.1 Release

版本信息:

DevEco Studio 3.1.1 Release
Build Version: 3.1.0.501, built on June 20, 2023
Build #DS-223.8617.56.36.310501
Runtime version: 17.0.6+10-b829.5 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
SDK版本:
(二)OpenHarmony-v4.0-release
最新版本,SDK=10,設置OH版本到API10。
24年1月華為發布Next版本,可能會存在以往的版本不兼容問題。
三、應用開發
1、SDK
在設置中檢查項目SDK,可以切換HarmonyOS(當前最高9)和OpenHarmony(10)

Note:下載OpenHarmony SDK的路徑必須跟HarmonyOS的不同

?
2、新建項目
創建項目時,不要新建Empty Ability,容易不兼容,建議新建【[OpenHarmony]Empty Ability】(DevEco 3沒有的)


如果還是DevEco v3.1.1的版本會顯示SDK 3.1,如果是v4的SDK則為10(這個不能在HaromonyOS上面跑,可能會模擬器手機報錯)
3、項目配置
類似Android的build.gradle,有單獨(entry目錄下)和全局配置(項目) build-profile.json5

4、HarmonyOS 開發支持
鴻蒙 {開發} 套件 萬物互聯時代的鴻蒙生態加速器
包含HarmonyOS應用/服務從設計、開發、測試、上架所需的關鍵技術和產品。(鴻蒙指華為終端鴻蒙智能設備操作系統軟件)
上層應用開發所需工具和知識點:
ArkTS 應用開發語言
ArkTS 語言 | 華為開發者聯盟 (huawei.com)
ArkTS是鴻蒙生態的應用開發語言。它在保持TypeScript(簡稱TS)基本語法風格的基礎上,對TS的動態類型特性施加更嚴格的約束,引入靜態類型。同時,提供了聲明式UI、狀態管理等相應的能力。
自然簡潔語法
主要的布局就是build()的內容,外層通過stuct Index包裝,最簡版如下:(看起來類似Android開發,給注解加了個功能。)
//Index就是應用的入口
@Entry //裝飾器,表示頁面入口
@Component //組件,表示下述結構體有UI的能力
struct Index {build() { //構建聲明式UIText("Hello world").fontSize(50)}}
數據驅動UI,刷新機制,Binding。
//Index就是應用的入口
@Entry
@Component //組件,表示下述結構體有UI的能力
struct Index {@State message: string = 'Hello World'build() { //構建聲明式UIRow() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width('100%')}.height('100%')}
}
輕量化并發機制
ArkCompiler運行時在HarmonyOS上提供了Worker API支持并發編程。在運行時實例內存隔離的基礎上,ArkCompiler通過共享運行實例中的不可變或者不易變的對象、內建代碼塊、方法字節碼等技術手段,優化了并發運行實例的啟動性能和內存開銷。
ArkUI 界面開發框架
聲明式UI框架ArkUI_跨端界面應用開發 | 華為開發者聯盟 (huawei.com)
ArkUI是一套構建分布式應用界面的聲明式UI開發框架。
3.1 UI 更新機制升級(布局渲染)
ArkUI3.1通過編譯期生成特定函數的方式將UI組件更新和數據變更進行細粒度地綁定,實現UI更新Diff算法從COMPONENT和ELEMENT樹形結構對比升級為單節點NODE的函數式更新,極大簡化了聲明式開發范式UI組件的樹形結構,大幅度優化了UI組件布局渲染性能。

=>

邏輯和UI分離(數據雙向綁定機制)
邏輯和UI分離通過利用數據雙向綁定機制傳遞頁面變化邏輯,將流轉7個步驟簡化為2個步驟。可將跨端遷移和協同的開發代碼量降低40%以上。

原Ability包含UI+Model,將其分離后,數據流轉優化。

Stage 模型(應用調度)
Stage模型開發概述-Stage模型開發指導-應用模型-開發 | 華為開發者聯盟 (huawei.com)
提供十幾種不同場景的擴展服務Extension機制,在保證了應用后臺進程合理運行的基礎上,規避了應用進程之間無序拉起,達到保證前臺資源供給,應用調度更加有序的目的。
高級UI組件擴展能力
ArkUI框架提供了基于XComponent組件的C++自繪制引擎接入(比如游戲引擎)能力,和基于Web組件的HTML5/Web的渲染能力。滿足了開發者在游戲、相機、地圖、瀏覽器等復雜應用場景的開發訴求,降低了這類應用移植的門檻。

5、功能開發
代碼語法類似flutter,compose。
代碼結構
結構又像網頁開發,index作為入口。好比Android的MainActivity吧。

設備類型
當前UI開發不用多慮設備類型(如手機、平板、手表等等),視為橫豎屏兩種類型即可。
開發過程中可以把Previewer的Muitl-prifile preview打開,就能看到不同設備的顯示情況。
SDK API閱讀
只能看到聲明和二進制,不能像Android SDK那樣看到java源碼實現。
UI 調試
build中可以設置界面的屬性和數值大小,通過側邊欄的Previewer->Inspector可以快速配置和查看界面情況。
四、學習規劃
1、基本應用開發(2個月?10k+)
100w個崗位,Android?
2、應用高級原理,SDK開發,熟悉源碼原理
3、高級開發,系統、硬件(南向)
GPIO PWM TCP UDP MQTT 線程管理,底層鎖
系統移植、內核裁剪、驅動開發(攝像機、傳感器)
Android 23種設計模式
剛開始學的時候不用看源碼OpenAtom OpenHarmony,后面高級開發的時候需要熟悉。
- OH源碼下載:zh-cn/device-dev/get-code/sourcecode-acquire.md · OpenHarmony/docs - Gitee.com