一、工程概述(Project Overview)
1. 工程基本概念
工程(Project):開發(fā)應(yīng)用的基本組織單位
模塊(Module):工程的功能組成部分
Ability:應(yīng)用的功能單元(UIAbility 或 ServiceAbility)
HAP(Harmony Ability Package):應(yīng)用的部署包
2. 工程生命周期

二、工程結(jié)構(gòu)(Project Structure)
1. 典型工程結(jié)構(gòu)
MyProject/
├── .deveco/? ? ? ? ? ? # IDE 配置文件
├── entry/? ? ? ? ? ? ? # 主模塊
│? ├── src/
│? │? ├── main/
│? │? │? ├── ets/? ? # ArkTS 代碼
│? │? │? │? ├── pages/? ? ? # 頁面組件
│? │? │? │? ├── app.ets? ? ? # 應(yīng)用入口
│? │? │? │? └── ...
│? │? │? ├── resources/? ? ? # 資源文件
│? │? │? │? ├── base/
│? │? │? │? ├── en_US/
│? │? │? │? └── ...
│? │? │? └── module.json5? ? # 模塊配置
│? ├── build-profile.json5? ? ? # 模塊構(gòu)建配置
│? └── hvigorfile.ts? ? ? ? ? ? # 構(gòu)建腳本
├── library/? ? ? ? ? ? # 共享庫模塊(可選)
├── build-profile.json5 # 工程級(jí)構(gòu)建配置
├── hvigorfile.ts? ? ? # 工程級(jí)構(gòu)建腳本
└── oh-package.json5? ? # 依賴管理
2、工程目錄結(jié)構(gòu):Stage 與 FA 模型對(duì)比
?1. Stage 模型(ArkTS 開發(fā),推薦)
Project
├─ .hvigor/? ? ? ? ? ? ? # 構(gòu)建腳本(自動(dòng)生成)
├─ AppScope/? ? ? ? ? ? ? # 應(yīng)用全局配置
│? └─ app.json5? ? ? ? ? # 應(yīng)用級(jí)配置(多模塊管理、權(quán)限聲明)
├─ entry/? ? ? ? ? ? ? ? # 主模塊(必選,生成 Entry.hap)
│? ├─ src/main/ets/? ? ? # ArkTS 源碼
│? │? ├─ entryability/? ? # 應(yīng)用入口(生命周期管理)
│? │? └─ pages/? ? ? ? ? # 頁面組件(如 Index.ets)
│? ├─ src/main/resources/? # 資源文件(圖形、字符串、布局)
│? │? ├─ base/element/? ? # 結(jié)構(gòu)化資源(color.json、string.json)
│? │? └─ rawfile/? ? ? ? # 原始資源(不自動(dòng)適配設(shè)備,如字體文件)
│? └─ module.json5? ? ? ? # 模塊配置(HAP 信息、設(shè)備適配)
├─ featureA/? ? ? ? ? ? ? # 動(dòng)態(tài)特性模塊(可選,生成 FeatureA.hap)
│? └─ ...? ? ? ? ? ? ? ? # 結(jié)構(gòu)同 entry 模塊
├─ oh_modules/? ? ? ? ? ? # 三方庫依賴(通過 ohpm 安裝)
└─ oh-package.json5? ? ? # 全局依賴配置(管理三方包版本)
2. FA 模型(JS 開發(fā),兼容舊項(xiàng)目)
Project
├─ entry/? ? ? ? ? ? ? ? # 主模塊
│? ├─ src/main/js/? ? ? ? # JS 源碼
│? │? ├─ MainAbility/? ? # 入口組件(生命周期)
│? │? └─ pages/? ? ? ? ? # 頁面(如 index.js)
│? └─ config.json? ? ? ? # 模塊配置(類似 module.json5)
└─ ...? ? ? ? ? ? ? ? ? ? # 資源與依賴結(jié)構(gòu)同 Stage 模型
三、工程模板(Templates)
1. 選擇工程類型與模板
入口路徑:
歡迎頁點(diǎn)擊Create Project,或菜單File > New > Create Project。
模板分類:
模板名稱適用場(chǎng)景支持設(shè)備開發(fā)語言
Empty Ability基礎(chǔ) Hello World(推薦新手入門)Phone、Tablet、車機(jī)等ArkTS/JS
Native C++需調(diào)用 C++ 代碼的場(chǎng)景(如高性能計(jì)算)同上C++ + ArkTS
[CloudDev]Empty端云一體化開發(fā)(集成云端服務(wù))全設(shè)備ArkTS
[Lite]Empty Ability輕量級(jí)穿戴設(shè)備(如手環(huán)、手表)Lite WearableArkTS
Embeddable Ability開發(fā)可嵌入其他應(yīng)用的元服務(wù)(如小組件)手機(jī)、平板ArkTS
關(guān)鍵配置項(xiàng):
Bundle Name:應(yīng)用唯一標(biāo)識(shí)(格式:com.example.項(xiàng)目名,需符合三段式規(guī)則,如com.harmony.demo)。
Device Type:根據(jù)目標(biāo)設(shè)備選擇(如 Phone、Tablet、Car),可多選。
Compile SDK:編譯目標(biāo) API 版本(建議選最新穩(wěn)定版,如 API 11+)。
2. 創(chuàng)建 HarmonyOS 與 OpenHarmony 工程
HarmonyOS 工程:
直接選擇模板并完成配置,默認(rèn)生成Stage 模型工程(推薦)。
OpenHarmony 工程(可選):
創(chuàng)建 HarmonyOS 工程后,修改工程級(jí)?build-profile.json5:
"products": [
? {
? ? "name": "default",
? ? "compileSdkVersion": 11,? ? ? // OpenHarmony 編譯版本(整數(shù))
? ? "compatibleSdkVersion": 11,? ? // 最低兼容版本(整數(shù))
? ? "runtimeOS": "OpenHarmony"? ? ? // 運(yùn)行時(shí)系統(tǒng)改為 OpenHarmony
? }
]
同步工程,刪除不支持的設(shè)備類型(如 Phone),保留default?或tablet。
四、工程管理技巧
1. 多模塊開發(fā)(Stage 模型)
創(chuàng)建 Feature 模塊:
菜單File > New > Module,選擇Feature Ability,用于擴(kuò)展功能(如插件化模塊)。
模塊間通信:
通過EventBus或全局狀態(tài)管理(如@AppStorage)實(shí)現(xiàn)跨模塊數(shù)據(jù)傳遞。
在app.json5?中配置模塊依賴關(guān)系。
2. 資源管理最佳實(shí)踐
結(jié)構(gòu)化資源:
將顏色、字符串等放入base/element?目錄,通過$r('app.element.xxx')?引用,便于多語言 / 主題切換。
原始資源(rawfile):
直接通過路徑引用(如FileUtil.getRawFileContent('rawfile/test.txt')),適用于不參與編譯的文件。
3. 編譯與構(gòu)建配置
簽名配置:
菜單File > Project Structure > Signing Configs,勾選Automatically generate signature,使用華為賬號(hào)自動(dòng)簽名(調(diào)試階段)。
構(gòu)建產(chǎn)物:
HAP 包:主模塊編譯生成entry/build/outputs/hap/debug/entry.hap。
APP Pack:多模塊工程生成app/dist/xxx.app(包含所有 HAP 與pack.info)。
4. 切換開發(fā)語言
ArkTS 與 JS 混用:
創(chuàng)建新模塊時(shí)選擇不同語言(如主模塊用 ArkTS,插件模塊用 JS),通過JS-TS 互調(diào)實(shí)現(xiàn)協(xié)同。
C++ 集成:
使用Native C++ 模板,在 ArkTS 中通過@Native?裝飾器調(diào)用 C++ 接口。
##鴻蒙開發(fā)工具##DevEco Studio##商務(wù)#