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.01.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: StudyPartnerBundle Name: com.youtoo.study.partnerLanguage: ArkTSCompatible SDK: 6.0.0(20)1.3.2 添加子模块右键项目根目录 → New → Module依次创建模块名类型说明commonShared Library (HSP)公共组件与工具networkShared Library (HSP)网络请求封装cloud_objectsShared Library (HSP)云数据库对象feature/todoShared Library (HSP)待办功能feature/strokeShared Library (HSP)笔画功能feature/chatShared Library (HSP)AI口语功能feature/myShared Library (HSP)个人中心smartxplayerShared 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定义每个模块的具体配置下一篇将深入讲解多模块架构设计原则和模块间通信机制。