@buaa_smat/hometrans 0.1.13 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +194 -136
  2. package/agents/build-fixer.md +38 -48
  3. package/agents/code-reviewer.md +20 -20
  4. package/agents/logic-coder.md +8 -8
  5. package/agents/logic-context-builder.md +5 -5
  6. package/agents/review-fixer.md +16 -16
  7. package/agents/self-test-fixer.md +15 -15
  8. package/agents/self-tester.md +56 -55
  9. package/agents/spec-generator.md +16 -16
  10. package/dist/cli/config-store.js +120 -9
  11. package/dist/cli/config.js +4 -4
  12. package/dist/cli/env-vars.js +129 -0
  13. package/dist/cli/init.js +315 -276
  14. package/dist/cli/uninstall.js +152 -17
  15. package/dist/context/index.js +10 -197
  16. package/env-requirements.json +181 -181
  17. package/package.json +1 -1
  18. package/resource/choose_editor.png +0 -0
  19. package/resource/common_config.png +0 -0
  20. package/resource/integration_test_config.png +0 -0
  21. package/resource/migration_process.svg +94 -0
  22. package/resource/migration_process_transparent.svg +93 -0
  23. package/resource/set_env.png +0 -0
  24. package/resource/ui_align_config.png +0 -0
  25. package/skills/hmos-batch-ui-align/SKILL.md +10 -0
  26. package/skills/hmos-batch-ui-align/references/conversion-procedure.md +180 -180
  27. package/skills/hmos-batch-ui-align/references/mappings/android-to-harmonyOS-ui-atomic-component-mapping-reference.md +2533 -2533
  28. package/skills/hmos-batch-ui-align/references/mappings/android-to-harmonyOS-ui-interaction-mapping-reference.md +555 -555
  29. package/skills/hmos-batch-ui-align/references/mappings/android-to-harmonyOS-ui-layout-mapping-reference.md +117 -117
  30. package/skills/hmos-batch-ui-align/references/mvvm/@Link/350/243/205/351/245/260/345/231/250/357/274/232/347/210/266/345/255/220/345/217/214/345/220/221/345/220/214/346/255/245.md +648 -648
  31. package/skills/hmos-batch-ui-align/references/mvvm/@Observed/350/243/205/351/245/260/345/231/250/345/222/214@ObjectLink/350/243/205/351/245/260/345/231/250/357/274/232/345/265/214/345/245/227/347/261/273/345/257/271/350/261/241/345/261/236/346/200/247/345/217/230/345/214/226.md +2088 -2088
  32. package/skills/hmos-batch-ui-align/references/mvvm/@Prop/350/243/205/351/245/260/345/231/250/357/274/232/347/210/266/345/255/220/345/215/225/345/220/221/345/220/214/346/255/245.md +1033 -1033
  33. package/skills/hmos-batch-ui-align/references/mvvm/@Provide/350/243/205/351/245/260/345/231/250/345/222/214@Consume/350/243/205/351/245/260/345/231/250/357/274/232/344/270/216/345/220/216/344/273/243/347/273/204/344/273/266/345/217/214/345/220/221/345/220/214/346/255/245.md +1183 -1183
  34. package/skills/hmos-batch-ui-align/references/mvvm/@State/350/243/205/351/245/260/345/231/250/357/274/232/347/273/204/344/273/266/345/206/205/347/212/266/346/200/201.md +576 -576
  35. package/skills/hmos-batch-ui-align/references/mvvm/@Track/350/243/205/351/245/260/345/231/250/357/274/232class/345/257/271/350/261/241/345/261/236/346/200/247/347/272/247/346/233/264/346/226/260.md +297 -297
  36. package/skills/hmos-batch-ui-align/references/mvvm/@Watch/350/243/205/351/245/260/345/231/250/357/274/232/347/212/266/346/200/201/345/217/230/351/207/217/346/233/264/346/224/271/351/200/232/347/237/245.md +395 -395
  37. package/skills/hmos-batch-ui-align/references/mvvm/AppStorage/357/274/232/345/272/224/347/224/250/345/205/250/345/261/200/347/232/204UI/347/212/266/346/200/201/345/255/230/345/202/250.md +902 -902
  38. package/skills/hmos-batch-ui-align/references/mvvm/Environment/357/274/232/350/256/276/345/244/207/347/216/257/345/242/203/346/237/245/350/257/242.md +106 -106
  39. package/skills/hmos-batch-ui-align/references/mvvm/LocalStorage/357/274/232/351/241/265/351/235/242/347/272/247UI/347/212/266/346/200/201/345/255/230/345/202/250.md +1178 -1178
  40. package/skills/hmos-batch-ui-align/references/mvvm/MVVM/346/250/241/345/274/217/357/274/210V1/357/274/211.md +911 -911
  41. package/skills/hmos-batch-ui-align/references/mvvm/PersistentStorage/357/274/232/346/214/201/344/271/205/345/214/226/345/255/230/345/202/250UI/347/212/266/346/200/201.md +354 -354
  42. package/skills/hmos-batch-ui-align/references/mvvm//347/256/241/347/220/206/345/272/224/347/224/250/346/213/245/346/234/211/347/232/204/347/212/266/346/200/201/346/246/202/350/277/260.md +11 -11
  43. package/skills/hmos-convert-pipeline/SKILL.md +63 -49
  44. package/skills/hmos-fix-build-errors/SKILL.md +5 -6
  45. package/skills/hmos-fix-build-errors/references/arkts-strict-patterns.md +219 -219
  46. package/skills/hmos-fix-build-errors/references/known-patterns.md +157 -157
  47. package/skills/hmos-fix-build-errors/references/rdb-entity-pattern.md +131 -131
  48. package/skills/hmos-incremental-ui-align/{readme.md → README.md} +28 -21
  49. package/skills/hmos-incremental-ui-align/SKILL.md +46 -27
  50. package/skills/hmos-incremental-ui-align/diff_analysis.md +52 -52
  51. package/skills/hmos-incremental-ui-align/page_align.md +62 -62
  52. package/skills/hmos-incremental-ui-align/references/Comparison_Template.md +2 -2
  53. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243/@Link/350/243/205/351/245/260/345/231/250/357/274/232/347/210/266/345/255/220/345/217/214/345/220/221/345/220/214/346/255/245.md +648 -648
  54. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243/@Observed/350/243/205/351/245/260/345/231/250/345/222/214@ObjectLink/350/243/205/351/245/260/345/231/250/357/274/232/345/265/214/345/245/227/347/261/273/345/257/271/350/261/241/345/261/236/346/200/247/345/217/230/345/214/226.md +2088 -2088
  55. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243/@Prop/350/243/205/351/245/260/345/231/250/357/274/232/347/210/266/345/255/220/345/215/225/345/220/221/345/220/214/346/255/245.md +1033 -1033
  56. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243/@Provide/350/243/205/351/245/260/345/231/250/345/222/214@Consume/350/243/205/351/245/260/345/231/250/357/274/232/344/270/216/345/220/216/344/273/243/347/273/204/344/273/266/345/217/214/345/220/221/345/220/214/346/255/245.md +1183 -1183
  57. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243/@State/350/243/205/351/245/260/345/231/250/357/274/232/347/273/204/344/273/266/345/206/205/347/212/266/346/200/201.md +576 -576
  58. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243/@Track/350/243/205/351/245/260/345/231/250/357/274/232class/345/257/271/350/261/241/345/261/236/346/200/247/347/272/247/346/233/264/346/226/260.md +297 -297
  59. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243/@Watch/350/243/205/351/245/260/345/231/250/357/274/232/347/212/266/346/200/201/345/217/230/351/207/217/346/233/264/346/224/271/351/200/232/347/237/245.md +395 -395
  60. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243/AppStorage/357/274/232/345/272/224/347/224/250/345/205/250/345/261/200/347/232/204UI/347/212/266/346/200/201/345/255/230/345/202/250.md +902 -902
  61. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243/Environment/357/274/232/350/256/276/345/244/207/347/216/257/345/242/203/346/237/245/350/257/242.md +106 -106
  62. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243/LocalStorage/357/274/232/351/241/265/351/235/242/347/272/247UI/347/212/266/346/200/201/345/255/230/345/202/250.md +1178 -1178
  63. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243/MVVM/346/250/241/345/274/217V1.md +911 -911
  64. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243/PersistentStorage/357/274/232/346/214/201/344/271/205/345/214/226/345/255/230/345/202/250UI/347/212/266/346/200/201.md +354 -354
  65. package/skills/hmos-incremental-ui-align/references/MVVM/345/274/200/345/217/221/346/226/207/346/241/243//347/256/241/347/220/206/345/272/224/347/224/250/346/213/245/346/234/211/347/232/204/347/212/266/346/200/201/346/246/202/350/277/260.md +11 -11
  66. package/skills/hmos-incremental-ui-align/references/UI_Analysis_Template.md +3 -3
  67. package/skills/hmos-incremental-ui-align/references/android-to-harmonyOS-ui-atomic-component-mapping-reference.md +2533 -2533
  68. package/skills/hmos-incremental-ui-align/references/android-to-harmonyOS-ui-interaction-mapping-reference.md +555 -555
  69. package/skills/hmos-incremental-ui-align/references/android-to-harmonyOS-ui-layout-mapping-reference.md +117 -117
  70. package/skills/hmos-incremental-ui-align/scripts/navigation-capure.md +37 -37
  71. package/skills/hmos-integration-test/{readme.md → README.md} +38 -38
  72. package/skills/hmos-integration-test/SKILL.md +63 -52
  73. package/skills/hmos-resources-convert/SKILL.md +5 -5
  74. package/skills/hmos-resources-convert/references/conversion-rules.md +663 -663
  75. package/skills/hmos-resources-convert/references/dependency-analysis-rules.md +388 -388
  76. package/skills/hmos-resources-convert/references/resource-mapping-rules.md +457 -457
  77. package/skills/hmos-resources-convert/references/xml-drawable-to-svg-rules.md +513 -513
  78. package/skills/hmos-spec-generate/SKILL.md +19 -19
  79. package/skills/hmos-spec-generate/references/android-platform-tokens.md +105 -105
  80. package/skills/hmos-spec-generate/references/spec-sample-1.md +78 -78
  81. package/skills/hmos-spec-generate/references/spec-sample-2.md +58 -58
  82. package/skills/hmos-spec-generate/references/spec-sample-3.md +116 -116
  83. package/skills/hmos-spec-generate/references/step4-report-template.md +33 -33
  84. package/tools/test-tools/autotest/README.md +33 -17
  85. package/tools/test-tools/autotest/self_test_runner.py +109 -15
  86. package/resource/hometrans_config.png +0 -0
  87. package/skills/hmos-incremental-ui-align/config-example.json +0 -11
  88. package/tools/test-tools/autotest/config.yaml.example +0 -58
package/README.md CHANGED
@@ -3,19 +3,19 @@
3
3
 
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
5
 
6
- 本文档为完整的 Android HarmonyOS 迁移流程指导。
6
+ 本文档为完整的Android到HarmonyOS迁移流程指导。
7
7
 
8
8
  ---
9
9
 
10
- ## 步骤 0:安装依赖
10
+ ## 步骤0:安装依赖
11
11
 
12
- ### 0.1 安装依赖并连接设备
12
+ ### 0.1安装依赖并连接设备
13
13
 
14
- 按以下顺序安装(`ht init` 会逐项检测,并提示缺失项对各 skill 的影响)。各依赖下方均列出了「被依赖」的步骤:如果你不需要执行某依赖所对应的步骤,则可以不安装该依赖(相应 skill 会显示为受限或不可用,但不影响其它步骤)。
14
+ 按以下顺序安装(`ht init` 会逐项检测,并提示缺失项对各skill的影响)。各依赖下方均列出了「被依赖」的步骤:如果你不需要执行某依赖所对应的步骤,则可以不安装该依赖(相应skill会显示为受限或不可用,但不影响其它步骤)。
15
15
 
16
- 1. **安装 DevEco Studio** — 下载地址:<https://developer.huawei.com/consumer/cn/download/>。安装完成后,配置以下 **PATH 环境变量**(`<DevEco安装目录>` 指 DevEco Studio 的安装根目录):
16
+ 1. **安装DevEco Studio** — 下载地址:<https://developer.huawei.com/consumer/cn/download/>。安装完成后,配置以下 **PATH环境变量**(`<DevEco安装目录>` 指DevEco Studio的安装根目录):
17
17
 
18
- | 工具 | PATH 中加入的目录 |
18
+ | 工具 | PATH中加入的目录 |
19
19
  |------|------------------|
20
20
  | node / npm / npx | `<DevEco安装目录>\tools\node` |
21
21
  | java | `<DevEco安装目录>\jbr\bin` |
@@ -24,113 +24,113 @@
24
24
  验证方式:执行 `node -v`、`java -version`、`hdc -v` 均返回正常
25
25
 
26
26
  被依赖:
27
- - 步骤 1 资源转换(java 可选,缺失时回退读取源码 `res/`)
28
- - 步骤 2.2 增量 UI 迁移(必需)
29
- - 步骤 4 逻辑代码转换流水线(必需,构建/评审修复)
30
- - 步骤 5 自测回归(必需,真机调试)
31
- 2. **安装 Android Studio** — 下载地址:<https://developer.android.com/studio>,并在 **SDK Manager** 中安装 SDK。
27
+ - 资源转换skill(java可选,缺失时回退读取源码 `res/`)
28
+ - 步骤1.2UI对齐(必需)
29
+ - 步骤3逻辑代码转换流水线(必需,构建/评审修复)
30
+ - 集成测试skill(必需,真机调试)
31
+ 2. **安装Android Studio** — 下载地址:<https://developer.android.com/studio>,并在 **SDK Manager** 中安装SDK。
32
32
 
33
33
  验证方式:执行 `adb version` 返回正常
34
34
 
35
35
  被依赖:
36
- - 步骤 2.1 全量 UI 迁移(可选,仅自动抓取页面快照时需要)
37
- - 步骤 2.2 增量 UI 迁移(必需)
38
- 3. **安装 uv** — 安装指引:<https://docs.astral.sh/uv/getting-started/installation/>。
36
+ - 步骤1.1UI迁移(可选,仅自动抓取页面快照时需要)
37
+ - 步骤1.2UI对齐(必需)
38
+ 3. **安装uv** — 安装指引:<https://docs.astral.sh/uv/getting-started/installation/>。
39
39
 
40
40
  验证方式:执行 `uv --version` 返回正常
41
41
 
42
42
  被依赖:
43
- - 步骤 4 逻辑代码转换流水线的自测阶段(可经 `skip-test` 跳过)
44
- - 步骤 5 自测回归(必需,AutoTest uv 下运行)
45
- 4. **安装 python** — 安装指引:<https://www.python.org/downloads/>,要求 ≥ 3.10。
43
+ - 步骤3逻辑代码转换流水线的自测阶段(可经 `skip_test` 跳过)
44
+ - 集成测试skill(必需,AutoTest在uv下运行)
45
+ 4. **安装python** — 安装指引:<https://www.python.org/downloads/>,要求 ≥ 3.10。
46
46
 
47
47
  验证方式:执行 `python --version` 返回正常
48
48
 
49
49
  被依赖:
50
- - 步骤 2.1 全量 UI 迁移(必需,页面快照解析脚本)
51
- - 步骤 2.2 增量 UI 迁移(必需,双端页面采集脚本)
50
+ - 步骤1.1UI迁移(必需,页面快照解析脚本)
51
+ - 步骤1.2UI对齐(必需,双端页面采集脚本)
52
52
  5. **安装 [GitNexus](https://github.com/abhigyanpatwari/GitNexus)** — 执行 `npm install -g gitnexus && gitnexus setup`
53
53
 
54
54
  验证方式:执行 `gitnexus --version` 返回正常
55
55
 
56
56
  被依赖:
57
- - 步骤 3 生成需求规格(必需)
57
+ - 步骤2生成需求规格(必需)
58
58
  6. **连接设备** — 连接安卓和鸿蒙真机,或启动模拟器
59
59
 
60
60
  被依赖:
61
- - 安卓真机/模拟器 — 步骤 2 UI 迁移
62
- - 鸿蒙真机/模拟器 — 步骤 2.2 增量 UI 迁移
63
- - 鸿蒙**真机** — 步骤 4 流水线自测阶段、步骤 5 自测回归
61
+ - 安卓真机/模拟器 — 步骤1 UI迁移
62
+ - 鸿蒙真机/模拟器 — 步骤1.2UI对齐
63
+ - 鸿蒙**真机** — 步骤3流水线自测阶段、集成测试skill
64
64
 
65
- ### 0.2 安装 hometrans
65
+ ### 0.2安装hometrans
66
66
 
67
67
  执行 `npm install -g @buaa_smat/hometrans`。
68
68
 
69
69
  验证方式:执行 `hometrans --version` 或 `ht --version` 返回正常
70
70
 
71
- 然后执行 `hometrans init` 或 `ht init`,配置 `DEVECO_SDK_HOME`、`TEST_API_KEY`、`GLM_API_KEY`。
71
+ 然后执行 `hometrans init` 或 `ht init`。
72
72
 
73
73
 
74
- > 如果在 PowerShell 下运行,命令需要加上 `.cmd` 后缀,如 `hometrans.cmd --version`、`ht.cmd init`。
74
+ > 如果在PowerShell下运行,命令需要加上 `.cmd` 后缀,如 `hometrans.cmd --version`、`ht.cmd init`。
75
75
 
76
- 选择本地 editor:
76
+ ### 0.2.1选择本地editor:
77
+ ![choose_editor.png](resource/choose_editor.png)
77
78
 
78
- ![选择本地 editor](resource/choose_editor.png)
79
-
80
- 参数配置:
81
-
82
- ![参数配置](resource/hometrans_config.png)
83
-
84
- - `DEVECO_SDK_HOME` — DevEco Studio 的 sdk 目录(唯一输入),其余路径由它派生并校验存在,示例:
79
+ ### 0.2.2通用配置:
80
+ ![common_config.png](resource/common_config.png)
81
+ - `DEVECO_SDK_HOME` — DevEco Studio的sdk目录,其余路径由它派生并校验存在。示例:
85
82
 
86
83
  ```text
87
84
  + DEVECO_SDK_HOME : <DevEco安装目录>\sdk
88
- + DEVECO_PATH : <DevEco安装目录>
85
+ + DEVECO_HOME : <DevEco安装目录>
89
86
  + OHOS_SDK_PATH : <DevEco安装目录>\sdk\default\openharmony\ets
90
87
  + HMS_SDK_PATH : <DevEco安装目录>\sdk\default\hms\ets
91
88
  ```
92
-
93
- - `TEST_API_KEY` — 集成测试 agent 执行测试用例(真机自测)所用的 LLM API key。目前 AutoTest 仅支持**单层模式**(`agent_mode: single`),走阿里云百炼(DashScope)兼容接口下的通义模型 `qwen3.5-plus`(见用户目录下 `~/.hometrans/tools/test-tools/autotest/config.yaml` 的 `unified_model`;Windows 即 `C:\Users\<用户名>\.hometrans\tools\test-tools\autotest\config.yaml`)。该文件由 `ht init` 在首次运行时从同目录的 `config.yaml.example` 自动生成,并把此处填写的 `TEST_API_KEY` 写入其中的 `api_key`。在阿里云百炼平台 https://bailian.console.aliyun.com/ 申请 API Key 并开通对应模型,按量计费。如需更换模型,可直接编辑上述 `config.yaml` 中 `unified_model` 的 `name`/`base_url`/`provider`/`api_key`。
94
- - `GLM_API_KEY` — UI对齐中过程中GLM phone agent 所用的 LLM API key。`GLM_API_KEY`在智谱官方网站https://bigmodel.cn/apikey/platform申请API KEY即可,调用的是免费的auto-glm模型,无需充值。
95
-
96
- ### 0.3 准备项目
97
-
98
- 准备 **Android 源项目** 与 **HarmonyOS 目标项目目录**。
89
+ ### 0.2.3 UI对齐配置(如果不执行步骤1.2UI对齐,则可以不配置):
90
+ ![ui_align_config.png](resource/ui_align_config.png)
91
+ - `GLM_API_KEY` — UI对齐中过程中GLM phone agent所用的LLM API key
92
+
93
+ 申请方式:在[智谱官方网站](https://bigmodel.cn/apikey/platform)注册用户后,申请一个API KEY即可,调用的是免费的auto-glm模型,无需充值。
94
+
95
+ ### 0.2.4集成测试配置(如果不执行步骤3的自测阶段与集成测试skill,则可以不配置):
96
+ ![integration_test_config.png](resource/integration_test_config.png)
97
+ - `autotest api_key` — 集成测试agent执行测试用例(真机自测)所用的多模态大模型API key。各配置项含义如下,`init` 环节只配置前4项,其余参数在`config.json`中配置。
98
+
99
+ | 参数 | 示例 / 默认值 | 含义 |
100
+ |-------------------|--------------|------|
101
+ | `name` | `""` | 多模态(视觉)模型的名字 |
102
+ | `base_url` | `""` | 模型API服务的基础地址 |
103
+ | `api_key` | (需填写) | 用于模型API请求认证的令牌 |
104
+ | `provider` | `openai` | 模型API服务的提供方标识,如openai;Azure服务填azure |
105
+ | `temperature` | `0.1` | 采样温度 |
106
+ | `top_p` | `0.9` | 核采样阈值 |
107
+ | `frequency_penalty` | `0.5` | 重复惩罚 |
108
+ | `device_sn` | `null` | 设备序列号;`null` 表示自动选用当前连接的设备 |
109
+ | `ip` | `127.0.0.1` | 设备连接IP(hdc) |
110
+ | `port` | `8710` | 设备连接端口(hdc) |
111
+ | `device_log_level` | `debug` | 设备日志级别:debug/info/... |
112
+ | `max_steps` | `50` | 单条用例最大执行步数 |
113
+ | `verbose` | `true` | 是否输出详细日志 |
114
+ | `lang` | `zh` | 输出语言:zh/en |
115
+ | `enable_preprocess` | `false` | 执行前是否先用unified_model把用例拆成步骤序列(多一次LLM调用,默认关) |
116
+ | `debug_mode` | `null` | 调试会话:`null` 关闭 / `memory` 内存 / `file` 存盘并跑完后起调试服务(:5000) |
117
+
118
+ ### 0.2.5将配置信息添加到环境变量:
119
+ ![set_env.png](resource/set_env.png)
120
+
121
+ ### 0.3准备项目
122
+
123
+ 准备 **Android源项目** 与 **HarmonyOS目标项目目录**。
99
124
 
100
125
  ---
101
-
102
- ## 步骤 1:资源转换(`hmos-resources-convert`)
103
-
104
- > 📦 依赖:DevEco Studio 中的 java(可选,缺失时回退读取源码 `res/`)。
105
-
106
- > ⚠️ 提示:如果步骤 2 的 UI 迁移采用**全量迁移**(`hmos-batch-ui-align`),则跳过当前步骤(全量UI迁移内部已包含资源转换)。
107
-
108
- ```
109
- /hmos-resources-convert android-project-path=<安卓项目路径> harmonyos-project-path=<鸿蒙项目路径> resource_mapping_path=<资源映射文档路径>
110
- ```
111
-
112
- **输入参数**
113
-
114
- | 参数 | 类型 | 说明 |
115
- |------|------|------|
116
- | `android-project-path` | **必选** | Android 项目根目录路径(含 `build.gradle` 或 `build.gradle.kts`) |
117
- | `harmonyos-project-path` | **必选** | HarmonyOS 项目输出路径 |
118
- | `resource_mapping_path` | **必选** | Android ↔ HarmonyOS 资源映射文档的完整输出路径(`.md`) |
119
- | `apk-path` | 可选 | Android APK 文件路径;提供后跳过 Gradle 构建和 apktool 解包,直接从 APK 提取资源 |
120
-
121
- **输出产物**
122
-
123
- | 产物 | 位置 | 说明 |
124
- |------|------|------|
125
- | `resources/` 目录 | HarmonyOS 项目下 | 转换后的 HarmonyOS 资源(strings、colors、dimensions、images 等) |
126
- | 资源映射文档 | `resource_mapping_path` | Android ↔ HarmonyOS 资源条目映射(`.md`) |
127
- | 转换报告 | HarmonyOS 项目下 | 资源转换过程与统计 |
126
+ ## 迁移流程
127
+ ![migration_process.svg](resource/migration_process.svg)
128
128
 
129
129
  ---
130
130
 
131
- ## 步骤 2:UI 迁移
131
+ ## 步骤1:UI迁移
132
132
 
133
- ### 2.1 全量迁移(`hmos-batch-ui-align`)
133
+ ### 1.1UI迁移(`hmos-batch-ui-align`)
134
134
 
135
135
  > 📦 依赖:python(必需,页面快照解析脚本);Android Studio + 安卓真机/模拟器(可选,仅自动抓取页面快照时需要)。
136
136
 
@@ -142,97 +142,124 @@
142
142
 
143
143
  | 参数 | 类型 | 说明 |
144
144
  |------|------|-------------------------------------------------------------------------------------------------------------|
145
- | `android_project_dir` | **必选** | Android 项目根目录路径 |
146
- | `harmony_project_dir` | **必选** | HarmonyOS 项目输出路径 |
147
- | `ui_info_root` | 可选 | 包含 `page_NNNN_ActivityName` 格式子目录的父目录(每子目录含 `meta.json` + `view.xml` + 可选 `screenshot.png`);不提供时自动通过 adb 抓取 |
145
+ | `android_project_dir` | **必选** | Android项目根目录路径 |
146
+ | `harmony_project_dir` | **必选** | HarmonyOS项目输出路径 |
147
+ | `ui_info_root` | 可选 | 包含 `page_NNNN_ActivityName` 格式子目录的父目录(每子目录含 `meta.json` + `view.xml` + 可选 `screenshot.png`);不提供时自动通过adb抓取 |
148
148
  | `pages` | 可选 | 显式列出的页面子集(不提供则处理所有页面) |
149
149
 
150
150
  **输出产物**
151
151
 
152
152
  | 产物 | 位置 | 说明 |
153
153
  |------|------|------|
154
- | ArkTS 页面文件 | HarmonyOS 项目下 | 由 Android Activity 转换生成的 ArkTS 页面 |
155
- | 资源文件 | HarmonyOS 项目下 | 页面所需资源(含全量迁移内部触发的资源转换产物) |
156
- | 批量转换报告 | HarmonyOS 项目下 | 各页面转换结果、缺陷与统计 |
154
+ | ArkTS页面文件 | HarmonyOS项目下 | 由Android Activity转换生成的ArkTS页面 |
155
+ | 资源文件 | HarmonyOS项目下 | 页面所需资源(含UI迁移内部触发的资源转换产物) |
156
+ | 批量转换报告 | HarmonyOS项目下 | 各页面转换结果、缺陷与统计 |
157
157
 
158
- ### 2.2 增量迁移(`hmos-incremental-ui-align`,按需)
158
+ ### 1.2UI对齐(`hmos-incremental-ui-align`,按需)
159
159
 
160
160
  > 📦 依赖:DevEco Studio、Android Studio、python(必需,双端页面采集脚本);安卓真机/模拟器 + 鸿蒙真机/模拟器(必需)。
161
161
 
162
- > 👤 前置:需用户预先配置好 `config.json`(双端 app 包名/工程路径等,参考 skill 目录下 `config-example.json`;`ht init` 已预置并填充 `glm_api_key` / `hmos_sdk_dir`)。对齐目标在消息中描述,如 "帮我对齐设置页面的关于页面"。
163
-
164
162
  ```
165
- /hmos-incremental-ui-align config-path=<config.json路径>
163
+ /hmos-incremental-ui-align android_project_dir=<安卓工程路径> harmony_project_dir=<鸿蒙工程路径>
166
164
  ```
167
165
 
168
166
  **输入参数**
169
167
 
170
168
  | 参数 | 类型 | 说明 |
171
169
  |------|------|------|
172
- | `config-path` | 可选 | `config.json` 路径,含 `android.project_dir`、`harmony.project_dir`、`hmos_sdk_dir`、`glm_api_key`、`capture_output_dir` 等字段;|
170
+ | `android_project_dir` | 必填 | 安卓源码根目录;用于自动解析安卓app名/包名 |
171
+ | `harmony_project_dir` | 必填 | 鸿蒙工程根目录(会被直接修改);用于自动解析鸿蒙app名/包名 |
172
+ | `capture_output_dir` | 可选 | 采集产物输出目录,默认 `<harmony_project_dir>/.hometrans/capture_output` |
173
173
 
174
174
  **输出产物**
175
175
 
176
176
  | 产物 | 位置 | 说明 |
177
177
  |------|------|------|
178
- | 修改后的 ArkTS 页面文件 | HarmonyOS 项目下 | 对齐目标页面后的代码改动 |
179
- | 双端页面截图与视图树 | `capture_output_dir` | Android/HarmonyOS 两侧 `screenshot.png` + 视图树文件 |
178
+ | 修改后的ArkTS页面文件 | HarmonyOS项目下 | 对齐目标页面后的代码改动 |
179
+ | 双端页面截图与视图树 | `capture_output_dir` | Android/HarmonyOS两侧 `screenshot.png` + 视图树文件 |
180
180
  | 对齐差异/修复报告 | `capture_output_dir` | 差异分析与修复说明 |
181
181
 
182
182
  ---
183
183
 
184
- ## 步骤 3:生成需求规格(`hmos-spec-generate`)
184
+ ## 步骤2:生成需求规格(`hmos-spec-generate`)
185
185
 
186
186
  > 📦 依赖:GitNexus(必需)。
187
187
 
188
- > 👤 前置:用户编写 REQ `.txt` 文件 — 每段一个需求、空行分隔,作为本步骤规格生成的输入来源。
188
+ > 👤 前置:用户编写 `REQ.txt` 文件 — 以自然语言描述原始需求,如有多个需求则在文件中使用空行进行分隔,需求中建议包含页面跳转路径的说明以及业务逻辑的描述。
189
+
190
+ `REQ.txt` 示例:
191
+
192
+ ```text
193
+ 设置-歌词-歌词界面-卡拉OK歌词动画兼容策略(播放页歌词设置同步实现)
194
+ 逐字歌词效果,默认是当前行
195
+ 1,当前行:只为前歌曲的歌词中有单字时间戳的歌词行显示逐字特效
196
+ 2,扩展全部:当前歌曲的歌词中只要有一行歌词带单字时间戳,所有歌词行都显示逐字特效
197
+ 3,总是:当前歌曲所有歌词行都显示逐字特效
198
+
199
+ 设置-用户界面-圆形播放封面(圆形支持旋转)
200
+ 开关,默认关闭,打开后,在播放页以圆形展示封面,并且自动旋转
201
+
202
+ 设置-用户界面-允许不规则封面(支持长方形封面,参考无归)
203
+ 开关,默认打开,播放页封面以大小一致的正方形展示,打开后,在播放页封面以原始样式展示
204
+
205
+ 设置-歌词-悬浮窗状态栏歌词
206
+ 开关 ,默认关闭,打开前需要申请悬浮窗权限,打开后在悬浮窗滚动展示歌词
207
+ 1,左右位置:默认0%
208
+ 2,上下位置:默认0px
209
+ 3,宽度:默认150dp
210
+ 4,大小:默认14.0dp
211
+ 5,选择颜色:默认蓝色
212
+ 6,歌词文本居左对齐:开关 默认关闭,歌词在设置的宽度内中对齐
213
+ 7,状态栏歌词不显示翻译:开关 默认关闭
214
+ 8,在播放界面隐藏:开关 默认关闭 打开后如果切换到播放页,则不在悬浮窗区域显示歌词
215
+ ```
189
216
 
190
217
  ```
191
- /hmos-spec-generate requirement-description-file=<需求描述文件路径> android-project-path=<安卓项目路径> spec-output-dir=<规格输出目录>
218
+ /hmos-spec-generate requirement_description_file=<需求描述文件路径> android_project_dir=<安卓项目路径> spec_output_dir=<规格输出目录>
192
219
  ```
193
220
 
194
221
  **输入参数**
195
222
 
196
223
  | 参数 | 类型 | 说明 |
197
224
  |------|------|------|
198
- | `requirement-description-file` | **必选** | 需求描述 `.txt` 文件路径(每段以 `REQ` 开头,空行分隔) |
199
- | `android-project-path` | **必选** | Android 项目根目录路径(必须位于 Git 仓库内) |
200
- | `spec-output-dir` | **必选** | 规格文档输出目录(自动创建;每个 REQ 生成 `<feature>-SPEC.md` + `.trace/<feature>.md`) |
225
+ | `requirement_description_file` | **必选** | 需求描述 `.txt` 文件路径(每段以 `REQ` 开头,空行分隔) |
226
+ | `android_project_dir` | **必选** | Android项目根目录路径(必须位于Git仓库内) |
227
+ | `spec_output_dir` | **必选** | 规格文档输出目录(自动创建;每个REQ生成 `<feature>-SPEC.md` + `.trace/<feature>.md`) |
201
228
 
202
229
  **输出产物**
203
230
 
204
231
  | 产物 | 位置 | 说明 |
205
232
  |------|------|------|
206
- | `<feature>-SPEC.md` | `spec-output-dir` | 每个 REQ 对应一份原子场景规格文档 |
207
- | `.trace/<feature>.md` | `spec-output-dir/.trace/` | 每个 REQ 对应的代码 trace(GitNexus 探索结果) |
233
+ | `<feature>-SPEC.md` | `spec_output_dir` | 每个REQ对应一份原子场景规格文档 |
234
+ | `.trace/<feature>.md` | `spec_output_dir/.trace/` | 每个REQ对应的代码trace(GitNexus探索结果) |
208
235
 
209
236
  ---
210
237
 
211
- ## 步骤 4:逻辑代码转换流水线(`hmos-convert-pipeline`)
238
+ ## 步骤3:逻辑代码转换流水线(`hmos-convert-pipeline`)
212
239
 
213
- > 📦 依赖:DevEco Studio(必需,构建/评审修复);uv + 鸿蒙真机(自测阶段需要,可经 `skip-test` 跳过)。
240
+ > 📦 依赖:DevEco Studio(必需,构建/评审修复);uv + 鸿蒙真机(集成测试阶段需要,可经 `skip_test` 跳过)。
214
241
 
215
242
  > 👤 前置:
216
- > 1. **编写测试用例文档**(自测阶段的依据),路径经可选参数 `test-case-path` 传入(默认读输出目录下 `test_case.md`;前置用例同理 `pre-test-case-path`)。
217
- > 2. 连接 HarmonyOS 真机,在 DevEco Studio 中[**配置签名**](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/networkboost-preparations#%E9%85%8D%E7%BD%AE%E7%AD%BE%E5%90%8D)。
243
+ > 1. 如果执行集成测试,需要**编写测试用例文档**输出前置测试用例(非必须,用于测试用例的环境准备等)通过pre_test_case_path参数传递,测试用例通过test_case_path参数传递。
244
+ > 2. 如果执行集成测试,需要**连接HarmonyOS真机**并且在DevEco Studio中[**配置签名**](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/networkboost-preparations#%E9%85%8D%E7%BD%AE%E7%AD%BE%E5%90%8D)。
218
245
 
219
246
  ```
220
- /hmos-convert-pipeline android-project-path=<安卓项目路径> harmonyos-project-path=<鸿蒙项目路径> spec-file-path=<需求规格文档路径>
247
+ /hmos-convert-pipeline android_project_dir=<安卓项目路径> harmony_project_dir=<鸿蒙项目路径> spec_file_path=<需求规格文档路径>
221
248
  ```
222
249
 
223
250
  **输入参数**
224
251
 
225
252
  | 参数 | 类型 | 说明 |
226
253
  |------|------|------|
227
- | `android-project-path` | **必选** | Android 项目根目录路径 |
228
- | `harmonyos-project-path` | **必选** | HarmonyOS 项目根目录路径 |
229
- | `spec-file-path` | **必选** | 需求规格文档路径(各阶段直接读取,无需复制到输出目录) |
230
- | `assets-output-path` | 可选 | 输出/报告文件存放目录(默认鸿蒙工程下 `.hometrans_output`,自动创建) |
231
- | `test-case-path` | 可选 | 自测用例文件路径(默认读输出目录下 `test_case.md`;不存在则跳过自测循环) |
232
- | `pre-test-case-path` | 可选 | 前置用例文件路径(默认读输出目录下 `pre_test_case.md`;存在才传给自测) |
233
- | `max-rounds-review` | 可选 | 代码检视循环最大轮数(正整数 `>= 1`,默认 `2`) |
234
- | `max-rounds-test` | 可选 | 自测循环最大轮数(正整数 `>= 1`,默认 `2`) |
235
- | `skip-test` | 可选 | `true` 跳过集成测试阶段(无真机验证环境时设为 `true`,默认 `false`) |
254
+ | `android_project_dir` | **必选** | Android项目根目录路径 |
255
+ | `harmony_project_dir` | **必选** | HarmonyOS项目根目录路径 |
256
+ | `spec_file_path` | **必选** | 需求规格文档路径(各阶段直接读取,无需复制到输出目录) |
257
+ | `assets_output_path` | 可选 | 输出/报告文件存放目录(默认鸿蒙工程下 `.hometrans`,自动创建) |
258
+ | `test_case_path` | 可选 | 自测用例文件路径(默认读输出目录下 `test_case.md`;不存在则跳过自测循环) |
259
+ | `pre_test_case_path` | 可选 | 前置用例文件路径(默认读输出目录下 `pre_test_case.md`;存在才传给自测) |
260
+ | `max_rounds_review` | 可选 | 代码检视循环最大轮数(正整数 `>= 1`,默认 `2`) |
261
+ | `max_rounds_test` | 可选 | 自测循环最大轮数(正整数 `>= 1`,默认 `2`) |
262
+ | `skip_test` | 可选 | `true` 跳过集成测试阶段(无真机验证环境时设为 `true`,默认 `false`) |
236
263
 
237
264
  > 参数按位置传递:要传某个可选参数,需先显式给出它前面的所有可选参数。
238
265
 
@@ -240,57 +267,88 @@
240
267
 
241
268
  | 产物 | 位置 | 说明 |
242
269
  |------|------|------|
243
- | 已签名 HAP | HarmonyOS 项目下 `build/` | 通过自测/评审循环后的最终发布包 |
244
- | `pipeline-manifest.md` | `assets-output-path` | 流水线清单:阶段耗时、轮数、缺陷统计 |
245
- | 构建阶段报告 | `assets-output-path` | 编译错误与修复记录 |
246
- | 评审阶段报告 | `assets-output-path` | 代码检视报告与修复记录 |
247
- | 自测阶段报告 | `assets-output-path` | 测试结果、失败用例与修复记录 |
270
+ | 已签名HAP | HarmonyOS项目下 `build/` | 通过自测/评审循环后的最终发布包 |
271
+ | `pipeline-manifest.md` | `assets_output_path` | 流水线清单:阶段耗时、轮数、缺陷统计 |
272
+ | 构建阶段报告 | `assets_output_path` | 编译错误与修复记录 |
273
+ | 评审阶段报告 | `assets_output_path` | 代码检视报告与修复记录 |
274
+ | 自测阶段报告 | `assets_output_path` | 测试结果、失败用例与修复记录 |
275
+
276
+ ---
277
+
278
+ ## 步骤4:人工验收(👤 用户介入)
279
+
280
+ **输入**
281
+
282
+ | 输入 | 说明 |
283
+ |------|------|
284
+ | `pipeline-manifest.md` | 流水线清单与缺陷统计 |
285
+ | 自测报告 | 集成测试skill/步骤3自测阶段产出的测试报告 |
286
+ | 已签名HAP | 步骤3流水线产出的最终发布包 |
287
+
288
+ **输出**
289
+
290
+ | 产物 | 说明 |
291
+ |------|------|
292
+ | 可发布的HarmonyOS应用 | 已处理报告中的遗留缺陷/TODO,通过核心场景走查 |
293
+
294
+ 通读 `pipeline-manifest.md` 与自测报告,真机走查核心场景,处理报告中的遗留缺陷/TODO后发布。
248
295
 
249
296
  ---
250
297
 
251
- ## 步骤 5:自测回归(`hmos-integration-test`,可反复执行)
298
+ ## 独立skill能力
299
+
300
+ 以下能力包含在迁移流程中也可按需独立调用。
301
+
302
+ ### 资源转换(`hmos-resources-convert`)
252
303
 
253
- > 📦 依赖:DevEco Studio(必需,真机调试);uv(必需,AutoTest 在 uv 下运行);鸿蒙真机(必需)
304
+ > 📦 依赖:DevEco Studio中的java(可选,缺失时回退读取源码 `res/`)。
305
+
306
+ > ⚠️ 提示:如果步骤1采用 **UI迁移**(`hmos-batch-ui-align`),则跳过当前能力(UI迁移内部已包含资源转换)。
254
307
 
255
308
  ```
256
- /hmos-integration-test test-case-path=<测试用例路径> hap-path=<签名HAP路径>
309
+ /hmos-resources-convert android_project_dir=<安卓项目路径> harmony_project_dir=<鸿蒙项目路径> resource_mapping_path=<资源映射文档路径>
257
310
  ```
258
311
 
259
312
  **输入参数**
260
313
 
261
314
  | 参数 | 类型 | 说明 |
262
315
  |------|------|------|
263
- | `test-case-path` | **必选** | `test_case.md` 测试用例文件路径 |
264
- | `hap-path` | **必选** | 已签名的 HAP 文件路径 |
265
- | `output-path` | 可选 | 报告输出目录 |
266
- | `pre-test-case-path` | 可选 | 前置用例文件路径 |
267
- | `android-project-path` | 可选 | Android 项目路径(修复时参考) |
268
- | `max-rounds` | 可选 | 测试-修复循环最大轮数(默认 `3`) |
316
+ | `android_project_dir` | **必选** | Android项目根目录路径(含 `build.gradle` `build.gradle.kts`) |
317
+ | `harmony_project_dir` | **必选** | HarmonyOS项目输出路径 |
318
+ | `resource_mapping_path` | **必选** | Android ↔ HarmonyOS资源映射文档的完整输出路径(`.md`) |
319
+ | `apk_path` | 可选 | Android APK文件路径;提供后跳过Gradle构建和apktool解包,直接从APK提取资源 |
269
320
 
270
321
  **输出产物**
271
322
 
272
323
  | 产物 | 位置 | 说明 |
273
324
  |------|------|------|
274
- | 测试报告 | `output-path` | 测试结果、通过/失败用例统计 |
275
- | 失败用例详情 | `output-path` | 失败用例的复现步骤与日志 |
276
- | 修复建议 | `output-path` | 针对失败用例的修复方向(进入测试-修复循环时生效) |
325
+ | `resources/` 目录 | HarmonyOS项目下 | 转换后的HarmonyOS资源(strings、colors、dimensions、images等) |
326
+ | 资源映射文档 | `resource_mapping_path` | Android ↔ HarmonyOS资源条目映射(`.md`) |
327
+ | 转换报告 | HarmonyOS项目下 | 资源转换过程与统计 |
277
328
 
278
- ---
329
+ ### 集成测试(`hmos-integration-test`,已包含在步骤3的流水线,也可以单独运行)
279
330
 
280
- ## 步骤 6:人工验收(👤 用户介入)
331
+ > 📦 依赖:DevEco Studio(必需,真机调试);uv(必需,AutoTest在uv下运行);鸿蒙真机(必需)。
281
332
 
282
- **输入**
333
+ ```
334
+ /hmos-integration-test test_case_path=<测试用例路径> hap_path=<签名HAP路径>
335
+ ```
283
336
 
284
- | 输入 | 说明 |
285
- |------|------|
286
- | `pipeline-manifest.md` | 流水线清单与缺陷统计 |
287
- | 自测报告 | 步骤 5/步骤 4 自测阶段产出的测试报告 |
288
- | 已签名 HAP | 步骤 4 流水线产出的最终发布包 |
337
+ **输入参数**
289
338
 
290
- **输出**
339
+ | 参数 | 类型 | 说明 |
340
+ |------|------|------|
341
+ | `test_case_path` | **必选** | `test_case.md` 测试用例文件路径 |
342
+ | `hap_path` | **必选** | 已签名的HAP文件路径 |
343
+ | `output_path` | 可选 | 报告输出目录 |
344
+ | `pre_test_case_path` | 可选 | 前置用例文件路径 |
345
+ | `android_project_dir` | 可选 | Android项目路径(修复时参考) |
346
+ | `max_rounds` | 可选 | 测试-修复循环最大轮数(默认 `3`) |
291
347
 
292
- | 产物 | 说明 |
293
- |------|------|
294
- | 可发布的 HarmonyOS 应用 | 已处理报告中的遗留缺陷/TODO,通过核心场景走查 |
348
+ **输出产物**
295
349
 
296
- 通读 `pipeline-manifest.md` 与自测报告,真机走查核心场景,处理报告中的遗留缺陷/TODO 后发布。
350
+ | 产物 | 位置 | 说明 |
351
+ |------|------|------|
352
+ | 测试报告 | `output_path` | 测试结果、通过/失败用例统计 |
353
+ | 失败用例详情 | `output_path` | 失败用例的复现步骤与日志 |
354
+ | 修复建议 | `output_path` | 针对失败用例的修复方向(进入测试-修复循环时生效) |