HarmonyOS 是华为推出的面向全场景的分布式操作系统,支持多种设备形态(手机、平板、智能穿戴、智能家居等)的跨设备协同。本文将详细介绍 HarmonyOS 的基本开发用法,包括环境搭建、项目创建、核心组件使用、UI 开发、分布式能力等关键内容。

一、开发环境搭建

1. 安装 DevEco Studio

DevEco Studio 是华为官方提供的 HarmonyOS 应用开发集成环境:

  1. 访问 DevEco Studio 官网
  2. 下载并安装适合你操作系统的版本
  3. 安装过程中选择 HarmonyOS SDK(包含必要的开发工具和库)

2. 配置开发环境

安装完成后:

  1. 打开 DevEco Studio
  2. 首次启动时会提示配置 SDK 路径(默认已配置)
  3. 配置模拟器或连接真机设备:
    • 可以创建模拟器(支持多种设备类型)
    • 或通过 USB 连接真机设备(需开启开发者模式)

3. 创建新项目

  1. 点击 "Create Project"
  2. 选择项目模板:
    • ​Empty Ability​​:空项目模板
    • ​Page Ability​​:包含基础页面的项目模板
    • 其他模板根据需求选择
  3. 配置项目信息:
    • 项目名称
    • 包名(遵循 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. 打包应用

  1. 在 DevEco Studio 中,点击 "Build" > "Build Hap(s)/App(s) > Build App(s)"
  2. 构建完成后,可以在项目的 build 目录下找到生成的 .hap.app 文件
  3. 可以将应用安装到设备或模拟器上进行测试

六、调试与测试

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. 应用签名

  1. 在 DevEco Studio 中,点击 "Build" > "Generate Key and CSR"
  2. 填写相关信息生成密钥库
  3. 使用生成的密钥库对应用进行签名

2. 发布到应用市场

  1. 准备应用发布所需材料(图标、截图、描述等)
  2. 注册华为开发者账号
  3. 在华为应用市场提交应用审核

八、学习资源

  1. HarmonyOS 官方文档
  2. DevEco Studio 官方文档
  3. HarmonyOS 示例代码
  4. HarmonyOS 开发者社区

九、总结

HarmonyOS 开发基于声明式 UI 和分布式能力,为开发者提供了构建全场景智能应用的能力。通过本文介绍的基本用法,你可以开始构建自己的 HarmonyOS 应用,并逐步探索其更强大的分布式特性。随着 HarmonyOS 生态的不断发展,掌握其开发技能将为开发者带来更多机会。

建议开发者:

  1. 从简单项目开始,逐步熟悉 HarmonyOS 的开发模式
  2. 多参考官方示例代码和文档
  3. 关注 HarmonyOS 的新特性和更新
  4. 参与开发者社区,与其他开发者交流经验

随着实践经验的积累,你将能够充分发挥 HarmonyOS 的分布式能力,构建创新的应用体验。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐