HarmonyOS《柚兔学伴》项目实战01-项目全景与工程创建
·
第一篇:项目全景与工程创建
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
- 访问 HarmonyOS 开发者官网下载 DevEco Studio NEXT 版本
- 安装过程中勾选 Node.js 和 Ohos SDK
- 首次启动配置 SDK 路径,确保 API Version ≥ 12(对应 SDK 6.0.0)
1.2.2 配置 SDK
在 DevEco Studio 中:
- File → Settings → SDK → 勾选 HarmonyOS NEXT SDK
- 确认
compileSdkVersion和compatibleSdkVersion配置一致
本项目配置为:
// 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 小结
本篇介绍了"柚兔学伴"项目的整体面貌,完成了开发环境搭建和多模块项目的创建。关键要点:
- 项目采用 9 模块 架构,entry 为主入口,common/network 为公共层,4 个 feature 模块实现业务功能
build-profile.json5控制签名和模块注册,是构建的核心配置oh-package.json5管理三方库依赖,模块间通过file:协议相互引用app.json5定义应用全局信息,module.json5定义每个模块的具体配置
下一篇将深入讲解多模块架构设计原则和模块间通信机制。
更多推荐

所有评论(0)