HarmonyOS 鸿蒙开发完整指南
# 🚀 HarmonyOS 鸿蒙开发完整指南
适合人群:移动开发工程师、前端开发者、对鸿蒙生态感兴趣的技术人员
学习时间:2-3个月
前置知识:JavaScript/TypeScript基础、移动开发概念
HarmonyOS(鸿蒙操作系统)是华为开发的分布式操作系统,旨在为不同设备提供统一的操作系统体验。本指南将带你从零开始学习鸿蒙应用开发。
# 📚 你将学到什么
- HarmonyOS 基础概念 - 理解鸿蒙生态和架构
- ArkTS 语言 - 掌握鸿蒙开发语言
- ArkUI 框架 - 学会构建用户界面
- 开发工具链 - 熟练使用 DevEco Studio
- 实际项目开发 - 完成完整的应用开发
# 🎯 学习路径建议
# 🤖 什么是 HarmonyOS?
HarmonyOS 是华为开发的分布式操作系统,具有以下特点:
- 分布式架构:支持多设备协同工作
- 统一开发:一套代码,多端运行
- 高性能:优化的渲染引擎和内存管理
- 安全可靠:企业级安全特性
# 核心概念
- ArkTS:基于 TypeScript 的鸿蒙开发语言
- ArkUI:声明式 UI 开发框架
- Ability:应用的基本组成单元
- HAP:HarmonyOS Ability Package,应用包格式
# 🛠️ 开发环境搭建
# 1. DevEco Studio 安装
下载地址:华为开发者官网 (opens new window)
系统要求:
- Windows 10/11 (64位)
- macOS 10.15 或更高版本
- 内存:8GB 以上
- 硬盘:10GB 以上可用空间
安装步骤:
- 下载 DevEco Studio 安装包
- 运行安装程序,按提示完成安装
- 首次启动时配置 SDK 路径
- 安装鸿蒙 SDK 和工具链
# 2. SDK 配置
# 设置环境变量
export HARMONY_HOME=/Applications/DevEco-Studio.app/Contents/tools/
export PATH=$PATH:$HARMONY_HOME/bin
# 验证安装
hdc --version
ohpm --version
2
3
4
5
6
7
# 3. 模拟器配置
创建模拟器:
- 打开 DevEco Studio
- 选择 Tools → Device Manager
- 点击 Create Device
- 选择设备类型和系统版本
- 下载并启动模拟器
模拟器类型:
- Phone:手机模拟器
- Tablet:平板模拟器
- TV:智慧屏模拟器
- Wearable:智能手表模拟器
# 4. 真机调试配置
开发者选项开启:
- 设置 → 关于手机 → 版本号(连续点击7次)
- 返回设置 → 系统和更新 → 开发者选项
- 开启"USB调试"和"仅充电模式下允许ADB调试"
连接调试:
# 查看连接的设备
hdc list targets
# 进入设备shell
hdc shell
# 安装应用
hdc install -p your_app.hap
2
3
4
5
6
7
8
# 5. ohpm 包管理器
ohpm(OpenHarmony Package Manager)是鸿蒙生态的包管理工具,类似于npm。
安装和配置:
# 安装ohpm
npm install -g @ohos/ohpm
# 配置镜像源
ohpm config set registry https://repo.openharmony.cn/
# 基础命令
ohpm init # 初始化项目
ohpm install # 安装依赖
ohpm install package-name # 安装指定包
ohpm list # 查看已安装的包
ohpm update # 更新包
ohpm uninstall package-name # 卸载包
2
3
4
5
6
7
8
9
10
11
12
13
详细ohpm使用指南:请参考下方"鸿蒙工具包介绍"章节中的ohpm详细说明。
# 项目结构
# 标准鸿蒙项目结构示例
MyHarmonyApp/
├── AppScope/ # 应用级配置
│ ├── app.json5 # 应用配置文件
│ └── resources/ # 应用级资源
│ ├── base/
│ │ ├── element/ # 元素资源
│ │ ├── media/ # 媒体资源
│ │ └── profile/ # 配置文件
│ └── rawfile/ # 原始文件
├── entry/ # 主模块
│ ├── src/
│ │ ├── main/
│ │ │ ├── ets/ # ArkTS源码
│ │ │ │ ├── pages/ # 页面组件
│ │ │ │ │ ├── Index.ets # 首页
│ │ │ │ │ ├── Detail.ets # 详情页
│ │ │ │ │ └── Profile.ets # 个人页
│ │ │ │ ├── components/ # 自定义组件
│ │ │ │ │ ├── CustomButton.ets
│ │ │ │ │ └── LoadingView.ets
│ │ │ │ ├── services/ # 服务层
│ │ │ │ │ ├── ApiService.ets
│ │ │ │ │ └── StorageService.ets
│ │ │ │ ├── utils/ # 工具类
│ │ │ │ │ ├── Constants.ets
│ │ │ │ │ └── Helper.ets
│ │ │ │ ├── models/ # 数据模型
│ │ │ │ │ ├── User.ets
│ │ │ │ │ └── Product.ets
│ │ │ │ └── app.ets # 应用入口
│ │ │ ├── resources/ # 模块级资源
│ │ │ │ ├── base/
│ │ │ │ │ ├── element/
│ │ │ │ │ │ ├── color.json # 颜色配置
│ │ │ │ │ │ ├── float.json # 浮点数配置
│ │ │ │ │ │ └── string.json # 字符串配置
│ │ │ │ │ └── media/
│ │ │ │ │ ├── icon.png
│ │ │ │ │ └── logo.png
│ │ │ │ └── rawfile/
│ │ │ └── module.json5 # 模块配置
│ │ └── ohosTest/ # 测试代码
│ │ └── ets/
│ │ └── test/
│ │ └── Index.test.ets
│ └── build-profile.json5 # 构建配置
├── features/ # 功能模块
│ ├── feature1/ # 功能模块1
│ │ ├── src/
│ │ │ └── main/
│ │ │ ├── ets/
│ │ │ │ ├── pages/
│ │ │ │ ├── components/
│ │ │ │ └── services/
│ │ │ └── resources/
│ │ └── build-profile.json5
│ └── feature2/ # 功能模块2
│ ├── src/
│ │ └── main/
│ │ ├── ets/
│ │ └── resources/
│ └── build-profile.json5
├── shared/ # 共享模块
│ ├── src/
│ │ └── main/
│ │ ├── ets/
│ │ │ ├── components/ # 共享组件
│ │ │ ├── utils/ # 共享工具
│ │ │ └── constants/ # 共享常量
│ │ └── resources/
│ └── build-profile.json5
├── oh_modules/ # 依赖模块(自动生成)
├── build/ # 构建输出
├── .gitignore # Git忽略文件
├── .ohpmrc # ohpm配置文件
├── oh-package.json5 # 项目配置文件
└── README.md # 项目说明
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# 关键配置文件说明
oh-package.json5 - 项目主配置文件:
{
"name": "my-harmony-app",
"version": "1.0.0",
"description": "A HarmonyOS application",
"main": "entry/src/main/ets/app.ets",
"author": "Your Name",
"license": "Apache-2.0",
"dependencies": {
"@ohos/hypium": "1.0.13",
"@ohos/router": "1.0.0",
"@ohos/http": "1.0.0"
},
"devDependencies": {
"@ohos/hvigor": "1.0.0",
"@ohos/hvigor-ohos-plugin": "1.0.0"
},
"repository": "https://gitee.com/your-repo/my-harmony-app",
"keywords": ["harmonyos", "arkts", "arkui"],
"ohos": {
"org": "example",
"buildTool": "hvigor",
"directoryLevel": "module"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
module.json5 - 模块配置文件:
{
"module": {
"name": "entry",
"type": "entry",
"description": "Main entry module",
"mainElement": "EntryAbility",
"deviceTypes": [
"phone",
"tablet"
],
"deliveryWithInstall": true,
"installationFree": false,
"pages": "$profile:main_pages",
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"description": "Main entry ability",
"icon": "$media:icon",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:icon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
]
}
]
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
app.json5 - 应用配置文件:
{
"app": {
"bundleName": "com.example.myharmonyapp",
"vendor": "example",
"versionCode": 1000000,
"versionName": "1.0.0",
"icon": "$media:app_icon",
"label": "$string:app_name",
"minPlatformVersion": 9,
"targetPlatformVersion": 9,
"apiReleaseType": "Release",
"debug": {
"enable": true
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 目录组织原则
- 模块化设计:按功能划分模块,每个模块独立开发
- 资源分离:应用级资源与模块级资源分离管理
- 组件复用:共享组件放在shared模块中
- 测试覆盖:每个模块包含对应的测试代码
- 配置集中:配置文件统一管理,便于维护
# 📝 ArkTS 语言基础
ArkTS 是鸿蒙生态的编程语言,基于 TypeScript 扩展而来,增加了声明式 UI 开发能力。
# 1. 基础语法
# 变量声明
// 基本类型
let name: string = "HarmonyOS"
let version: number = 4.0
let isActive: boolean = true
// 数组和对象
let devices: string[] = ["phone", "tablet", "tv"]
let config: { name: string, version: number } = {
name: "MyApp",
version: 1.0
}
2
3
4
5
6
7
8
9
10
11
# 函数定义
// 普通函数
function greet(name: string): string {
return `Hello, ${name}!`
}
// 箭头函数
const calculate = (a: number, b: number): number => a + b
// 异步函数
async function fetchData(): Promise<string> {
// 异步操作
return "data"
}
2
3
4
5
6
7
8
9
10
11
12
13
# 2. 装饰器语法
# 状态装饰器
@Entry
@Component
struct MyComponent {
@State count: number = 0
@Prop title: string = "Default Title"
@Link isVisible: boolean
build() {
Column() {
Text(this.title)
.fontSize(20)
Button(`Count: ${this.count}`)
.onClick(() => {
this.count++
})
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 装饰器类型
- @State:组件内部状态
- @Prop:父组件传递的属性
- @Link:双向绑定的状态
- @Observed:可观察对象
- @ObjectLink:对象链接
- @Provide/@Consume:跨组件状态共享
# 3. 组件开发
# 自定义组件
@Component
export struct CustomButton {
@Prop text: string = "Button"
onClick?: () => void
build() {
Button(this.text)
.onClick(() => {
this.onClick?.()
})
.backgroundColor(Color.Blue)
.borderRadius(8)
}
}
// 使用自定义组件
@Entry
@Component
struct MainPage {
build() {
Column() {
CustomButton({
text: "Click Me",
onClick: () => {
console.log("Button clicked!")
}
})
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 组件生命周期
@Component
struct LifecycleDemo {
aboutToAppear() {
console.log("组件即将出现")
}
aboutToDisappear() {
console.log("组件即将消失")
}
onPageShow() {
console.log("页面显示")
}
onPageHide() {
console.log("页面隐藏")
}
build() {
Text("Lifecycle Demo")
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 4. 数据绑定
# 单向绑定
@Entry
@Component
struct DataBindingDemo {
@State message: string = "Hello HarmonyOS"
build() {
Column() {
// 单向绑定:数据变化自动更新UI
Text(this.message)
.fontSize(20)
Button("Update Message")
.onClick(() => {
this.message = "Updated Message"
})
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 双向绑定
@Entry
@Component
struct TwoWayBinding {
@State inputText: string = ""
build() {
Column() {
// 双向绑定:UI变化自动更新数据
TextInput({ placeholder: "Enter text" })
.onChange((value: string) => {
this.inputText = value
})
Text(`You typed: ${this.inputText}`)
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 计算属性
@Component
struct ComputedProperty {
@State firstName: string = "John"
@State lastName: string = "Doe"
// 计算属性
get fullName(): string {
return `${this.firstName} ${this.lastName}`
}
build() {
Column() {
TextInput({ placeholder: "First Name" })
.onChange((value: string) => {
this.firstName = value
})
TextInput({ placeholder: "Last Name" })
.onChange((value: string) => {
this.lastName = value
})
Text(`Full Name: ${this.fullName}`)
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 5. 事件处理
# 点击事件
@Component
struct EventHandling {
@State count: number = 0
// 事件处理函数
private handleClick() {
this.count++
console.log(`Button clicked ${this.count} times`)
}
build() {
Column() {
Button(`Click Count: ${this.count}`)
.onClick(this.handleClick)
.onClick(() => {
// 内联事件处理
console.log("Inline click handler")
})
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 手势事件
@Component
struct GestureDemo {
@State position: { x: number, y: number } = { x: 0, y: 0 }
build() {
Column() {
Text("Gesture Demo")
.gesture(
PanGesture({ fingers: 1, direction: PanDirection.All })
.onActionStart(() => {
console.log("Pan started")
})
.onActionUpdate((event: GestureEvent) => {
this.position.x = event.offsetX
this.position.y = event.offsetY
})
.onActionEnd(() => {
console.log("Pan ended")
})
)
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# ArkUI框架
# 布局系统
- Flex布局
- Grid布局
- Stack布局: 层叠布局
- List布局
# 基础组件
- 文本组件
- 图像组件
- 按钮组件
- 输入组件
# 容器组件
- Column容器
- Row容器
- Stack容器
- Grid容器
# 导航组件
- Tabs组件
- Navigation组件
- Router路由
# 状态管理
# 应用级状态
- AppStorage
- PersistentStorage
- Environment
# 组件级状态
- @State装饰器
- @Prop装饰器
- @Link装饰器
- @Observed装饰器
# 页面级状态
- LocalStorage
- SessionStorage
# 网络与数据
# HTTP请求
- 网络请求API
- 请求拦截器
- 响应处理
- 错误处理
# 数据存储
- 文件存储
- 数据库操作
- 缓存管理
- 数据同步
# 数据绑定
- 数据源管理
- 数据转换
- 数据验证
- 数据更新
# 鸿蒙工具包介绍
DevEco Studio内置了完整的鸿蒙开发工具包,位于 /Applications/DevEco-Studio.app/Contents/tools/ 目录下。
# 核心工具
# 1. hdc (HarmonyOS Device Connector)
# 设备连接和调试工具
hdc list targets # 列出所有连接的设备
hdc shell # 进入设备shell
hdc file send local_file remote_file # 发送文件到设备
hdc file recv remote_file local_file # 从设备接收文件
hdc install -p package_name # 安装应用包
hdc uninstall package_name # 卸载应用
hdc shell bm install -p hap_path # 安装HAP包
hdc shell bm uninstall -p package_name # 卸载HAP包
2
3
4
5
6
7
8
9
10
# 2. hpm (HarmonyOS Package Manager)
# 包管理工具
hpm install # 安装依赖
hpm install package_name # 安装指定包
hpm uninstall package_name # 卸载包
hpm update # 更新包
hpm list # 列出已安装的包
hpm search package_name # 搜索包
2
3
4
5
6
7
8
# 3. ohpm (OpenHarmony Package Manager)
# OpenHarmony包管理工具
# 基础命令
ohpm install # 安装依赖
ohpm install package_name # 安装指定包
ohpm uninstall package_name # 卸载包
ohpm update # 更新包
ohpm list # 列出已安装的包
ohpm search package_name # 搜索包
ohpm config set registry https://repo.openharmony.cn/ # 设置镜像源
ohpm config list
# 安装命令
ohpm install package-name@version # 安装指定版本
ohpm install package-name --save-dev # 安装开发依赖
ohpm install -g package-name # 全局安装包
ohpm install --force # 强制重新安装
ohpm install --ignore-scripts # 安装时忽略脚本
# 卸载命令
ohpm uninstall -g package-name # 卸载全局包
ohpm uninstall package-name --save-dev # 卸载开发依赖
# 更新命令
ohpm update package-name # 更新指定包
ohpm outdated # 检查过时的包
ohpm update package-name@latest # 更新到最新版本
# 搜索和查看命令
ohpm info package-name # 查看包信息
ohpm view package-name versions # 查看包版本
# 依赖管理命令
ohpm list --depth=0 # 查看依赖详情
ohpm audit # 检查依赖安全漏洞
ohpm audit fix # 修复安全漏洞
ohpm shrinkwrap # 生成依赖锁定文件
ohpm cache clean # 清理缓存
ohpm cache verify # 查看缓存信息
# 锁定文件命令
ohpm install --frozen-lockfile # 使用锁定文件安装
ohpm install --update-lockfile # 更新锁定文件
# 仓库配置命令
ohpm config set registry https://your-private-repo.com/ # 添加私有仓库
ohpm config get registry # 查看当前仓库
ohpm config set @scope:registry https://your-scope-repo.com/ # 设置作用域仓库
ohpm config delete registry # 删除仓库配置
ohpm config set //your-repo.com/:_authToken your-token # 设置认证信息
# 包发布命令
ohpm login # 登录到仓库
ohpm publish # 发布包
ohpm publish --registry https://your-repo.com/ # 发布到指定仓库
ohpm unpublish package-name # 取消发布
ohpm view package-name # 查看包信息
# 镜像源配置
ohpm config set registry https://repo.openharmony.cn/ # 官方镜像源
ohpm config set registry https://mirrors.huaweicloud.com/repository/ohpm/ # 华为镜像源
ohpm config set registry https://registry.npmmirror.com/ # 淘宝镜像源
# 调试命令
ohpm install --verbose # 查看详细安装信息
ohpm list --depth=2 # 查看依赖树结构
ohpm ping # 检查网络连接
# 最佳实践命令
ohpm install --frozen-lockfile # 使用锁定文件确保版本一致性
ohpm update && ohpm audit # 定期更新依赖
ohpm config set timeout 30000 # 设置合适的超时时间
ohpm cache clean # 定期清理缓存
ohpm install @company/package-name # 使用作用域管理包
# 问题解决命令
ohpm config set timeout 60000 # 解决网络连接超时
sudo ohpm install -g package-name # 解决权限不足
ohpm ls --depth=0 && ohpm audit fix # 解决依赖冲突
ohpm cache clean && ohpm install --force # 解决缓存问题
rm ohpm-lock.yaml && ohpm install # 解决锁定文件冲突
ohpm config set proxy http://proxy.example.com:8080 # 设置代理
ohpm config set https-proxy http://proxy.example.com:8080 # 设置HTTPS代理
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# 开发工具
# 4. ArkTS编译器
# ArkTS语言编译器
arktsc --help # 查看编译器帮助
arktsc main.ets # 编译单个文件
arktsc --outDir dist src/ # 编译整个目录
arktsc --watch src/ # 监听模式编译
2
3
4
5
6
# 5. ArkUI构建工具
# ArkUI框架构建工具
arkui build # 构建项目
arkui build --mode debug # 调试模式构建
arkui build --mode release # 发布模式构建
arkui build --target device # 设备构建
arkui build --target simulator # 模拟器构建
2
3
4
5
6
7
# 6. 调试工具
# 调试相关工具
debugger --attach process_id # 附加到进程调试
debugger --port 8080 # 启动调试服务器
debugger --break main.ets:10 # 设置断点
2
3
4
5
# 性能分析工具
# 7. 性能监控工具
# 性能分析工具
profiler --start # 开始性能分析
profiler --stop # 停止性能分析
profiler --export report.json # 导出性能报告
profiler --memory # 内存分析
profiler --cpu # CPU分析
2
3
4
5
6
7
# 8. 内存分析工具
# 内存泄漏检测
memory-analyzer --attach process_id # 附加内存分析
memory-analyzer --dump heap.dump # 导出堆转储
memory-analyzer --report leak.html # 生成泄漏报告
2
3
4
5
# 测试工具
# 9. 单元测试工具
# 测试框架
test-runner --test test.ets # 运行单个测试
test-runner --suite test_suite # 运行测试套件
test-runner --coverage # 生成覆盖率报告
test-runner --parallel # 并行执行测试
2
3
4
5
6
# 10. UI测试工具
# UI自动化测试
ui-test --record test_case.json # 录制UI测试
ui-test --play test_case.json # 回放UI测试
ui-test --screenshot test.png # 截图测试
ui-test --accessibility # 无障碍测试
2
3
4
5
6
# 打包和部署工具
# 11. 应用打包工具
# HAP包构建工具
hap-builder --config build.json # 使用配置文件构建
hap-builder --sign keystore.jks # 签名构建
hap-builder --optimize # 优化构建
hap-builder --split # 分包构建
2
3
4
5
6
# 12. 签名工具
# 应用签名工具
signer --keystore keystore.jks # 使用密钥库签名
signer --cert cert.pem # 使用证书签名
signer --verify hap_file.hap # 验证签名
signer --info hap_file.hap # 查看签名信息
2
3
4
5
6
工具路径
find /Applications/DevEco-Studio.app -name "signer" 2>/dev/null
/Applications/DevEco-Studio.app/Contents/tools/node/lib/node_modules/npm/node_modules/@sigstore/sign/dist/signer
2
sign的具体位置:
# 模拟器工具
# 13. 模拟器管理
# 模拟器控制工具
simulator --list # 列出可用模拟器
simulator --start device_name # 启动模拟器
simulator --stop device_name # 停止模拟器
simulator --reset device_name # 重置模拟器
simulator --snapshot create snap1 # 创建快照
simulator --snapshot restore snap1 # 恢复快照
2
3
4
5
6
7
8
工具路径
-> % find /Applications/DevEco-Studio.app -name "simulator" 2>/dev/null
/Applications/DevEco-Studio.app/Contents/plugins/openharmony/openharmony-preview-server/public/ohpreviewer/static/img/skin/simulator
/Applications/DevEco-Studio.app/Contents/plugins/harmony/harmony-preview-server/public/hpreviewer/static/img/skin/simulator
2
3
# 14. 设备模拟
# 设备功能模拟
device-sim --camera # 模拟相机
device-sim --gps # 模拟GPS
device-sim --sensor # 模拟传感器
device-sim --network # 模拟网络
2
3
4
5
6
# 文档和帮助工具
# 15. 文档生成工具
# API文档生成
doc-generator --input src/ # 生成API文档
doc-generator --format html # HTML格式文档
doc-generator --format markdown # Markdown格式文档
doc-generator --template custom.html # 自定义模板
2
3
4
5
6
# 16. 代码检查工具
# 代码质量检查
lint --config .eslintrc.js # ESLint检查
lint --fix # 自动修复
lint --report report.html # 生成检查报告
lint --rules custom_rules.js # 自定义规则
2
3
4
5
6
# 工具配置
# 17. 环境配置
# 工具环境配置
config --set sdk_path /path/to/sdk # 设置SDK路径
config --set device_ip 192.168.1.100 # 设置设备IP
config --set debug_port 8080 # 设置调试端口
config --list # 查看所有配置
2
3
4
5
6
# 18. 路径配置
# 工具路径配置
export HARMONY_HOME=/Applications/DevEco-Studio.app/Contents/tools/
export PATH=$PATH:$HARMONY_HOME/bin
export OHPM_HOME=$HARMONY_HOME/ohpm
export HDC_HOME=$HARMONY_HOME/hdc
2
3
4
5
6
# 常用组合命令
# 19. 开发工作流
# 完整的开发流程
# 1. 构建项目
arkui build --mode debug
# 2. 安装到设备
hdc install -p build/outputs/hap/debug/*.hap
# 3. 启动调试
debugger --attach $(hdc shell ps | grep your_app)
# 4. 性能分析
profiler --start && profiler --stop && profiler --export report.json
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 20. CI/CD集成
# 自动化构建和测试
# 构建
arkui build --mode release
# 测试
test-runner --suite all --coverage
# 打包
hap-builder --sign keystore.jks
# 部署
hdc install -p build/outputs/hap/release/*.hap
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 多媒体开发
# 图像处理
- 图像加载
- 图像缓存
- 图像压缩
- 图像滤镜
# 音频处理
- 音频播放
- 音频录制
- 音频格式转换
- 音频效果
# 视频处理
- 视频播放
- 视频录制
- 视频编辑
- 视频压缩
# 设备能力
# 传感器
- 加速度传感器
- 陀螺仪传感器
- 光线传感器
- 距离传感器
# 硬件接口
- 相机接口
- 麦克风接口
- 蓝牙接口
- NFC接口
# 系统服务
- 通知服务
- 权限管理
- 系统信息
- 设备管理
# 分布式能力
# 设备发现
- 设备扫描
- 设备连接
- 设备认证
- 设备管理
# 数据同步
- 数据分发
- 数据同步
- 冲突解决
- 数据一致性
# 服务共享
- 服务发现
- 服务调用
- 服务注册
- 服务管理
# 性能优化
性能优化是鸿蒙应用开发的重要环节,主要包括启动优化、内存优化和渲染优化。
# 启动优化
- 冷启动优化:减少应用启动时间,优化启动流程
- 热启动优化:提升应用切换响应速度
- 启动时间监控:使用性能分析工具监控启动性能
- 启动策略:合理设计应用启动逻辑
# 内存优化
- 内存泄漏检测:定期检查内存使用情况
- 内存使用监控:实时监控内存占用
- 垃圾回收优化:合理管理对象生命周期
- 内存压缩:优化内存使用效率
# 渲染优化
- 渲染性能监控:监控UI渲染性能
- 渲染优化策略:优化组件渲染逻辑
- 帧率优化:保持60fps流畅体验
- 渲染管线优化:优化渲染流程
详细性能优化指南:请参考下方"性能优化建议"章节。
# 调试与测试
调试和测试是确保应用质量的关键环节。
# 调试工具
- DevEco Studio调试:使用IDE内置调试器
- 日志系统:合理使用console.log输出日志
- 性能分析:使用性能分析工具监控应用性能
- 内存分析:检测内存泄漏和优化内存使用
# 测试策略
- 单元测试:测试单个组件和函数
- 集成测试:测试组件间的交互
- 端到端测试:测试完整的用户流程
- 兼容性测试:确保在不同设备上的兼容性
详细调试测试指南:请参考下方"调试和测试技巧"章节。
# 发布与部署
# 应用打包
- 应用签名
- 应用打包
- 资源优化
- 代码混淆
# 应用分发
- 应用商店发布
- 企业分发
- 测试分发
- 版本管理
# 应用更新
- 增量更新
- 全量更新
- 强制更新
- 更新策略
# 安全开发
# 数据安全
- 数据加密
- 数据脱敏
- 数据备份
- 数据恢复
# 应用安全
- 代码混淆
- 反调试
- 完整性校验
- 安全审计
# 权限管理
- 权限申请
- 权限检查
- 权限动态管理
- 权限最小化
# 最佳实践
# 代码规范
- 命名规范
- 注释规范
- 代码结构
- 代码审查
- ohpm包规范
# ohpm最佳实践
# 1. 使用锁定文件确保版本一致性
ohpm install --frozen-lockfile
# 2. 定期更新依赖
ohpm update
ohpm audit
# 3. 使用私有仓库管理内部包
ohpm config set @company:registry https://your-company-repo.com/
# 4. 设置合适的超时时间
ohpm config set timeout 30000
# 5. 使用镜像源加速下载
ohpm config set registry https://repo.openharmony.cn/
# 6. 定期清理缓存
ohpm cache clean
# 7. 使用作用域管理包
ohpm install @company/package-name
# 8. 设置安全的认证信息
ohpm config set //your-repo.com/:_authToken your-token
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 架构设计
- 模块化设计
- 组件化设计
- 分层架构
- 微服务架构
- 包依赖架构
# 性能调优
- 性能监控
- 性能分析
- 性能优化
- 性能测试
# 常见问题解决
# 开发环境问题
- 环境配置问题
- 编译错误
- 运行错误
- 调试问题
- ohpm依赖问题
# ohpm常见问题解决
# 问题1: 网络连接超时
ohpm config set timeout 60000
ohpm config set registry https://repo.openharmony.cn/
# 问题2: 权限不足
sudo ohpm install -g package-name
# 问题3: 依赖冲突
ohpm ls --depth=0
ohpm audit fix
# 问题4: 缓存问题
ohpm cache clean
ohpm install --force
# 问题5: 锁定文件冲突
rm ohpm-lock.yaml
ohpm install
# 问题6: 代理设置
ohpm config set proxy http://proxy.example.com:8080
ohpm config set https-proxy http://proxy.example.com:8080
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 性能问题
- 内存泄漏
- 卡顿问题
- 耗电问题
- 网络问题
# 兼容性问题
- 设备兼容性
- 系统兼容性
- API兼容性
- 数据兼容性
# 扩展资源
# 官方文档
# 开发工具
- DevEco Studio - 官方IDE
- 鸿蒙模拟器 - 设备模拟
- 真机调试工具 - 设备调试
- 性能分析工具 - 性能监控
- ohpm包管理器 - 依赖管理
# 社区资源
完整学习资源:请参考文档末尾的"学习资源"章节。
# 实际应用案例
# 基础应用开发
- 计算器应用
- 待办事项应用
- 天气应用
- 新闻应用
# 多媒体应用
- 音乐播放器
- 视频播放器
- 图片编辑器
- 录音应用
# 社交应用
- 即时通讯
- 社交网络
- 直播应用
- 短视频应用
# 工具应用
- 文件管理器
- 系统工具
- 开发工具
- 测试工具
- 包管理工具
# 性能优化建议
# 开发阶段优化
- 代码质量优化:编写高质量、可维护的代码
- 资源使用优化:合理使用图片、音频等资源
- 算法优化:选择高效的算法和数据结构
- 架构优化:设计合理的应用架构
- 依赖优化:管理好第三方依赖
# 运行时优化
- 内存使用优化:避免内存泄漏,合理管理内存
- CPU使用优化:减少不必要的计算,优化算法
- 网络使用优化:合理使用网络资源,实现缓存策略
- 电池使用优化:减少后台活动,优化耗电操作
# 用户体验优化
- 界面响应优化:保持UI流畅响应
- 操作流畅性优化:优化用户交互体验
- 错误处理优化:提供友好的错误提示
- 用户引导优化:设计清晰的使用引导
# 调试和测试技巧
# 调试技巧
- 断点调试:使用DevEco Studio的断点功能
- 日志调试:合理使用console.log输出调试信息
- 性能调试:使用性能分析工具监控应用性能
- 内存调试:检测内存泄漏和优化内存使用
# 测试技巧
- 功能测试:确保应用功能正常工作
- 性能测试:测试应用在不同场景下的性能表现
- 兼容性测试:确保应用在不同设备上的兼容性
- 安全测试:检查应用的安全漏洞
# 错误处理
- 异常捕获:合理使用try-catch处理异常
- 错误恢复:提供错误恢复机制
- 错误报告:记录和报告错误信息
- 错误分析:分析错误原因并优化代码
# 常见陷阱和解决方案
# 开发陷阱
- 内存泄漏陷阱
- 性能陷阱
- 安全陷阱
- 兼容性陷阱
- 依赖管理陷阱
# 解决方案
- 最佳实践
- 设计模式
- 架构模式
- 优化策略
- 依赖管理策略
# 相关技术
# 前端技术
- TypeScript - ArkTS的基础语言
- JavaScript - 前端开发基础
- React Native - 跨平台开发参考
- Flutter - 移动开发对比学习
# 包管理工具
- npm/yarn - 前端包管理工具
- ohpm - 鸿蒙生态包管理工具
- Maven/Gradle - Android包管理工具
# 🚀 实践项目:待办事项应用
让我们通过一个完整的待办事项应用来实践鸿蒙开发:
# 项目结构
TodoApp/
├── entry/
│ └── src/
│ └── main/
│ ├── ets/
│ │ ├── pages/
│ │ │ ├── Index.ets # 主页面
│ │ │ └── AddTodo.ets # 添加待办页面
│ │ ├── components/
│ │ │ └── TodoItem.ets # 待办项组件
│ │ ├── models/
│ │ │ └── Todo.ets # 数据模型
│ │ └── utils/
│ │ └── Storage.ets # 存储工具
│ └── resources/
└── oh-package.json5
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 数据模型
// models/Todo.ets
export class Todo {
id: string
title: string
completed: boolean
createdAt: Date
constructor(title: string) {
this.id = Date.now().toString()
this.title = title
this.completed = false
this.createdAt = new Date()
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
# 主页面
// pages/Index.ets
import { Todo } from '../models/Todo'
import { TodoItem } from '../components/TodoItem'
import { Storage } from '../utils/Storage'
@Entry
@Component
struct Index {
@State todos: Todo[] = []
@State newTodoTitle: string = ""
aboutToAppear() {
this.loadTodos()
}
private loadTodos() {
this.todos = Storage.getTodos()
}
private addTodo() {
if (this.newTodoTitle.trim()) {
const todo = new Todo(this.newTodoTitle.trim())
this.todos.push(todo)
this.newTodoTitle = ""
Storage.saveTodos(this.todos)
}
}
private toggleTodo(id: string) {
const todo = this.todos.find(t => t.id === id)
if (todo) {
todo.completed = !todo.completed
Storage.saveTodos(this.todos)
}
}
private deleteTodo(id: string) {
this.todos = this.todos.filter(t => t.id !== id)
Storage.saveTodos(this.todos)
}
build() {
Column({ space: 20 }) {
// 标题
Text("待办事项")
.fontSize(24)
.fontWeight(FontWeight.Bold)
.margin({ top: 20 })
// 添加待办输入框
Row({ space: 10 }) {
TextInput({ placeholder: "输入待办事项" })
.layoutWeight(1)
.onChange((value: string) => {
this.newTodoTitle = value
})
.onSubmit(() => {
this.addTodo()
})
Button("添加")
.onClick(() => {
this.addTodo()
})
}
.width('100%')
.padding({ left: 20, right: 20 })
// 待办列表
List() {
ForEach(this.todos, (todo: Todo) => {
ListItem() {
TodoItem({
todo: todo,
onToggle: () => this.toggleTodo(todo.id),
onDelete: () => this.deleteTodo(todo.id)
})
}
})
}
.layoutWeight(1)
.width('100%')
}
.width('100%')
.height('100%')
.backgroundColor('#F5F5F5')
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# 待办项组件
// components/TodoItem.ets
import { Todo } from '../models/Todo'
@Component
export struct TodoItem {
@Prop todo: Todo
onToggle?: () => void
onDelete?: () => void
build() {
Row({ space: 10 }) {
// 完成状态复选框
Checkbox({ name: 'todo', group: 'todoGroup' })
.select(this.todo.completed)
.onChange((value: boolean) => {
this.onToggle?.()
})
// 待办内容
Text(this.todo.title)
.fontSize(16)
.decoration({
type: this.todo.completed ? TextDecorationType.LineThrough : TextDecorationType.None
})
.fontColor(this.todo.completed ? '#999' : '#333')
.layoutWeight(1)
// 删除按钮
Button("删除")
.fontSize(12)
.backgroundColor('#FF6B6B')
.onClick(() => {
this.onDelete?.()
})
}
.width('100%')
.padding(10)
.backgroundColor('#FFF')
.borderRadius(8)
.margin({ bottom: 5 })
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 存储工具
// utils/Storage.ets
import { Todo } from '../models/Todo'
export class Storage {
private static readonly STORAGE_KEY = 'todos'
static saveTodos(todos: Todo[]): void {
try {
const data = JSON.stringify(todos)
preferences.putSync(this.STORAGE_KEY, data)
} catch (error) {
console.error('保存待办事项失败:', error)
}
}
static getTodos(): Todo[] {
try {
const data = preferences.getSync(this.STORAGE_KEY, '[]')
const todos = JSON.parse(data as string)
return todos.map((todo: any) => {
const t = new Todo(todo.title)
t.id = todo.id
t.completed = todo.completed
t.createdAt = new Date(todo.createdAt)
return t
})
} catch (error) {
console.error('加载待办事项失败:', error)
return []
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# ❓ 常见问题解答
# Q1: 如何调试鸿蒙应用?
A: 调试方法:
- 使用 DevEco Studio 的调试器
- 在代码中添加
console.log()输出日志 - 使用
hdc shell查看设备日志 - 利用性能分析工具监控应用性能
# Q2: 如何处理网络请求?
A: 网络请求示例:
import http from '@ohos.net.http'
async function fetchData() {
const httpRequest = http.createHttp()
try {
const response = await httpRequest.request('https://api.example.com/data', {
method: http.RequestMethod.GET,
header: {
'Content-Type': 'application/json'
}
})
return JSON.parse(response.result as string)
} catch (error) {
console.error('网络请求失败:', error)
} finally {
httpRequest.destroy()
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Q3: 如何实现页面导航?
A: 页面导航示例:
import router from '@ohos.router'
// 跳转到新页面
router.pushUrl({
url: 'pages/DetailPage',
params: {
id: '123',
title: '详情页'
}
})
// 返回上一页
router.back()
// 替换当前页面
router.replaceUrl({
url: 'pages/NewPage'
})
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Q4: 如何管理应用状态?
A: 状态管理策略:
- 组件级状态:使用
@State装饰器 - 页面级状态:使用
LocalStorage - 应用级状态:使用
AppStorage - 持久化状态:使用
PersistentStorage
# Q5: 如何优化应用性能?
A: 性能优化建议:
- 合理使用
@State和@Prop - 避免在
build()方法中进行复杂计算 - 使用
LazyForEach处理大列表 - 及时释放不需要的资源
- 使用图片缓存和懒加载
# 📚 学习资源
# 官方文档
- 鸿蒙开发者官网 (opens new window) - 官方开发文档和教程
- ArkTS语言指南 (opens new window) - ArkTS语言详细文档
- ArkUI开发指南 (opens new window) - ArkUI框架开发指南
- other
# 开发工具
- DevEco Studio (opens new window) - 官方IDE下载
- ohpm官方文档 (opens new window) - 包管理器文档
- ohpm包仓库 (opens new window) - 官方包仓库
# 社区资源
- 华为开发者社区 (opens new window) - 官方开发者社区
- 鸿蒙技术论坛 (opens new window) - 技术交流论坛
- GitHub开源项目 (opens new window) - 开源项目参考
# 🎉 总结
通过本指南的学习,你已经掌握了:
- HarmonyOS 基础概念 - 理解了鸿蒙生态和架构
- 开发环境搭建 - 熟练配置开发工具链
- ArkTS 语言 - 掌握了鸿蒙开发语言特性
- ArkUI 框架 - 学会了构建用户界面
- 实际项目开发 - 完成了完整的应用开发
继续深入学习,探索鸿蒙生态的更多可能性!🚀