HarmonyOS 开发基本用法详细讲解
摘要:本文系统介绍了HarmonyOS开发的基础流程,涵盖环境搭建、项目结构、核心开发概念和分布式能力等关键内容。首先讲解使用DevEco Studio搭建开发环境,创建项目的基本步骤;其次分析典型项目结构,解释Ability组件和UI开发方法;重点阐述分布式任务调度、数据管理和设备发现等跨设备协同功能;最后说明应用打包、调试测试及发布流程,为开发者提供HarmonyOS应用开发的完整入门指导。
HarmonyOS 是华为推出的面向全场景的分布式操作系统,支持多种设备形态(手机、平板、智能穿戴、智能家居等)的跨设备协同。本文将详细介绍 HarmonyOS 的基本开发用法,包括环境搭建、项目创建、核心组件使用、UI 开发、分布式能力等关键内容。
一、开发环境搭建
1. 安装 DevEco Studio
DevEco Studio 是华为官方提供的 HarmonyOS 应用开发集成环境:
- 访问 DevEco Studio 官网
- 下载并安装适合你操作系统的版本
- 安装过程中选择 HarmonyOS SDK(包含必要的开发工具和库)
2. 配置开发环境
安装完成后:
- 打开 DevEco Studio
- 首次启动时会提示配置 SDK 路径(默认已配置)
- 配置模拟器或连接真机设备:
- 可以创建模拟器(支持多种设备类型)
- 或通过 USB 连接真机设备(需开启开发者模式)
3. 创建新项目
- 点击 "Create Project"
- 选择项目模板:
- Empty Ability:空项目模板
- Page Ability:包含基础页面的项目模板
- 其他模板根据需求选择
- 配置项目信息:
- 项目名称
- 包名(遵循 Java 包命名规范)
- 选择设备类型(如手机、平板等)
- 选择 API 版本(兼容性考虑)
二、HarmonyOS 项目结构
典型的 HarmonyOS 项目结构如下:
MyApplication/
├── AppScope/ # 应用级资源
│ ├── resources/ # 应用级资源文件
│ └── build-profile.json5 # 应用构建配置
├── entry/ # 应用入口模块
│ ├── src/ # 源代码
│ │ ├── main/ # 主代码目录
│ │ │ ├── ets/ # eTS(eTS 是 HarmonyOS 的声明式开发语言)代码
│ │ │ │ ├── pages/ # 页面目录
│ │ │ │ ├── entryability.ts # 应用入口 Ability
│ │ │ │ └── ... # 其他 eTS 文件
│ │ │ └── resources/ # 资源文件
│ │ └── ... # 其他构建相关目录
│ ├── build-profile.json5 # 模块构建配置
│ └── ... # 其他模块配置文件
├── build-profile.json5 # 项目构建配置
└── oh-package.json5 # 项目依赖配置
三、基本开发概念
1. Ability 概念
Ability 是 HarmonyOS 应用的基本组成单元,类似于 Android 的 Activity:
- Page Ability:用于实现页面功能,包含 UI 界面
- Service Ability:用于实现后台服务功能
- Data Ability:用于数据管理,提供数据访问接口
2. 页面开发(Page Ability)
创建页面
在 entry/src/main/ets/pages/
目录下创建页面文件,如 Index.ets
:
// Index.ets
import router from '@ohos.router';
@Entry
@Component
struct Index {
build() {
Column() {
Text('Hello HarmonyOS')
.fontSize(30)
.fontWeight(FontWeight.Bold)
Button('Navigate to Next Page')
.onClick(() => {
router.pushUrl({
url: 'pages/SecondPage'
});
})
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
}
页面导航
HarmonyOS 使用路由系统进行页面导航:
// 导航到新页面
router.pushUrl({
url: 'pages/SecondPage'
});
// 返回上一页
router.back();
3. UI 组件
HarmonyOS 提供丰富的声明式 UI 组件:
-
布局组件:
Column
:垂直布局Row
:水平布局Flex
:弹性布局Grid
:网格布局
-
基础组件:
Text
:文本显示Button
:按钮Image
:图片显示TextInput
:文本输入框
-
容器组件:
List
:列表Scroll
:滚动视图Swiper
:轮播图
示例:使用 List 组件
import { List, ListItem } from '@ohos.agp.components';
@Entry
@Component
struct ListExample {
data = ['Item 1', 'Item 2', 'Item 3', 'Item 4'];
build() {
List({ space: 10 }) {
ForEach(this.data, (item) => {
ListItem() {
Text(item)
.fontSize(16)
}
})
}
.width('100%')
.height('100%')
}
}
四、分布式能力开发
HarmonyOS 的核心优势之一是分布式能力,支持跨设备协同:
1. 分布式任务调度
允许应用在不同设备间迁移:
import distributedTask from '@ohos.distributedTask';
// 启动分布式任务
distributedTask.startAbility({
bundleName: 'com.example.targetApp',
abilityName: 'TargetAbility',
deviceId: 'device_id' // 目标设备ID
})
.then((result) => {
console.log('Task started successfully');
})
.catch((err) => {
console.error('Failed to start task', err);
});
2. 分布式数据管理
使用分布式数据服务(Distributed Data Service, DDS)实现跨设备数据共享:
import distributedData from '@ohos.distributedData';
// 获取分布式数据对象
let distributedDataObj = distributedData.getDistributionData({
name: 'mySharedData',
createIfNotExist: true
});
// 写入数据
distributedDataObj.put('key', 'value')
.then(() => {
console.log('Data written successfully');
})
.catch((err) => {
console.error('Failed to write data', err);
});
// 读取数据
distributedDataObj.get('key')
.then((value) => {
console.log('Read value:', value);
})
.catch((err) => {
console.error('Failed to read data', err);
});
3. 分布式设备发现
发现并连接其他 HarmonyOS 设备:
import deviceManager from '@ohos.deviceManager';
// 获取设备管理器实例
let deviceManagerInstance = deviceManager.getDeviceManager();
// 发现设备
deviceManagerInstance.on('deviceFound', (deviceInfo) => {
console.log('Found device:', deviceInfo);
});
// 开始发现设备
deviceManagerInstance.startDeviceDiscovery({
deviceType: deviceManager.DeviceType.PHONE
})
.then(() => {
console.log('Device discovery started');
})
.catch((err) => {
console.error('Failed to start device discovery', err);
});
五、应用配置与打包
1. 配置文件
- oh-package.json5:项目依赖配置
- build-profile.json5:构建配置
- module.json5:模块配置(每个模块一个)
示例 module.json5:
{
"module": {
"name": "entry",
"type": "entry",
"srcEntrance": "./ets/pages/Index.ets",
"description": "$string:module_desc",
"mainElement": "EntryAbility",
"deviceTypes": [
"phone",
"tablet"
],
"deliveryWithInstall": true,
"installationFree": false,
"pages": "$profile:main_pages",
"abilities": [
{
"name": "EntryAbility",
"srcEntrance": "./ets/EntryAbility.ts",
"description": "$string:EntryAbility_desc",
"icon": "$media:icon",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:icon",
"startWindowBackground": "$color:start_window_background",
"visible": true,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
]
}
]
}
}
2. 打包应用
- 在 DevEco Studio 中,点击 "Build" > "Build Hap(s)/App(s) > Build App(s)"
- 构建完成后,可以在项目的
build
目录下找到生成的.hap
或.app
文件 - 可以将应用安装到设备或模拟器上进行测试
六、调试与测试
1. 日志查看
使用 console.log()
输出日志,在 DevEco Studio 的 "Logcat" 面板中查看:
console.log('This is a log message');
console.info('This is an info message');
console.warn('This is a warning message');
console.error('This is an error message');
2. 调试工具
DevEco Studio 提供以下调试工具:
- 断点调试:设置断点,逐步执行代码
- 变量查看:查看当前作用域的变量值
- 表达式求值:计算表达式的值
- 内存分析:分析应用的内存使用情况
3. 测试
HarmonyOS 支持单元测试和 UI 测试:
单元测试示例:
// test/MyTest.ets
import { describe, it, expect } from '@ohos/hypium';
describe('MyTest', () => {
it('should add two numbers correctly', () => {
expect(1 + 2).toBe(3);
});
});
UI 测试:
可以使用 DevEco Studio 的 UI 测试工具进行自动化测试。
七、发布应用
1. 应用签名
- 在 DevEco Studio 中,点击 "Build" > "Generate Key and CSR"
- 填写相关信息生成密钥库
- 使用生成的密钥库对应用进行签名
2. 发布到应用市场
- 准备应用发布所需材料(图标、截图、描述等)
- 注册华为开发者账号
- 在华为应用市场提交应用审核
八、学习资源
九、总结
HarmonyOS 开发基于声明式 UI 和分布式能力,为开发者提供了构建全场景智能应用的能力。通过本文介绍的基本用法,你可以开始构建自己的 HarmonyOS 应用,并逐步探索其更强大的分布式特性。随着 HarmonyOS 生态的不断发展,掌握其开发技能将为开发者带来更多机会。
建议开发者:
- 从简单项目开始,逐步熟悉 HarmonyOS 的开发模式
- 多参考官方示例代码和文档
- 关注 HarmonyOS 的新特性和更新
- 参与开发者社区,与其他开发者交流经验
随着实践经验的积累,你将能够充分发挥 HarmonyOS 的分布式能力,构建创新的应用体验。
更多推荐
所有评论(0)