第1篇:项目初始化与环境搭建

教程目标

通过本篇教程,你将学会:

  • 安装和配置 DevEco Studio 开发环境
  • 配置 HarmonyOS SDK
  • 创建 HarmonyOS 应用项目
  • 理解项目结构
  • 配置应用权限

完成本教程后,你将能够成功创建并运行一个基础的 HarmonyOS 项目。


一、开发环境准备

1.1 系统要求

操作系统

  • Windows 10/11 (64位)
  • macOS 10.14 或更高版本
  • Ubuntu 18.04 或更高版本

硬件要求

  • 内存:8GB 以上(推荐 16GB)
  • 硬盘:至少 10GB 可用空间
  • 处理器:Intel i5 或更高

1.2 下载 DevEco Studio

  1. 访问华为开发者联盟官网:https://developer.harmonyos.com/
  2. 进入"开发工具"页面
  3. 下载最新版本的 DevEco Studio(本教程基于 5.0+ 版本)

下载地址:https://developer.huawei.com/consumer/cn/download/

1.3 安装 DevEco Studio

Windows 安装步骤:
  1. 双击下载的安装包 deveco-studio-x.x.x.exe
  2. 选择安装路径(建议不要包含中文和空格)
  3. 勾选"Add to PATH"选项
  4. 点击"Install"开始安装
  5. 安装完成后,点击"Finish"
macOS 安装步骤:
  1. 打开下载的 .dmg 文件
  2. 将 DevEco Studio 拖拽到 Applications 文件夹
  3. 首次打开时,可能需要在"系统偏好设置 → 安全性与隐私"中允许运行
Linux 安装步骤:
# 解压安装包
tar -zxvf deveco-studio-x.x.x.tar.gz

# 进入安装目录
cd deveco-studio/bin

# 运行安装脚本
./studio.sh

二、首次启动配置

2.1 启动 DevEco Studio

首次启动时,会进入配置向导:

  1. 导入设置:如果是首次安装,选择"Do not import settings"
  2. 用户协议:阅读并同意用户协议
  3. 数据共享:根据个人意愿选择是否共享数据

2.2 配置 SDK

  1. 在欢迎界面,点击"Configure" → “Settings”
  2. 进入"SDK Manager"
  3. 配置 SDK 路径(建议使用默认路径)

SDK 组件选择

  • ✅ HarmonyOS SDK (API 17+)
  • ✅ HarmonyOS SDK Platform-Tools
  • ✅ HarmonyOS SDK Build-Tools
  • ✅ HarmonyOS Emulator
  1. 点击"Apply"开始下载和安装 SDK
  2. 等待下载完成(可能需要较长时间,取决于网络速度)

2.3 配置 Node.js 和 ohpm

DevEco Studio 会自动配置 Node.js 和 ohpm(OpenHarmony Package Manager)。

验证安装:

# 打开终端,输入以下命令验证
node --version
ohpm --version

三、创建项目

3.1 创建新项目

  1. 在 DevEco Studio 欢迎界面,点击"Create Project"
  2. 选择项目模板:
    • 选择"Application"
    • 选择"Empty Ability"模板
  3. 点击"Next"

3.2 配置项目信息

在项目配置页面,填写以下信息:

基本信息

  • Project name: ZhongZhiGuanJia(种植管家)
  • Bundle name: com.leson.zhongdi
  • Save location: 选择项目保存路径(建议不包含中文)

项目配置

  • Compile SDK: API 17 或更高
  • Model: Stage
  • Language: ArkTS

设备类型

  • ✅ Phone(手机)
  • ✅ Tablet(平板)

点击"Finish"创建项目。

3.3 等待项目初始化

创建项目后,DevEco Studio 会自动:

  1. 生成项目结构
  2. 下载依赖包(通过 ohpm)
  3. 构建项目索引

注意:首次创建项目可能需要较长时间下载依赖,请耐心等待。


四、项目结构解析

创建完成后,你会看到以下项目结构:

ZhongZhiGuanJia/
├── AppScope/                    # 应用全局配置
│   ├── app.json5               # 应用配置文件
│   └── resources/              # 全局资源
├── entry/                       # 主模块
│   ├── src/
│   │   ├── main/
│   │   │   ├── ets/           # ArkTS 源代码
│   │   │   │   ├── entryability/
│   │   │   │   │   └── EntryAbility.ets  # 应用入口
│   │   │   │   └── pages/
│   │   │   │       └── Index.ets          # 首页
│   │   │   ├── resources/     # 资源文件
│   │   │   └── module.json5   # 模块配置
│   │   └── ohosTest/          # 测试代码
│   └── build-profile.json5    # 构建配置
├── oh_modules/                 # 依赖包(类似 node_modules)
├── build-profile.json5         # 全局构建配置
├── hvigorfile.ts              # 构建脚本
├── oh-package.json5           # 依赖管理
└── oh-package-lock.json5      # 依赖锁定

4.1 关键文件说明

AppScope/app.json5

应用全局配置文件,定义应用的基本信息:

{
  "app": {
    "bundleName": "com.leson.zhongdi",
    "vendor": "leson",
    "versionCode": 1000000,
    "versionName": "1.0.0",
    "icon": "$media:app_icon",
    "label": "$string:app_name"
  }
}
entry/src/main/module.json5

模块配置文件,定义模块的能力、权限等:

{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone",
      "tablet"
    ],
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:layered_image",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:layered_image",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": ["entity.system.home"],
            "actions": ["ohos.want.action.home"]
          }
        ]
      }
    ]
  }
}
entry/src/main/ets/entryability/EntryAbility.ets

应用入口文件,管理应用生命周期:

import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  }

  onWindowStageCreate(windowStage: window.WindowStage): void {
    // 加载首页
    windowStage.loadContent('pages/Index', (err) => {
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err));
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content');
    });
  }
}
entry/src/main/ets/pages/Index.ets

首页组件:

@Entry
@Component
struct Index {
  @State message: string = 'Hello HarmonyOS';

  build() {
    Column() {
      Text(this.message)
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
  }
}

五、配置应用权限

5.1 权限说明

我们的智慧农业应用需要以下权限:

权限 用途 权限等级
ohos.permission.INTERNET 网络访问,获取地图数据 normal
ohos.permission.LOCATION 精确定位,用于农田位置标记 system_grant
ohos.permission.APPROXIMATELY_LOCATION 模糊定位,用于天气服务 system_grant
ohos.permission.GET_NETWORK_INFO 获取网络状态 normal

5.2 配置权限

打开 entry/src/main/module.json5,在 module 节点下添加 requestPermissions 配置:

{
  "module": {
    "name": "entry",
    "type": "entry",
    // ... 其他配置
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET",
        "reason": "$string:permission_internet_reason",
        "usedScene": {
          "abilities": ["EntryAbility"],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.LOCATION",
        "reason": "$string:permission_location_reason",
        "usedScene": {
          "abilities": ["EntryAbility"],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.APPROXIMATELY_LOCATION",
        "reason": "$string:permission_location_reason",
        "usedScene": {
          "abilities": ["EntryAbility"],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.GET_NETWORK_INFO",
        "reason": "$string:permission_network_info_reason",
        "usedScene": {
          "abilities": ["EntryAbility"],
          "when": "inuse"
        }
      }
    ]
  }
}

5.3 添加权限说明文本

打开 entry/src/main/resources/base/element/string.json,添加权限说明:

{
  "string": [
    {
      "name": "permission_internet_reason",
      "value": "需要网络权限以获取地图数据和在线资源"
    },
    {
      "name": "permission_location_reason",
      "value": "需要定位权限以标记农田位置和提供导航服务"
    },
    {
      "name": "permission_network_info_reason",
      "value": "需要获取网络状态以优化数据加载"
    }
  ]
}

六、运行项目

6.1 配置模拟器

  1. 点击工具栏的"Device Manager"图标
  2. 点击"New Emulator"
  3. 选择设备类型(Phone 或 Tablet)
  4. 选择系统镜像(API 17+)
  5. 点击"Finish"创建模拟器
  6. 启动模拟器(首次启动可能需要较长时间)

6.2 运行应用

  1. 确保模拟器已启动
  2. 点击工具栏的"Run"按钮(绿色三角形)或按 Shift + F10
  3. 等待应用编译和安装
  4. 应用会自动在模拟器中启动

预期效果

  • 屏幕中央显示"Hello HarmonyOS"文本
  • 应用正常运行,无崩溃

6.3 真机调试(可选)

如果你有 HarmonyOS 设备:

  1. 在设备上开启"开发者模式"
  2. 开启"USB 调试"
  3. 使用 USB 连接设备到电脑
  4. 在 DevEco Studio 中选择真机设备
  5. 点击"Run"运行应用

七、常见问题与解决方案

7.1 SDK 下载失败

问题:SDK 下载速度慢或失败

解决方案

  1. 检查网络连接
  2. 配置代理(如果在公司网络环境)
  3. 使用华为镜像源

7.2 项目构建失败

问题:提示"Build failed"

解决方案

  1. 清理项目:Build → Clean Project
  2. 重新构建:Build → Rebuild Project
  3. 检查 oh-package.json5 依赖是否正确
  4. 删除 oh_modules 文件夹,重新安装依赖

7.3 模拟器启动失败

问题:模拟器无法启动

解决方案

  1. 检查 BIOS 是否开启虚拟化(VT-x/AMD-V)
  2. 确保内存充足(至少 4GB 可用)
  3. 重启 DevEco Studio
  4. 重新创建模拟器

八、项目初始化检查清单

完成本教程后,请确认以下内容:

  • ✅ DevEco Studio 安装成功
  • ✅ HarmonyOS SDK 配置完成
  • ✅ 项目创建成功
  • ✅ 项目结构清晰
  • ✅ 权限配置完成
  • ✅ 应用能够在模拟器或真机上运行
  • ✅ 显示"Hello HarmonyOS"文本

九、下一步

恭喜你完成了第一篇教程!你已经成功搭建了 HarmonyOS 开发环境并创建了第一个项目。

在下一篇教程中,我们将学习:

  • 应用架构设计
  • TabBar 导航实现
  • 页面路由配置
  • 主题管理系统

准备工作

  • 熟悉项目结构
  • 了解 ArkTS 基本语法
  • 阅读 HarmonyOS 官方文档

参考资料


教程版本:v1.0
更新日期:2026-01
适用版本:DevEco Studio 5.0+, HarmonyOS API 17+

Logo

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

更多推荐