4.6 KiB
4.6 KiB
harmony-client
HarmonyOS NEXT 应用(鸿蒙客户端)。ArkTS + ArkUI 声明式 UI,hvigor 构建,DevEco Studio 开发。 HarmonyOS NEXT app. ArkTS + ArkUI declarative UI, hvigor build, DevEco Studio.
Quick Start
- 主路径:用 DevEco Studio 打开本目录,首次打开自动同步依赖(hvigor 插件 + oh_modules)。 Primary: open this folder in DevEco Studio; first open auto-syncs dependencies.
- 命令行构建(
hvigorwwrapper 由 DevEco 首次同步生成):hvigorw assembleHap --mode module -p product=default -p buildMode=debug - 测试:本地单测
entry/src/test/,设备测试entry/src/ohosTest/。见docs/testing.md。
Architecture Overview
单 HAP 模块应用(entry/)。页面在 main_pages.json 注册;EntryAbility 是应用入口 Ability。
Single-HAP module (entry/). Pages registered in main_pages.json; EntryAbility is the app entry.
详见 docs/architecture.md。
Directory Structure
harmony-client/
├── AppScope/ # 应用级配置(bundleName、应用图标/标签)
├── entry/ # 主模块(单 HAP)
│ └── src/
│ ├── main/
│ │ ├── ets/ # ArkTS 源码
│ │ │ ├── entryability/ # 应用入口 Ability
│ │ │ ├── entrybackupability/ # 备份扩展 Ability
│ │ │ └── pages/ # 页面(@Entry 组件)
│ │ ├── resources/ # 资源(字符串/颜色/媒体,用 $r() 引用)
│ │ └── module.json5 # 模块清单(Ability 声明、权限)
│ ├── test/ # 本地单元测试(hypium)
│ ├── ohosTest/ # 设备集成测试(hypium)
│ └── mock/ # mock 配置
├── build-profile.json5 # 构建/签名/产品配置
├── code-linter.json5 # 代码规范(TS ESLint + 安全/性能规则)
├── hvigorfile.ts # hvigor 构建入口
├── oh-package.json5 # 依赖声明(hypium / hamock)
└── docs/ # 系统记录(见下方文档地图)
Key Conventions(硬规则 / Hard Rules)
- 严格类型 Strict types — 禁止
any/@ts-ignore/@ts-expect-error;类型搞不定说明设计有问题。 Noany/@ts-ignore/@ts-expect-error. If types won't work, the design is wrong. - 声明式 UI Declarative UI — 用状态驱动渲染,禁止命令式直接改 UI。 Drive UI via state; never mutate UI imperatively.
- 命名 Naming — 组件/Ability
PascalCase(文件.ets);变量/函数/属性camelCase;常量UPPER_SNAKE_CASE。 - 资源 Resources — 字符串/颜色/媒体一律
$r('app.xxx'),禁止硬编码。 All strings/colors/media via$r('app.xxx'); no hardcoding. - 分层 Layering — 页面只做 UI;业务逻辑放
service/,数据模型放model/,复用组件放components/。 Pages = UI only; logic →service/, models →model/, reusable components →components/. - 安全 Security — 遵守
code-linter.json5的@security/*规则(禁用不安全哈希/AES 等)。 - 改后必验证 Verify after change — 每次改动跑 lint + 相关测试,见
docs/testing.md。
Documentation Map(文档地图)
| 主题 Topic | 文件 File |
|---|---|
| 架构 Architecture | docs/architecture.md |
| 编码规范 Conventions | docs/conventions.md |
| 测试 Testing | docs/testing.md |
| 构建/签名/部署 Build & Deploy | docs/build-deploy.md |
Common Tasks
- 加页面 Add a page →
entry/src/main/ets/pages/+ 在main_pages.json注册 - 加复用组件 Reusable component →
entry/src/main/ets/components/ - 写业务逻辑 Business logic →
entry/src/main/ets/service/ - 加数据模型 Data model →
entry/src/main/ets/model/ - 跑单测 Run tests →
docs/testing.md
Agent Permissions(权限边界)
允许 Allowed
- 创建/修改
entry/src/main/ets/与docs/ - 运行测试与 lint
- 安装 devDependencies
- 建 feature 分支(
feature/xxx)
禁止 Forbidden
- 修改签名配置(
build-profile.json5的signingConfigs) - 删除测试文件
- push 到 main/master
- 往
local.properties/.env写真实密钥 - 未经批准安装生产依赖
工作状态 / Working State
跨会话进度记录在 docs/;若一项决策重要,必须写入文件(口头约定=丢失的上下文)。
Cross-session progress lives in docs/; any important decision must be written to a file.