从零开始:鸿蒙应用开发入门指南

460 阅读10分钟

从零开始:鸿蒙应用开发入门指南

作为一名新入门的鸿蒙应用开发者,我刚刚完成了华为开发者官网的入门教程学习。在这篇文章中,我将分享我的学习心得和实战经验,帮助更多想要踏入鸿蒙开发世界的小伙伴们快速上手。

目录

  1. 鸿蒙系统简介
  1. 开发环境搭建
  1. 基本概念理解
  1. 第一个 HarmonyOS 应用
  1. 工程目录结构解析
  1. UI 开发基础
  1. 页面跳转实现
  1. 总结与展望

鸿蒙系统简介

什么是 HarmonyOS

HarmonyOS(鸿蒙系统)是华为公司自主研发的一款面向全场景的分布式操作系统。它打破了传统设备的物理壁垒,实现了 "一次开发,多端部署" 的愿景。无论是手机、平板、手表还是智慧屏,都可以运行在统一的鸿蒙生态下。

鸿蒙的核心特性

  1. 分布式架构:鸿蒙采用分布式技术,将多个设备融合成一个 "超级终端"
  1. 天生流畅:基于微内核技术,确保系统的流畅性和响应速度
  1. 内核安全:从底层保障用户数据和隐私安全
  1. 生态共享:跨设备共享资源,实现无缝流转体验

为什么选择鸿蒙开发

  • 市场前景广阔:华为设备用户基数庞大,鸿蒙生态快速发展
  • 技术先进:采用最新的声明式 UI 开发范式
  • 开发效率高:一次开发可适配多种设备
  • 就业机会多:随着鸿蒙生态的壮大,相关人才需求激增

开发环境搭建

下载安装 DevEco Studio

鸿蒙应用开发的官方 IDE 是 DevEco Studio,这是一个基于 IntelliJ IDEA 开发的专业开发工具。

安装步骤:

  1. 访问华为开发者官网
  1. 下载最新版本的 DevEco Studio
  1. 运行安装程序,按照向导完成安装
  1. 启动 DevEco Studio,安装必要的 SDK 和工具链

配置开发环境

首次启动 DevEco Studio 后,需要进行一些基本配置:

  1. SDK 配置:选择合适的 API 版本(建议选择最新稳定版)
  1. 模拟器配置:下载并安装鸿蒙模拟器
  1. 真机调试:配置 USB 调试模式(如果使用真实设备)

系统要求:

  • Windows 10/11 (64 位) 或 macOS 10.14 及以上
  • 至少 8GB RAM(推荐 16GB)
  • 20GB 以上可用磁盘空间
  • 支持虚拟化技术的处理器

基本概念理解

UI 框架:ArkUI

鸿蒙提供了一套强大的 UI 开发框架 ——ArkUI 框架。它为开发者提供了应用 UI 开发所必需的各种能力,包括组件、布局计算、动画效果、交互处理等。

开发范式

ArkUI 框架提供了两种开发范式:

1. 声明式开发范式(推荐)

基于 ArkTS 语言的声明式开发范式,是鸿蒙官方主推的开发方式。

特点:

  • 使用 ArkTS 语言(TypeScript 的超集)
  • 数据驱动 UI 更新
  • 适用于复杂度较大、团队协作度较高的项目
  • 推荐移动系统应用开发人员使用
2. 类 Web 开发范式

兼容 JavaScript 的类 Web 开发范式,适合有 Web 前端背景的开发者。

特点:

  • 使用 JavaScript 语言
  • 类似 Web 开发的编程模式
  • 适用于界面较为简单的应用
  • 适合 Web 前端开发人员快速上手

应用模型

鸿蒙提供了两种应用模型:

1. Stage 模型(推荐)

HarmonyOS API 9 开始新增的模型,是目前主推且会长期演进的模型。

核心概念:

  • AbilityStage:应用组件的 "舞台"
  • WindowStage:窗口的 "舞台"
  • Ability:应用的基本功能单元
  • Page:应用的页面
2. FA 模型(逐步淘汰)

HarmonyOS API 7 开始支持的模型,已经不再主推。

注意:本文将基于 Stage 模型进行讲解,建议新开发者直接学习 Stage 模型。

第一个 HarmonyOS 应用

让我们动手创建第一个鸿蒙应用。这个应用将包含两个页面,实现基本的页面跳转功能。

创建新项目

  1. 打开 DevEco Studio
  1. 点击 "Create Project"
  1. 选择 "Application" 应用开发
  1. 选择模板 "Empty Ability"
  1. 点击 "Next" 进入配置界面

项目配置

在配置工程界面,设置以下参数:

  • Project name:MyFirstHarmonyApp
  • Bundle name:com.example.myapplication
  • Compatible SDK:选择最新的 API 版本(如 6.0.0 (20))
  • Device type:选择目标设备类型(Phone、Tablet 等)
  • UI Syntax:选择 "ArkTS"(声明式开发范式)

点击 "Finish",等待工程创建完成。

项目预览

工程创建完成后,DevEco Studio 会自动生成一个简单的 "Hello World" 应用。

运行应用:

  1. 选择合适的模拟器或连接真实设备
  1. 点击运行按钮(绿色三角形)
  1. 等待应用编译、安装和启动
  1. 在模拟器或设备上查看运行效果

工程目录结构解析

了解工程目录结构对于鸿蒙开发至关重要。基于 Stage 模型的 ArkTS 工程结构如下:

MyFirstHarmonyApp/
├── AppScope/
│   └── app.json5              # 应用的全局配置信息
├── entry/                     # HarmonyOS工程模块
│   ├── src/
│   │   └── main/
│   │       ├── ets/           # ArkTS源码目录
│   │       │   ├── entryability/  # 应用入口
│   │       │   │   └── EntryAbility.ts
│   │       │   ├── entrybackupability/  # 备份恢复能力
│   │       │   │   └── EntryBackupAbility.ts
│   │       │   └── pages/     # 应用页面
│   │       │       └── Index.ets
│   │       ├── resources/     # 资源文件目录
│   │       │   ├── base/
│   │       │   │   ├── element/  # 元素资源
│   │       │   │   ├── media/    # 媒体资源
│   │       │   │   └── profile/  # 配置文件
│   │       │   └── rawfile/      # 原始文件
│   │       └── module.json5    # 模块配置文件
│   ├── build-profile.json5    # 模块编译配置
│   ├── hvigorfile.ts          # 模块级编译脚本
│   └── obfuscation-rules.txt  # 混淆规则文件
├── build-profile.json5        # 工程级配置
├── hvigorfile.ts              # 工程级编译脚本
└── oh-package.json5           # 依赖管理配置

重要文件说明

1. app.json5

应用的全局配置文件,包含应用的基本信息、权限配置等。

2. module.json5

模块配置文件,包含 HAP 包的配置信息、设备配置等。

3. EntryAbility.ts

应用的入口文件,负责应用的启动和生命周期管理。

4. Index.ets

应用的首页文件,包含页面的 UI 布局和业务逻辑。

5. resources 目录

存放应用所需的各种资源文件:

  • element:字符串、颜色、尺寸等元素资源
  • media:图片、音频、视频等媒体资源
  • profile:布局文件和样式配置
  • rawfile:其他原始文件

UI 开发基础

ArkTS 语言基础

ArkTS 是鸿蒙应用开发的推荐语言,它是 TypeScript 的超集,提供了更强大的类型系统和语言特性。

基本语法
// 组件定义
@Component
struct MyComponent {
  // 状态管理
  @State message: string = 'Hello HarmonyOS'
  
  // UI构建
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(30)
          .fontWeight(FontWeight.Bold)
          .textColor('#007AFF')
      }
      .width('100%')
    }
    .height('100%')
  }
}
装饰器

ArkTS 提供了多种装饰器来实现不同的功能:

  • @Component:声明组件
  • @Entry:声明入口组件
  • @State:组件内部状态
  • @Prop:父子组件单向数据传递
  • @Link:父子组件双向数据绑定
  • @Provide/@Consume:跨层级组件通信

常用组件

1. 布局组件
  • Row:水平布局容器
  • Column:垂直布局容器
  • Stack:堆叠布局容器
  • List:列表容器
  • Grid:网格布局容器
2. 基础组件
  • Text:文本显示组件
  • Image:图片显示组件
  • Button:按钮组件
  • TextInput:文本输入组件
  • Checkbox:复选框组件
  • Radio:单选按钮组件
3. 容器组件
  • List:列表容器
  • Grid:网格容器
  • Scroll:滚动容器
  • Tabs:标签页容器

布局系统

鸿蒙提供了灵活的布局系统,支持多种布局方式:

线性布局

使用 Row 和 Column 组件实现线性布局:

Row({ space: 20 }) {
  Text('Item 1')
    .width(100)
    .height(50)
    .backgroundColor('#FF0000')
  
  Text('Item 2')
    .width(100)
    .height(50)
    .backgroundColor('#00FF00')
  
  Text('Item 3')
    .width(100)
    .height(50)
    .backgroundColor('#0000FF')
}
.padding(20)
弹性布局

使用 Flex 布局实现更灵活的布局:

Row({ space: 10 }) {
  Text('Flex Item 1')
    .flexGrow(1)
    .height(50)
    .backgroundColor('#FF0000')
  
  Text('Flex Item 2')
    .flexGrow(2)
    .height(50)
    .backgroundColor('#00FF00')
}
.width('100%')
.padding(20)

页面跳转实现

在鸿蒙应用中,页面跳转是通过路由(Router)来实现的。让我们实现一个包含两个页面的应用,演示页面跳转功能。

创建第二个页面

  1. 在pages目录下创建一个新的页面文件Second.ets
// Second.ets
import router from '@ohos.router';
@Entry
@Component
struct SecondPage {
  @State message: string = 'Hi there!';
  
  build() {
    Row() {
      Column({ space: 30 }) {
        Text(this.message)
          .fontSize(40)
          .fontWeight(FontWeight.Bold)
        
        Button('Back')
          .width(200)
          .height(50)
          .fontSize(20)
          .onClick(() => {
            // 返回上一页
            router.back();
          })
      }
      .width('100%')
      .padding(30)
    }
    .height('100%')
  }
}

修改首页实现跳转

修改Index.ets文件,添加跳转到第二个页面的功能:

// Index.ets
import router from '@ohos.router';
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  
  build() {
    Row() {
      Column({ space: 30 }) {
        Text(this.message)
          .fontSize(40)
          .fontWeight(FontWeight.Bold)
        
        Button('Next')
          .width(200)
          .height(50)
          .fontSize(20)
          .onClick(() => {
            // 跳转到第二个页面
            router.pushUrl({
              url: 'pages/Second'
            });
          })
      }
      .width('100%')
      .padding(30)
    }
    .height('100%')
  }
}

路由配置

在module.json5文件中配置页面路由:

{
  "module": {
    "name": "entry",
    "type": "entry",
    "srcEntry": "./src/main/ets/entryability/EntryAbility.ts",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": ["phone", "tablet"],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": [
      "pages/Index",
      "pages/Second"
    ],
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./src/main/ets/entryability/EntryAbility.ts",
        "description": "$string:EntryAbility_desc",
        "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"]
          }
        ]
      }
    ]
  }
}

数据传递

在页面跳转时,可以传递数据:

// 跳转到第二个页面并传递数据
router.pushUrl({
  url: 'pages/Second',
  params: {
    data: 'Hello from Index Page',
    count: 123
  }
});
// 在第二个页面接收数据
onPageShow() {
  const params = router.getParams();
  if (params) {
    this.message = params.data;
  }
}

总结与展望

学习收获

通过这次学习,我深入了解了鸿蒙应用开发的基础知识:

  1. 环境搭建:掌握了 DevEco Studio 的安装和配置
  1. 基本概念:理解了 ArkUI 框架、开发范式和应用模型
  1. UI 开发:学会了使用 ArkTS 语言进行声明式 UI 开发
  1. 页面跳转:实现了多页面应用和路由管理

下一步学习计划

  1. 深入学习 ArkTS 语言特性
  1. 掌握更多 UI 组件和布局方式
  1. 学习状态管理和数据持久化
  1. 了解网络请求和第三方库集成
  1. 学习应用发布和上架流程

开发建议

对于新手开发者:
  1. 从基础开始:先掌握 ArkTS 语言基础和基本组件
  1. 多动手实践:通过小项目积累开发经验
  1. 阅读官方文档:华为开发者官网提供了丰富的学习资源
  1. 加入社区:参与鸿蒙开发者社区,与其他开发者交流学习
对于有经验的开发者:
  1. 关注新特性:鸿蒙系统快速发展,及时了解新功能
  1. 实践最佳实践:学习和分享开发经验
  1. 参与开源项目:为鸿蒙生态贡献力量
  1. 考虑跨平台:利用鸿蒙的分布式特性,开发创新应用

结语

鸿蒙应用开发是一个充满机遇的领域。随着鸿蒙生态的不断发展壮大,掌握这项技能将为你的职业发展带来新的可能性。希望这篇入门指南能够帮助你顺利踏上鸿蒙开发的旅程。

记住,学习编程最重要的是持续实践和保持好奇心。无论遇到什么困难,都不要放弃,相信自己能够掌握这项新技能。

让我们一起期待鸿蒙生态的美好未来,为构建更加智能、互联的数字世界贡献自己的力量!


参考资源:


如果这篇文章对你有帮助,欢迎点赞、收藏和分享。也欢迎在评论区留言讨论,一起交流学习心得!


以上内容为豆包生成,就想看看有多少人会认可AI生成的内容