第一篇:项目全景与工程创建

1.1 "柚兔学伴"项目介绍

请添加图片描述

“柚兔学伴”(包名 com.youtoo.study.partner)是一款面向小学生的 HarmonyOS NEXT 学习陪伴应用,集成了以下核心功能:

  • 待办管理:每日学习任务打卡、番茄钟倒计时、任务完成积分奖励
  • 汉字笔画:Canvas 笔画动画演示、汉字释义查询、AI 字典智能体
  • AI 口语:虚拟人口型同步对话、语音识别、TTS 语音合成、单词/长难句卡片
  • 每日诗词:AI 生成诗词、诗词大意/故事/赏析、朗读播读
  • 练字字帖:田字格/米字格字帖生成、PDF 导出保存
  • 积分兑换:完成任务获取积分、兑换目标设置与兑换记录
  • 华为一键登录:BackupManager 一键登录与数据云备份
  • 小学教材:语文/数学/英语/书法分学科教材浏览与 PDF 阅读

项目采用多模块架构,共 9 个模块:

StudyPartner/
├── entry/           # 主入口模块(HomePage、SplashPage、MainPage)
├── common/          # 公共库(组件、工具、数据库、ViewModel基类)
├── network/         # 网络库(HTTP封装、API管理)
├── cloud_objects/   # 云数据库对象定义
├── feature/
│   ├── todo/        # 待办功能模块
│   ├── stroke/      # 笔画功能模块
│   ├── chat/        # AI口语功能模块
│   └── my/          # 个人中心模块
├── smartxplayer/    # 自定义音频播放器模块
├── AppScope/        # 应用全局资源
└── key/             # 签名证书

1.2 开发环境搭建

1.2.1 安装 DevEco Studio

  1. 访问 HarmonyOS 开发者官网下载 DevEco Studio NEXT 版本
  2. 安装过程中勾选 Node.js 和 Ohos SDK
  3. 首次启动配置 SDK 路径,确保 API Version ≥ 12(对应 SDK 6.0.0)

1.2.2 配置 SDK

在 DevEco Studio 中:

  • File → Settings → SDK → 勾选 HarmonyOS NEXT SDK
  • 确认 compileSdkVersioncompatibleSdkVersion 配置一致

本项目配置为:

// build-profile.json5
{
  "targetSdkVersion": "6.0.0(20)",
  "compatibleSdkVersion": "6.0.0(20)"
}

1.3 创建多模块项目

1.3.1 创建主工程

File → New → Create Project → Empty Ability

填写项目信息:

  • Project Name: StudyPartner
  • Bundle Name: com.youtoo.study.partner
  • Language: ArkTS
  • Compatible SDK: 6.0.0(20)

1.3.2 添加子模块

右键项目根目录 → New → Module,依次创建:

模块名 类型 说明
common Shared Library (HSP) 公共组件与工具
network Shared Library (HSP) 网络请求封装
cloud_objects Shared Library (HSP) 云数据库对象
feature/todo Shared Library (HSP) 待办功能
feature/stroke Shared Library (HSP) 笔画功能
feature/chat Shared Library (HSP) AI口语功能
feature/my Shared Library (HSP) 个人中心
smartxplayer Shared Library (HSP) 音频播放器

1.4 build-profile.json5 详解

这是项目的构建配置文件,控制签名、产物和模块关系:

{
  "app": {
    // 签名配置:debug 和 release 两套
    "signingConfigs": [
      {
        "name": "default",
        "type": "HarmonyOS",
        "material": {
          "certpath": "...cer",
          "keyAlias": "debugKey",
          "keyPassword": "...",
          "profile": "...p7b",
          "signAlg": "SHA256withECDSA",
          "storeFile": "...p12",
          "storePassword": "..."
        }
      },
      {
        "name": "release",
        "type": "HarmonyOS",
        "material": { /* release签名配置 */ }
      }
    ],
    // 产物配置
    "products": [
      {
        "name": "default",
        "signingConfig": "default",  // 引用上方签名配置名
        "targetSdkVersion": "6.0.0(20)",
        "compatibleSdkVersion": "6.0.0(20)",
        "runtimeOS": "HarmonyOS",
        "buildOption": {
          "strictMode": {
            "caseSensitiveCheck": true,
            "useNormalizedOHMUrl": true
          }
        }
      }
    ],
    // 构建模式
    "buildModeSet": [
      { "name": "debug" },
      { "name": "release" }
    ]
  },
  // 模块注册:所有模块必须在此声明
  "modules": [
    { "name": "entry", "srcPath": "./entry", "targets": [...] },
    { "name": "cloud_objects", "srcPath": "./cloud_objects" },
    { "name": "common", "srcPath": "./common" },
    { "name": "network", "srcPath": "./network" },
    { "name": "stroke", "srcPath": "./feature/stroke" },
    { "name": "chat", "srcPath": "./feature/chat" },
    { "name": "todo", "srcPath": "./feature/todo" },
    { "name": "my", "srcPath": "./feature/my" },
    { "name": "smartxplayer", "srcPath": "./smartxplayer", "targets": [...] }
  ]
}

关键要点:

  • signingConfigs 定义签名方案,products 通过 signingConfig 字段引用
  • strictMode 开启严格模式,编译时会做大小写检查
  • modules 中的 name 必须与模块目录下的 oh-package.json5 中的 name 一致

1.5 oh-package.json5 依赖管理

根目录的 oh-package.json5 管理全局依赖:

{
  "modelVersion": "5.1.1",
  "dependencies": {
    "@ibestservices/ibest-ui": "^2.1.6",     // UI组件库(Field/Cell/Dialog/Toast/Search等)
    "@pura/harmony-utils": "^1.3.6",          // 工具库(DateUtil/ToastUtil/PreferencesUtil等)
    "rdbstore": "^1.0.7",                     // 数据库工具
    "@abner/dialog": "^1.2.5",                // 对话框组件(时间选择等)
    "backup_air": "^1.0.0",                   // 华为一键登录与备份
    "@ohos/lottie": "^2.0.14",                // Lottie动画
    "@jjr/lottie_component": "^1.0.3"         // Lottie ArkUI组件封装
  },
  "devDependencies": {
    "@ohos/hypium": "1.0.21",                 // 测试框架
    "@ohos/hamock": "1.0.0"                   // Mock框架
  }
}

各子模块也有自己的 oh-package.json5,声明对其他模块的依赖,例如 feature/chat/oh-package.json5

{
  "dependencies": {
    "common": "file:../../common",
    "network": "file:../../network"
  }
}

1.6 app.json5 应用全局配置

// AppScope/app.json5
{
  "app": {
    "bundleName": "com.youtoo.study.partner",  // 应用唯一标识
    "vendor": "example",                        // 开发者名称
    "versionCode": 1001108,                     // 版本号(递增整数)
    "versionName": "1.0.0.1108",               // 版本名(用户可见)
    "icon": "$media:layered_image",             // 应用图标
    "label": "$string:app_name"                 // 应用名称
  }
}

1.7 项目目录结构一览

StudyPartner/
├── AppScope/
│   ├── app.json5                          # 应用配置
│   └── resources/                         # 全局资源(图标、字符串)
├── entry/
│   ├── src/main/
│   │   ├── ets/
│   │   │   ├── entryability/EntryAbility.ets   # Ability入口
│   │   │   ├── pages/
│   │   │   │   ├── SplashPage.ets              # 闪屏页
│   │   │   │   └── HomePage.ets                # 首页
│   │   │   ├── components/
│   │   │   │   ├── CustomTabBar.ets            # 自定义底部导航
│   │   │   │   ├── TimerComponent.ets          # 倒计时组件
│   │   │   │   └── CustomImageToggle.ets       # 自定义开关
│   │   │   ├── model/
│   │   │   │   ├── TabBarModel.ets             # Tab数据模型
│   │   │   │   └── GlobalInfoModel.ets         # 全局设备信息
│   │   │   └── viewmodel/SplashViewModel.ets   # 闪屏ViewModel
│   │   ├── resources/
│   │   │   ├── base/profile/
│   │   │   │   ├── main_pages.json             # 页面路由配置
│   │   │   │   └── router_map.json             # Navigation路由表
│   │   │   └── rawfile/                        # 原始资源文件
│   │   └── module.json5                        # 模块配置
├── common/
│   └── src/main/ets/
│       ├── component/                          # 公共组件
│       ├── constant/                           # 常量定义
│       ├── data/                               # 数据模型
│       ├── db/                                 # 数据库(PoemDatabase)
│       ├── manager/                            # 管理器(TodoDatabase等)
│       ├── model/                              # 模型
│       ├── routermanager/                      # 路由管理
│       ├── storagemanager/                     # 偏好存储
│       ├── util/                               # 工具类
│       └── viewmodel/                          # ViewModel基类
├── network/
│   └── src/main/ets/
│       ├── HttpManager.ets                     # 网络管理器
│       ├── HttpRequest.ets                     # 请求封装
│       └── common/UrlConstants.ets             # URL常量
├── feature/
│   ├── todo/src/main/ets/view/
│   │   ├── TodoView.ets                        # 待办视图
│   │   ├── PoemPage.ets                        # 诗词详情页
│   │   ├── CopyPage.ets                        # 字帖页
│   │   └── TextbookPage.ets                    # 教材页
│   ├── stroke/src/main/ets/view/
│   │   ├── StrokeView.ets                      # 笔画视图
│   │   └── StrokePage.ets                      # 笔画详情页
│   ├── chat/src/main/ets/view/
│   │   ├── ChatView.ets                        # 口语首页
│   │   ├── ChatPage.ets                        # 对话页
│   │   ├── WordCardPage.ets                    # 单词卡片
│   │   └── SentenceCardPage.ets                # 长难句卡片
│   └── my/src/main/ets/view/
│       ├── MineView.ets                        # 个人中心
│       ├── ScorePage.ets                       # 积分页
│       ├── SettingPage.ets                     # 设置页
│       ├── WebPage.ets                         # Web页
│       └── AboutPage.ets                       # 关于页
└── smartxplayer/                               # 自定义音频播放器

1.8 小结

本篇介绍了"柚兔学伴"项目的整体面貌,完成了开发环境搭建和多模块项目的创建。关键要点:

  1. 项目采用 9 模块 架构,entry 为主入口,common/network 为公共层,4 个 feature 模块实现业务功能
  2. build-profile.json5 控制签名和模块注册,是构建的核心配置
  3. oh-package.json5 管理三方库依赖,模块间通过 file: 协议相互引用
  4. app.json5 定义应用全局信息,module.json5 定义每个模块的具体配置

下一篇将深入讲解多模块架构设计原则和模块间通信机制。

Logo

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

更多推荐