5.3 KiB
5.3 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
项目概述
这是一个 MFA Authenticator (多因素身份验证器) HarmonyOS 应用程序,使用 ArkTS (扩展的 TypeScript) 和 ArkUI 框架开发。应用实现了基于时间的一次性密码(TOTP)算法,用于生成双因素认证验证码。
核心功能
- TOTP 验证码生成(30秒自动刷新)
- 账户管理(添加、编辑、删除)
- 本地加密存储
- 搜索功能
- 暗色模式支持
- Apple Design 风格的简洁 UI
构建系统
项目使用 Hvigor 作为构建工具:
- 构建命令: 通过 DevEco Studio 或
hvigorw脚本构建 - 清理:
hvigorw clean - 构建:
hvigorw assembleHap - 调试构建:
hvigorw --mode debug assembleHap - 发布构建:
hvigorw --mode release assembleHap
测试
项目包含两种测试类型:
- 本地单元测试:
entry/src/test/- 使用 Hypium 框架 - 设备测试:
entry/src/ohosTest/- 需要在设备或模拟器上运行 - 运行测试: 通过 DevEco Studio 的测试配置运行
依赖的测试框架:
@ohos/hypium: 单元测试框架@ohos/hamock: Mock 工具
代码架构
模块结构
entry/src/main/ets/
├── common/
│ ├── constants/
│ │ └── AppConstants.ets # 应用常量(TOTP周期、UI常量等)
│ └── utils/
│ ├── Base32.ets # Base32 编解码工具
│ ├── TOTPGenerator.ets # TOTP 算法实现
│ └── StorageUtil.ets # 本地存储工具(Preferences)
├── model/
│ └── Account.ets # 账户数据模型
├── viewmodel/
│ └── AccountViewModel.ets # 账户业务逻辑
├── view/
│ └── components/
│ ├── AccountCard.ets # 账户卡片组件
│ └── ProgressRing.ets # 圆形进度指示器
├── pages/
│ ├── AccountListPage.ets # 主页面(账户列表)
│ ├── AddAccountPage.ets # 添加账户页面
│ └── AccountDetailPage.ets # 账户详情/编辑页面
├── entryability/
│ └── EntryAbility.ets # 应用入口
└── entrybackupability/
└── EntryBackupAbility.ets # 备份恢复功能
核心模块说明
1. TOTP 算法实现
- TOTPGenerator.ets: 基于 RFC 6238 标准实现
- 使用 HarmonyOS 的
cryptoFramework生成 HMAC-SHA1 - 支持自定义时间步长和验证码位数
- 提供进度计算方法
- 使用 HarmonyOS 的
2. 数据存储
- StorageUtil.ets: 使用 Preferences API 进行持久化
- Account Model: JSON 序列化存储账户信息
- 支持加密存储(未来可扩展)
3. UI 组件
- AccountCard: 显示账户信息、验证码、进度环
- 点击复制验证码
- 长按显示操作菜单
- ProgressRing: 圆形进度指示器,显示倒计时
4. 页面结构
-
AccountListPage (主页)
- 账户列表展示
- 搜索功能
- 定时器自动刷新验证码
-
AddAccountPage (添加账户)
- Tab 切换:扫码/手动输入
- 表单验证
-
AccountDetailPage (编辑账户)
- 编辑发行者和账户名
- 查看密钥(可切换显示/隐藏)
ArkTS 开发要点
- 文件扩展名:
.ets(ArkTS 文件) - UI 组件: 使用声明式语法,如
Text,RelativeContainer,Button等 - 状态管理: 使用装饰器
@State,@Prop,@Link等 - 日志输出: 使用
hilogAPI,格式:hilog.info(DOMAIN, tag, message) - 资源引用: 使用
$r('app.type.name')格式,如$r('app.string.EntryAbility_label')
配置文件
- build-profile.json5: 应用构建配置,包含签名、目标 SDK 版本等
- module.json5: 模块配置,定义 abilities、页面、权限等
- oh-package.json5: 依赖包管理
- code-linter.json5: 代码检查规则
SDK 版本
- 目标 SDK: HarmonyOS 6.0.0(20)
- 兼容 SDK: HarmonyOS 6.0.0(20)
- 运行时: HarmonyOS
UI 设计规范
配色方案(Apple Design 风格)
- 主色:
#007AFF(浅色) /#0A84FF(深色) - 背景色:
#F2F2F7(浅色) /#000000(深色) - 卡片背景:
#FFFFFF(浅色) /#1C1C1E(深色) - 文字颜色: 主要 / 次要 / 三级 (响应式暗色模式)
设计元素
- 圆角: 12-16vp
- 间距: 8/12/16/24vp 系统
- 字体大小:
- 标题: 28-32fp
- 正文: 15-17fp
- 验证码: 36fp (等宽字体)
- 辅助文字: 13fp
交互规范
- 卡片点击: 复制验证码
- 长按: 显示操作菜单
- 进度环: 30秒倒计时动画
注意事项
- 所有源代码文件使用
.ets扩展名 - 页面路径在
entry/src/main/resources/base/profile/main_pages.json中注册 - 使用
@kit.*导入系统能力,如@kit.AbilityKit,@kit.ArkUI - 日志使用统一的
AppConstants.LOG_DOMAIN和AppConstants.LOG_TAG - TOTP 密钥必须是 Base32 格式
- 应用支持自动暗色模式切换
开发建议
- 在 DevEco Studio 中打开项目进行开发和调试
- 使用 HarmonyOS 模拟器或真机进行测试
- 验证码刷新使用定时器,注意在页面销毁时清理定时器
- 添加新页面时记得更新
main_pages.json