@deveco-test/deveco-cli 1.2.0 → 1.3.0-Test.10

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 (36) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +1423 -766
  3. package/SKILL.md +214 -116
  4. package/THIRD-PARTY-LICENSES +4441 -3536
  5. package/dist/cli.js +208 -88
  6. package/dist/internal/doc-init-background.js +1 -0
  7. package/docs.zip +0 -0
  8. package/index.zip +0 -0
  9. package/package.json +23 -8
  10. package/scripts/postinstall.mjs +33 -0
  11. package/src/resources/aclPermission/aclPermissionsInfo.json +311 -0
  12. package/templates/application/AppScope/app.json5 +10 -10
  13. package/templates/application/AppScope/resources/base/element/string.json +8 -8
  14. package/templates/application/AppScope/resources/base/media/layered_image.json +6 -6
  15. package/templates/application/build-profile.json5 +41 -41
  16. package/templates/application/code-linter.json5 +31 -31
  17. package/templates/application/entry/build-profile.json5 +32 -32
  18. package/templates/application/entry/gitignore.txt +6 -0
  19. package/templates/application/entry/hvigorfile.ts +7 -7
  20. package/templates/application/entry/obfuscation-rules.txt +19 -19
  21. package/templates/application/entry/oh-package.json5 +10 -10
  22. package/templates/application/entry/src/main/ets/entryability/EntryAbility.ets +62 -62
  23. package/templates/application/entry/src/main/ets/entrybackupability/EntryBackupAbility.ets +30 -30
  24. package/templates/application/entry/src/main/ets/pages/Index.ets +37 -37
  25. package/templates/application/entry/src/main/module.json5 +49 -49
  26. package/templates/application/entry/src/main/resources/base/element/color.json +7 -7
  27. package/templates/application/entry/src/main/resources/base/element/float.json +8 -8
  28. package/templates/application/entry/src/main/resources/base/element/string.json +15 -15
  29. package/templates/application/entry/src/main/resources/base/media/layered_image.json +6 -6
  30. package/templates/application/entry/src/main/resources/base/profile/backup_config.json +2 -2
  31. package/templates/application/entry/src/main/resources/base/profile/main_pages.json +5 -5
  32. package/templates/application/entry/src/main/resources/dark/element/color.json +7 -7
  33. package/templates/application/gitignore.txt +12 -0
  34. package/templates/application/hvigor/hvigor-config.json5 +23 -23
  35. package/templates/application/hvigorfile.ts +7 -7
  36. package/templates/application/oh-package.json5 +10 -10
package/README.md CHANGED
@@ -1,766 +1,1423 @@
1
- <div align="center">
2
- <h1>DevEco CLI</h1>
3
- <p>一个面向 HarmonyOS 应用开发的统一命令行入口。</p>
4
- <p>
5
- <a href="https://www.npmjs.com/package/@deveco/deveco-cli"><img src="https://img.shields.io/npm/v/@deveco/deveco-cli.svg" alt="NPM Version" /></a>
6
- <a href="https://www.npmjs.com/package/@deveco/deveco-cli"><img src="https://img.shields.io/npm/dm/@deveco/deveco-cli.svg" alt="NPM Downloads" /></a>
7
- <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/Node.js-%3E%3D18-green.svg" alt="Node.js" /></a>
8
- <img src="https://img.shields.io/badge/platform-macOS%20%7C%20Windows-blue.svg" alt="Platform" />
9
- <a href="https://developer.huawei.com/consumer/cn/download/"><img src="https://img.shields.io/badge/DevEco%20Studio-%3E%3D6.1.0-orange.svg" alt="DevEco Studio" /></a>
10
- <a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License" /></a>
11
- </p>
12
- </div>
13
-
14
- `DevEco CLI` 将 `DevEco Studio` 工具链统一封装为一个 `CLI`,内置 `ohpm`、`hvigor`、`hdc`、`emulator`、`hilog`,同时集成 HarmonyOS 技能安装、项目脚手架、本地 HarmonyOS 文档检索和 `MCP` 服务。
15
-
16
-
17
- ## 快速开始
18
-
19
- ### 前置要求
20
-
21
- - 操作系统为 `macOS` 或 `Windows`
22
- - Node.js >= 18,推荐使用22及以上版本
23
- - [DevEco Studio](https://developer.huawei.com/consumer/cn/download/) >= 6.1.0
24
- - **macOS**:必须安装在 `~/Applications` 或 `/Applications` 目录下。
25
-
26
- ### 安装
27
-
28
- ```bash
29
- npm install -g @deveco/deveco-cli@latest
30
- ```
31
-
32
- 安装后可以通过以下命令更新到最新版本:
33
-
34
- ```bash
35
- devecocli update
36
- ```
37
-
38
- ### 最短工作流
39
-
40
- ```bash
41
- devecocli create --app-name MyApp
42
- cd MyApp
43
- devecocli run
44
- devecocli log --level E
45
- ```
46
-
47
- ### 文档检索
48
-
49
- ```bash
50
- devecocli docs search List
51
- devecocli docs read harmonyos-guides/application-models/arkts-page-start-overview
52
- ```
53
-
54
- 更多命令和参数可通过 `devecocli --help` 或各子命令的 `--help` 查看。
55
-
56
- ## AI Agent 集成
57
-
58
- `DevEco CLI` 支持通过命令行将自身技能添加到 `Agent` 中。下面以 `opencode` 为例展示最短流程:
59
-
60
- ```bash
61
- # 1. 给 opencode 安装 deveco-cli 技能
62
- devecocli init --agent opencode
63
-
64
- # 2. 给 opencode 在当前 HarmonyOS 项目配置 MCP
65
- devecocli init --mcp --agent opencode --project ./MyApp
66
-
67
- # 3. 进入项目并启动 opencode
68
- cd MyApp
69
- opencode
70
- ```
71
-
72
- 如果 `Agent` 不在 `--agent` 参数取值范围内,可使用 `--path` 参数进行添加,参考如下命令:
73
-
74
- ```bash
75
- devecocli init --path D:\work\ARKTS\NewData
76
- ```
77
-
78
- 进入 `Agent` 后可以直接描述任务,例如:
79
-
80
- - `Build this project in release mode and run it on my emulator`
81
- - `Tail the last error logs from this app`
82
- - `Check for syntax errors in src/main/ets/pages/Index.ets`
83
-
84
- ## 常用命令
85
-
86
- | 命令 | 用途 |
87
- | ------------------------- | ----------------------------------------- |
88
- | `devecocli create` | 创建新的 HarmonyOS 项目 |
89
- | `devecocli build` | 构建项目并产出 `.hap` / `.hsp` / `.har` / `.app` |
90
- | `devecocli run` | 安装并运行应用 |
91
- | `devecocli device list` | 查看当前连接设备 |
92
- | `devecocli emulator list` | 查看本地模拟器实例 |
93
- | `devecocli log` | 查看 `hilog` 或崩溃日志 |
94
- | `devecocli docs search` | 搜索本地 HarmonyOS 文档 |
95
- | `devecocli init` | 安装内置技能或配置 `MCP` |
96
- | `devecocli skills` | 管理 HarmonyOS 技能市场中的技能 |
97
-
98
- ## 命令集
99
-
100
- ### `help`
101
-
102
- 查看版本、帮助信息以及所有子命令
103
-
104
- **命令格式:**
105
-
106
- ```bash
107
- devecocli help
108
- ```
109
-
110
- ```text
111
- # 返回结果
112
- Usage: devecocli [options] [command]
113
-
114
- HarmonyOS application development command line tool
115
-
116
- Options:
117
- -V, --version output the version number
118
- -h, --help display help for command
119
-
120
- Commands:
121
- build [options] Build the HarmonyOS project
122
- run [options] Build and run the project on a connected device
123
- update Update deveco-cli to the latest version
124
- device Manage connected devices
125
- emulator Manage emulator instances
126
- skills Manage HarmonyOS skills
127
- log [options] Obtain device application logs
128
- create [options] Scaffold a new HarmonyOS application project
129
- init [options] Install the deveco-cli skill or configure the deveco-mcp server into AI agents
130
- serve Host bundled auxiliary protocol servers
131
- docs [options] Search and read HarmonyOS documentation from local docs directory
132
- help [command] display help for command
133
- ```
134
-
135
- ### `init`
136
-
137
- 将`deveco-cli` `Skill` 或者 `MCP` 服务配置到智能体中
138
-
139
- **命令格式:**
140
-
141
- ```bash
142
- devecocli init --agent <agents> --project <path> --path <path> --skill --mcp --force
143
- ```
144
-
145
- **参数:**
146
-
147
- | 参数名 | 说明 |
148
- | ----------- | ----------------------------------------------------------------------------------------- |
149
- | --agent | 可选,智能体名称,多个智能体名称以英文逗号分隔。缺省时配置到所有已检测到的智能体中 |
150
- | --project | 可选,指定工程路径,将`deveco-cli` `Skill` 或 `MCP` 服务安装到该工程项目中 |
151
- | --path | 可选,指定 `deveco-cli` `Skill` 的配置路径。不可与 `--project` 、`--agent` 、 `--mcp` 同时使用 |
152
- | --skill | 可选,安装 `deveco-cli` `Skill`。不可与 `--mcp` 同时使用。`--mcp` 与 `--skill` 都缺省时,执行 `--skill` |
153
- | --mcp | 可选,配置 `MCP` 服务,与 `--project` 一起使用表示配置工程级 `MCP` 服务,独立使用表示配置用户级 `MCP` 服务。不可与 `--skill` 同时使用 |
154
- | -f, --force | 可选,当目标位置已存在 `deveco-cli` `Skill` 或 `MCP` 服务时,覆盖重装 |
155
-
156
- **示例:**
157
-
158
- ```bash
159
- # 配置Skill
160
- devecocli init -f # 安装或更新deveco-cli Skill
161
- devecocli init --skill
162
- devecocli init --agent agentname # agentname需替换为实际的智能体名称
163
- devecocli init --path D:\work\ARKTS\NewData -f
164
-
165
- # 配置MCP
166
- devecocli init --mcp
167
- devecocli init --mcp --agent agentname # agentname需替换为实际的智能体名称
168
- devecocli init --mcp --project D:\work\ARKTS\NewData -f
169
- ```
170
-
171
- ### `docs search`
172
-
173
- 将关键词搜索版本说明、指南、API参考、最佳实践、`FAQ` 、变更预告等中的内容
174
-
175
- **命令格式:**
176
-
177
- ```bash
178
- devecocli docs search <keywords...> --catalog <name> --format <fmt> --limit <n>
179
- ```
180
-
181
- **参数:**
182
-
183
- | 参数名 | 说明 |
184
- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
185
- | keywords... | 必选,搜索关键词,多个关键词用空格隔开 |
186
- | --catalog | 可选,文档类别,取值包含`harmonyos-releases`(版本说明)、 `harmonyos-guides`(指南)、`harmonyos-references`(API参考)、`best-practices`(最佳实践)、`harmonyos-faqs`(FAQ)、`harmonyos-roadmap`(变更预告)、`all`(所有分类,默认) |
187
- | --format | 可选,控制输出格式,取值包括 `default` 、`json` ,默认为`default` ,输出结果包括文档ID、标题、文档的概括内容 |
188
- | --limit | 可选,设置搜索结果返回条数,默认为20 |
189
-
190
- **示例:**
191
-
192
- ```bash
193
- devecocli docs search 沉浸光感
194
- devecocli docs search '@State' '@Prop' --catalog best-practices --limit 10
195
- devecocli docs search Row Column --format json
196
- ```
197
-
198
- ### `docs read`
199
-
200
- 按文档ID查询文档的完整内容
201
-
202
- **命令格式:**
203
-
204
- ```bash
205
- devecocli docs read <documentId>
206
- ```
207
-
208
- **参数:**
209
-
210
- | 参数名 | 说明 |
211
- | ---------- | ------- |
212
- | documentId | 必选,文档ID |
213
-
214
- **示例:**
215
-
216
- ```bash
217
- devecocli docs read 开发指南/应用框架/UI_Design_Kit_UI设计套件/沉浸光感/ui-design-hds-component-material
218
- ```
219
-
220
- ### `docs catalog`
221
-
222
- 查询文档分类和分类名称
223
-
224
- **命令格式:**
225
-
226
- ```bash
227
- devecocli docs catalog --format <fmt>
228
- ```
229
-
230
- **参数:**
231
-
232
- | 参数名 | 说明 |
233
- | -------- | ----------------------------------------- |
234
- | --format | 可选,输出格式,`default` 或 `json` ,默认为 `default` |
235
-
236
- **示例:**
237
-
238
- ```bash
239
- devecocli docs catalog
240
- devecocli docs catalog --format json
241
- ```
242
-
243
- ### `create`
244
-
245
- 创建 HarmonyOS 应用工程,仅支持创建工程模板中的 `Empty Ability` 模板
246
-
247
- **命令格式:**
248
-
249
- ```bash
250
- devecocli create --app-name <name> --project-path <path> --bundle-name <bundle> --api-level <level>
251
- ```
252
-
253
- **参数:**
254
-
255
- | 参数名 | 说明 |
256
- | -------------- | ----------------------------------------------------------------- |
257
- | --app-name | 必选,应用名称 |
258
- | --project-path | 可选,工程路径,默认为:`./<appname>` |
259
- | --bundle-name | 可选,包名,默认为:`com.example.<appname>` ,`appname` 自动转为小写 |
260
- | --api-level | 可选,API级别,最小值为17,最大值从安装的 `Deveco Studio` 的 `HarmonyOS` `SDK` 中自动获取 |
261
-
262
- **示例:**
263
-
264
- ```bash
265
- devecocli create --project-path ./MyApp --app-name MyApp
266
- devecocli create --project-path ./MyApp --app-name MyApp --bundle-name com.acme.myapp --api-level 23
267
- devecocli create --app-name MyApp
268
- ```
269
-
270
- ### `build`
271
-
272
- 编译并打包 HarmonyOS 工程或工程中的模块
273
-
274
- **命令格式:**
275
-
276
- ```bash
277
- devecocli build --product <product> --modules <modules> --build-mode <mode>
278
- ```
279
-
280
- **参数:**
281
-
282
- | 参数名 | 说明 |
283
- | ------------ | ------------------------------------------------------------------------------------------------------- |
284
- | --product | 可选,产品的名称,默认为 `default` |
285
- | --modules | 可选,模块的名称。如需指定模块的 `target` 信息,使用 `module@target` 形式。当工程中只有一个模块时,可缺省;当工程中存在多个模块,且仅存在一个 `entry` 类型的模块时,可缺省 |
286
- | --build-mode | 可选,构建模式,默认为 `debug` |
287
-
288
- **示例:**
289
-
290
- ```bash
291
- devecocli build --build-mode release
292
- devecocli build --modules entry library
293
- devecocli build --modules library@phone
294
- devecocli build --product oversea --modules entry --build-mode release
295
- ```
296
-
297
- **说明:**
298
-
299
- - 选定模块的依赖会被自动解析和构建
300
- - 执行`devecocli build --product <name>`命令后,产物为 `.app`
301
- - 执行`devecocli build --product <name> --modules <m1>`命令后,产物为 `.hap` / `.hsp` / `.har`
302
-
303
- ### `build clean`
304
-
305
- 清理 HarmonyOS 项目的构建产物
306
-
307
- **命令格式:**
308
-
309
- ```bash
310
- devecocli build clean
311
- ```
312
-
313
- ### `emulator list`
314
-
315
- 查看模拟器实例
316
-
317
- **命令格式:**
318
-
319
- ```bash
320
- devecocli emulator list
321
- ```
322
-
323
- ### `emulator start`
324
-
325
- 启动模拟器。首次使用时,需要签署 HarmonyOS 软件许可与服务协议,具体请参考 `emulator license accept`
326
-
327
- **命令格式:**
328
-
329
- ```bash
330
- devecocli emulator start [names...]
331
- ```
332
-
333
- **参数:**
334
-
335
- | 参数名 | 说明 |
336
- | ----------- | ----------------------------------------- |
337
- | \[names...] | 必选,模拟器实例名称,多个名称用空格隔开。若名称中带有空格,则名称需要添加英文引号 |
338
-
339
- **示例:**
340
-
341
- ```bash
342
- devecocli emulator start Phone
343
- devecocli emulator start Phone1 Phone2
344
- ```
345
-
346
- **说明:**
347
-
348
- - `emulator start` 命令仅支持启动 `release` 版本的模拟器
349
-
350
- ### `emulator stop`
351
-
352
- 关闭模拟器
353
-
354
- **命令格式:**
355
-
356
- ```bash
357
- devecocli emulator stop [names...]
358
- ```
359
-
360
- **参数:**
361
-
362
- | 参数名 | 说明 |
363
- | ----------- | ----------------------------------------- |
364
- | \[names...] | 必选,模拟器实例名称,多个名称用空格隔开。若名称中带有空格,则名称需要添加英文引号 |
365
-
366
- **示例:**
367
-
368
- ```bash
369
- devecocli emulator stop Phone
370
- devecocli emulator stop 127.0.0.1:5555
371
- ```
372
-
373
- ### `emulator create`
374
-
375
- 创建模拟器
376
-
377
- **命令格式:**
378
-
379
- ```bash
380
- devecocli emulator create <name> --device-type <type> --os-version <version> --force
381
- ```
382
-
383
- **参数:**
384
-
385
- | 参数名 | 说明 |
386
- | ------------- | ------------------------------------------------------------------------------------------------------------------------------- |
387
- | name | 必选,模拟器名称 |
388
- | --device-type | 必选,模拟器设备类型,支持 `phone` , `foldable` , `widefold` , `triplefold` , `tablet` , `2in1` , `2in1 foldable` , `tv` , `wearable` ,全小写 |
389
- | --os-version | 必选,模拟器镜像版本 |
390
- | --force | 可选,覆盖已有同名的模拟器 |
391
-
392
- **示例:**
393
-
394
- ```bash
395
- devecocli emulator create MyPhone --device-type phone --os-version "HarmonyOS 6.0.1(21)"
396
- ```
397
-
398
- ### `emulator delete`
399
-
400
- 创建模拟器
401
-
402
- **命令格式:**
403
-
404
- ```bash
405
- devecocli emulator delete <name>
406
- ```
407
-
408
- **参数:**
409
-
410
- | 参数名 | 说明 |
411
- | ---- | -------------- |
412
- | name | 必选,模拟器实例名称或序列号 |
413
-
414
- **示例:**
415
-
416
- ```bash
417
- devecocli emulator delete MyPhone
418
- ```
419
-
420
- ### `emulator image list`
421
-
422
- 查询模拟器镜像列表
423
-
424
- **命令格式:**
425
-
426
- ```bash
427
- devecocli emulator image list --device-type <type> --all --format <format>
428
- ```
429
-
430
- **参数:**
431
-
432
- | 参数名 | 说明 |
433
- | ------------- | -------------------------------------------------------------------------------------------------------------------------- |
434
- | --device-type | 可选,模拟器设备类型,支持 `phone` , `foldable` , `widefold` , `triplefold` , `tablet` , `2in1` , `2in1 foldable` , `tv` , `wearable` |
435
- | --all | 可选,查询已下载和未下载的所有镜像 |
436
- | --format | 可选,控制输出格式,取值为 `table` 或 `json` ,默认为 `table` |
437
-
438
- **示例:**
439
-
440
- ```bash
441
- devecocli emulator image list
442
- devecocli emulator image list --all
443
- devecocli emulator image list --device-type phone
444
- devecocli emulator image list --format json
445
- ```
446
-
447
- ### `emulator image download`
448
-
449
- 下载模拟器镜像。首次使用时,需要签署 HarmonyOS `SDK` 许可协议,具体请参考 `emulator license accept`
450
-
451
- **命令格式:**
452
-
453
- ```bash
454
- devecocli emulator image download --device-type <type> --os-version <version> --force
455
- ```
456
-
457
- **参数:**
458
-
459
- | 参数名 | 说明 |
460
- | ------------- | ------------------------------------------------------------------------------------------------------------------------------- |
461
- | --device-type | 必选,模拟器设备类型,支持 `phone` , `foldable` , `widefold` , `triplefold` , `tablet` , `2in1` , `2in1 foldable` , `tv` , `wearable` ,全小写 |
462
- | --os-version | 必选,模拟器镜像版本 |
463
- | --force | 可选,覆盖已有的模拟器镜像 |
464
-
465
- **示例:**
466
-
467
- ```bash
468
- devecocli emulator image download --device-type phone --os-version "HarmonyOS 6.0.1(21)" --force
469
- ```
470
-
471
- **说明:**
472
-
473
- - `emulator image download` 命令仅支持下载 `release` 版本的模拟器镜像
474
-
475
- ### `emulator image remove`
476
-
477
- 删除模拟器镜像
478
-
479
- **命令格式:**
480
-
481
- ```bash
482
- devecocli emulator image remove --device-type <type> --os-version <version>
483
- ```
484
-
485
- **参数:**
486
-
487
- | 参数名 | 说明 |
488
- | ------------- | ------------------------------ |
489
- | --device-type | 必选,模拟器设备类型,与下载镜像的device-type一致 |
490
- | --os-version | 必选,模拟器镜像版本,与下载镜像的os-version一致 |
491
-
492
- **示例:**
493
-
494
- ```bash
495
- devecocli emulator image remove --device-type phone --os-version "HarmonyOS 6.0.1(21)"
496
- ```
497
-
498
- ### `emulator license view`
499
-
500
- 查看协议文本(只读)
501
-
502
- **命令格式:**
503
-
504
- ```bash
505
- devecocli emulator license view
506
- ```
507
-
508
- ### `emulator license accept`
509
-
510
- 查看并接受协议。使用模拟器需要同意 HarmonyOS 软件许可与服务协议,下载镜像需要同意 HarmonyOS `SDK` 许可协议
511
-
512
- **命令格式:**
513
-
514
- ```bash
515
- devecocli emulator license accept
516
- ```
517
-
518
- ### `device list`
519
-
520
- 查询所有已连接的设备,包括真机设备和运行中的模拟器
521
-
522
- **命令格式:**
523
-
524
- ```bash
525
- devecocli device list
526
- ```
527
-
528
- ### `device view`
529
-
530
- 查询已连接的设备的详细信息,包括设备序列号、设备名称、设备类型、 `OS` 版本等
531
-
532
- **命令格式:**
533
-
534
- ```bash
535
- devecocli device view --target <serialOrName>
536
- ```
537
-
538
- **参数:**
539
-
540
- | 参数名 | 说明 |
541
- | ----------- | ------------------------------------- |
542
- | -t,--target | 可选,目标设备名称或序列号。多设备缺省时,会列出所有已连接设备序列号和名称 |
543
-
544
- **示例:**
545
-
546
- ```bash
547
- devecocli device view
548
- devecocli device view --target 127.0.0.1:5555
549
- devecocli device view -t "My Device Name"
550
- ```
551
-
552
- ### `run`
553
-
554
- 构建应用后,将应用安装到真机设备或模拟器上,并启动执行
555
-
556
- **命令格式:**
557
-
558
- ```bash
559
- devecocli run --module <module> --device <device> --product <product> --build-mode <mode> --ability <ability> --uninstall --skip-build
560
- ```
561
-
562
- **参数:**
563
-
564
- | 参数名 | 说明 |
565
- | ------------ | ------------------------------------------------------------------------------------------------------ |
566
- | --module | 可选,模块名称。如需指定模块的 `target` 信息,使用 `module@target` 形式。当工程中只有一个可运行模块( `entry` / `feature` / `shared` )时,可缺省 |
567
- | --device | 设备名称或设备序列号,单设备时可选,多设备时必选 |
568
- | --product | 可选,产品的名称,默认为 `default` |
569
- | --build-mode | 可选,构建模式名称,默认为 `debug` |
570
- | --ability | 可选,待启动的 `Ability` ,默认:模块 `module.json5` 中的`mainElement` |
571
- | --uninstall | 可选,安装前先卸载已有应用 |
572
- | --skip-build | 可选,跳过构建操作,直接安装应用 。\*\*说明:\*\*使用该参数时,需确保对应模块已有构建产物 |
573
-
574
- **示例:**
575
-
576
- ```bash
577
- devecocli run
578
- devecocli run --module entry --device 127.0.0.1:5555
579
- devecocli run --module library@phone --device 127.0.0.1:5555
580
- devecocli run --product oversea --module entry --ability EntryAbility
581
- devecocli run --build-mode release
582
- devecocli run --uninstall
583
- ```
584
-
585
- ### `log`
586
-
587
- 查看`hilog`普通日志或崩溃日志
588
-
589
- **命令格式:**
590
-
591
- ```bash
592
- devecocli log --device <device> --crash --level <level> --bundle-name <bundle-name> --keyword <keyword> --tail <num> --from <start> --to <end> --follow
593
- ```
594
-
595
- **参数:**
596
-
597
- | 参数名 | 说明 |
598
- | ------------- | -------------------------------------------------------------------------------------------------------------------------- |
599
- | --device | 设备名称或设备序列号,单设备时可选,多设备时必选 |
600
- | --crash | 可选,查看崩溃日志 |
601
- | --level | 可选,日志级别,取值包括`D`( `Debug` )、`I`( `Info` )、`W`( `Warn` )、`E`( `Error` )、`F`( `Fatal` ) |
602
- | --bundle-name | 可选,根据包名查看日志 |
603
- | --keyword | 可选,根据关键词查看日志,关键词区分大小写 |
604
- | --tail | 可选,显示最新的N行日志,取值为正整数 |
605
- | --from | 可选,起始时间,单位为`m`和`s`,`m`和`s`为小写,默认为`s`,`start`的取值需要大于等于`end` |
606
- | --to | 可选,结束时间,单位为`m`和`s`,`m`和`s`为小写,默认为`s` 。不可与--follow同时使用。**说明:** 如当前时间为05:00,`start`设置为30s,`end`设置为10s,则起始时间为04:30,结束时间为04:50 |
607
- | --follow | 可选,实时输出日志。不可与--to同时使用 |
608
-
609
- **示例:**
610
-
611
- ```bash
612
- devecocli log --level E
613
- devecocli log --crash --bundle-name com.example.app
614
- devecocli log --device 127.0.0.1:5555 --level W --keyword Init
615
- devecocli log --tail 100 --from 5m --to 2m
616
- devecocli log --follow --bundle-name com.example.app
617
- ```
618
-
619
- ### `skills list`
620
-
621
- 查询可用的 `Skill`
622
-
623
- **命令格式:**
624
-
625
- ```bash
626
- devecocli skills list --long
627
- ```
628
-
629
- **参数:**
630
-
631
- | 参数名 | 说明 |
632
- | --------- | ----------------------------------------------- |
633
- | -l,--long | 可选,`Skill` 详情,包括描述和已安装的智能体列表。缺省时,仅显示 `Skill` 名称 |
634
-
635
- **示例:**
636
-
637
- ```bash
638
- devecocli skills list
639
- devecocli skills list --long
640
- devecocli skills list -l
641
- ```
642
-
643
- ### `skills find`
644
-
645
- 按关键词搜索 `Skill`
646
-
647
- **命令格式:**
648
-
649
- ```bash
650
- devecocli skills find <keyword>
651
- ```
652
-
653
- **参数:**
654
-
655
- | 参数名 | 说明 |
656
- | ------- | -------- |
657
- | keyword | 必选,搜索关键词 |
658
-
659
- **示例:**
660
-
661
- ```bash
662
- devecocli skills find deveco
663
- ```
664
-
665
- ### `skills add`
666
-
667
- 将 `Skill` 添加到智能体中
668
-
669
- **命令格式:**
670
-
671
- ```bash
672
- devecocli skills add --all --agent <agents> --skill <skill-name> --project <path> --path <path> --force
673
- ```
674
-
675
- **参数:**
676
-
677
- | 参数名 | 说明 |
678
- | ---------- | --------------------------------------------------------- |
679
- | --all | 可选,添加所有可用的 `Skill` ,与 `--skill` 二选一 |
680
- | --agent | 可选,智能体名称,多个智能体时以英文逗号分隔。缺省时,添加到已检测到的智能体中 |
681
- | --skill | 可选,待添加的 `Skill` 名称,与 `--all` 二选一 |
682
- | --project | 可选,指定项目路径,将 `Skill` 添加到该工程项目中 |
683
- | --path | 可选,指定路径,将 `Skill` 添加到该路径,不可与 `--project` 或 `--agent` 同时使用 |
684
- | -f,--force | 可选,当目标位置已有同名 `Skill` 时,覆盖重添加 |
685
-
686
- **示例:**
687
-
688
- ```bash
689
- devecocli skills add --all
690
- devecocli skills add --skill skillname --agent agentname --force # skillname需替换成实际的Skill名称
691
- devecocli skills add --skill skillname --project ./my-app # skillname需替换成实际的Skill名称
692
- ```
693
-
694
- ### `skills remove`
695
-
696
- 从智能体中删除已添加的 `Skill`
697
-
698
- **命令格式:**
699
-
700
- ```bash
701
- devecocli skills remove --skill <skill-name> --agent <agents> --project <path> --path <path>
702
- ```
703
-
704
- **参数:**
705
-
706
- | 参数名 | 说明 |
707
- | --------- | -------------------------------------------------------- |
708
- | --skill | 必选,待删除的 `Skill` 名称 |
709
- | --agent | 可选,智能体名称,多个智能体时以英文逗号分隔。缺省时,删除到已检测到的智能体中的 `Skill` |
710
- | --project | 可选,指定项目路径,删除该项目中的 `Skill` |
711
- | --path | 可选,指定路径,删除该项目中的 `Skill`,不可与 `--project` 或 `--agent` 同时使用 |
712
-
713
- **示例:**
714
-
715
- ```bash
716
- devecocli skills remove --skill skillname # skillname需替换成实际的Skill名称
717
- devecocli skills remove --skill skillname --agent agentname # skillname需替换成实际的Skill名称
718
- ```
719
-
720
- ### `serve mcp`
721
-
722
- 启动本地 `MCP` 服务。智能体配置 `MCP` 服务后,可通过 `MCP` 协议调用 `ArkTS` / `C++` 语法检查工具。不同智能体平台配置 `MCP` 服务的界面不一样,一个智能体平台的配置示例如下。
723
- 推荐通过 `devecocli init --mcp` 自动配置
724
-
725
- ```bash
726
- {
727
- "mcp": {
728
- "deveco-mcp": {
729
- "type": "local",
730
- "command": [
731
- "devecocli",
732
- "serve",
733
- "mcp"
734
- ],
735
- "environment":{
736
- "PROJECT_PATH": "D:\\code\\sample_project", // 工程路径
737
- "NODE_MAX_OLD_SPACE_SIZE": "8192", // 可选,设置内部node进程最大的老生代内存大小,默认为8192
738
- "DEVECO_PATH": "D:\\Application\\DevEco Studio" // 可选,Deveco Studio的路径
739
- },
740
- "enbale": true
741
- }
742
- }
743
- }
744
- ```
745
-
746
- ## 常见问题
747
-
748
- [FAQ](https://gitcode.com/openharmony-sig/deveco-cli/wiki/FAQ.md)
749
-
750
- ## 开发
751
-
752
- ```bash
753
- npm install
754
- npm run dev
755
- npm start -- <command>
756
- npm run lint
757
- npm run format
758
- npm run build
759
- ```
760
-
761
- - 架构与目录说明见 [`AGENTS.md`](./AGENTS.md)
762
- - 如需参与维护,建议先阅读 `AGENTS.md` 中的约定与架构说明
763
-
764
- ## 许可证
765
-
766
- [MIT](./LICENSE)
1
+ <div align="center">
2
+ <h1>DevEco CLI</h1>
3
+ <p>一个面向 HarmonyOS 应用开发的统一命令行入口。</p>
4
+ <p>
5
+ <a href="https://www.npmjs.com/package/@deveco/deveco-cli"><img src="https://img.shields.io/npm/v/@deveco/deveco-cli.svg" alt="NPM Version" /></a>
6
+ <a href="https://www.npmjs.com/package/@deveco/deveco-cli"><img src="https://img.shields.io/npm/dm/@deveco/deveco-cli.svg" alt="NPM Downloads" /></a>
7
+ <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/Node.js-%3E%3D18-green.svg" alt="Node.js" /></a>
8
+ <img src="https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-blue.svg" alt="Platform" />
9
+ <a href="https://developer.huawei.com/consumer/cn/download/"><img src="https://img.shields.io/badge/DevEco%20Studio-%3E%3D6.1.0-orange.svg" alt="DevEco Studio" /></a>
10
+ <img src="https://img.shields.io/badge/Command%20Line%20Tools-%3E%3D26.0.0-orange.svg" alt="Command Line Tools" />
11
+ <a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License" /></a>
12
+ </p>
13
+ </div>
14
+
15
+ `DevEco CLI` 将 `DevEco Studio` 工具链统一封装为一个 `CLI`,内置 `ohpm`、`hvigor`、`hdc`、`emulator`、`hilog`,同时集成 HarmonyOS 技能安装、项目脚手架、本地 HarmonyOS 文档检索和 `MCP` 服务。
16
+
17
+
18
+ ## 快速开始
19
+
20
+ ### 前置要求
21
+
22
+ - 操作系统为 `macOS` 、 `Windows` 或 `Linux`(需配置对应环境变量)
23
+ - Node.js >= 18,推荐使用22及以上版本
24
+ - [DevEco Studio](https://developer.huawei.com/consumer/cn/download/) >= 6.1.0 或 [Command Line Tools](https://developer.huawei.com/consumer/cn/download/) >= 26.0.0
25
+ - **macOS**:必须安装在 `~/Applications` 或 `/Applications` 目录下。
26
+
27
+ ### 安装
28
+
29
+ ```bash
30
+ npm install -g @deveco/deveco-cli@latest
31
+ ```
32
+
33
+ 安装后可以通过以下命令更新到最新版本:
34
+
35
+ ```bash
36
+ devecocli update
37
+ ```
38
+
39
+ ### 最短工作流
40
+
41
+ ```bash
42
+ devecocli create --app-name MyApp
43
+ cd MyApp
44
+ devecocli run
45
+ devecocli log --level E
46
+ ```
47
+
48
+ ### 文档检索
49
+
50
+ ```bash
51
+ devecocli docs search List
52
+ devecocli docs read harmonyos-guides/application-models/arkts-page-start-overview
53
+ ```
54
+
55
+ 更多命令和参数可通过 `devecocli --help` 或各子命令的 `--help` 查看。
56
+
57
+ ## 环境变量
58
+
59
+ `devecocli` 当需要使用非默认安装路径、多版本并存时固定选型,Command Line Tools或在Linux下运行时,可通过以下环境变量显式指定工具链根:
60
+
61
+ | 名称 | 说明 |
62
+ | ------------------------ | ------------------------------------------------------ |
63
+ | `DEVECO_CLI_STUDIO_PATH` | 显式指定 DevEco Studio 安装根,优先级最高 |
64
+ | `DEVECO_CLI_CLT_PATH` | 显式指定 Command Line Tools 安装根 |
65
+
66
+ 完整优先级链:
67
+
68
+ ```text
69
+ DEVECO_CLI_STUDIO_PATH > DEVECO_CLI_CLT_PATH > Auto_Detect
70
+ ```
71
+
72
+ ### 平台与版本约束
73
+
74
+ | 平台 | DevEco Studio Auto_Detect | Command Line Tools | 最低版本 |
75
+ | ------- | --------------------------------------------- | ------------------ | ----------------------------- |
76
+ | Windows | 支持 | 可选 | Studio `6.1.0` / CLT `26.0.0` |
77
+ | macOS | 支持 | 可选 | 同上 |
78
+ | Linux | 不支持 | 必选 | CLT `26.0.0` |
79
+
80
+ ### 使用示例
81
+
82
+ ```bash
83
+ # 设置 DevEco Studio
84
+ export DEVECO_CLI_STUDIO_PATH="/Applications/DevEco-Studio.app" (可带或不带尾部 Contents)
85
+ devecocli device list
86
+
87
+ # 设置 CLT
88
+ export DEVECO_CLI_CLT_PATH=/opt/command-line-tools
89
+ devecocli device list
90
+ ```
91
+
92
+ ## AI Agent 集成
93
+
94
+ `DevEco CLI` 支持通过命令行将自身技能添加到 `Agent` 中。下面以 `opencode` 为例展示最短流程:
95
+
96
+ ```bash
97
+ # 1. 给 opencode 安装 deveco-cli 技能
98
+ devecocli init --agent opencode
99
+
100
+ # 2. 给 opencode 在当前 HarmonyOS 项目配置 MCP
101
+ devecocli init --mcp --agent opencode --project ./MyApp
102
+
103
+ # 3. 进入项目并启动 opencode
104
+ cd MyApp
105
+ opencode
106
+ ```
107
+
108
+ 如果 `Agent` 不在 `--agent` 参数取值范围内,可使用 `--path` 参数进行添加,参考如下命令:
109
+
110
+ ```bash
111
+ devecocli init --path D:\work\ARKTS\NewData
112
+ ```
113
+
114
+ 进入 `Agent` 后可以直接描述任务,例如:
115
+
116
+ - `Build this project in release mode and run it on my emulator`
117
+ - `Tail the last error logs from this app`
118
+ - `Check for syntax errors in src/main/ets/pages/Index.ets`
119
+
120
+ ## 常用命令
121
+
122
+ | 命令 | 用途 |
123
+ | ------------------------- | ----------------------------------------- |
124
+ | `devecocli create` | 创建新的 HarmonyOS 项目 |
125
+ | `devecocli build` | 构建项目并产出 `.hap` / `.hsp` / `.har` / `.app` |
126
+ | `devecocli check lint` | 检查代码规范并输出实践建议与报告 |
127
+ | `devecocli run` | 安装并运行应用 |
128
+ | `devecocli device list` | 查看当前连接设备 |
129
+ | `devecocli emulator list` | 查看本地模拟器实例 |
130
+ | `devecocli ui layout` | 导出设备屏幕上的 UI 节点树(布局、坐标、节点 ID) |
131
+ | `devecocli ui window list` | 查看设备窗口列表(为 `ui layout` / `ui click` 等提供窗口 ID) |
132
+ | `devecocli ui screenshot` | 对真机或模拟器执行 UI 截图 |
133
+ | `devecocli ui click` | 点击指定坐标或节点 ID |
134
+ | `devecocli ui swipe` | 自定义滑动(指定起点、终点和速度) |
135
+ | `devecocli ui text` | 输入文本到焦点或指定位置 |
136
+ | `devecocli log` | 查看 `hilog` 或崩溃日志 |
137
+ | `devecocli docs search` | 搜索本地 HarmonyOS 文档 |
138
+ | `devecocli init` | 安装内置技能或配置 `MCP` |
139
+ | `devecocli skills` | 管理 HarmonyOS 技能市场中的技能 |
140
+ | `devecocli signature generate` | 自动生成调试签名材料并配置到项目 |
141
+ | `devecocli check compat` | 扫描源代码在两个 `SDK` 版本之间的 `API` 变更 |
142
+
143
+ ## 命令集
144
+
145
+ ### `help`
146
+
147
+ 查看版本、帮助信息以及所有子命令
148
+
149
+ **命令格式:**
150
+
151
+ ```bash
152
+ devecocli help
153
+ ```
154
+
155
+ ```text
156
+ # 返回结果
157
+ Usage: devecocli [options] [command]
158
+
159
+ HarmonyOS application development command line tool
160
+
161
+ Options:
162
+ -V, --version output the version number
163
+ -h, --help display help for command
164
+
165
+ Commands:
166
+ build [options] Build the HarmonyOS project
167
+ run [options] Build and run the project on a connected device
168
+ update Update deveco-cli to the latest version
169
+ device Manage connected devices
170
+ emulator Manage emulator instances
171
+ auth Authentication commands (login, logout, status, team)
172
+ ui Inspect and interact with UI on a connected device
173
+ skills Manage HarmonyOS skills
174
+ log [options] Obtain device application logs
175
+ create [options] Scaffold a new HarmonyOS application project
176
+ init [options] Install the deveco-cli skill or configure the deveco-mcp server into AI agents
177
+ serve Host bundled auxiliary protocol servers
178
+ docs [options] Search and read HarmonyOS documentation from local docs directory
179
+ check Run DevEco project checks
180
+ signature Generate application signature
181
+ help [command] display help for command
182
+ ```
183
+
184
+ ### `init`
185
+
186
+ 将`deveco-cli` `Skill` 或者 `MCP` 服务配置到智能体中
187
+
188
+ **命令格式:**
189
+
190
+ ```bash
191
+ devecocli init --agent <agents> --project <path> --path <path> --skill --mcp --force
192
+ ```
193
+
194
+ **参数:**
195
+
196
+ | 参数名 | 说明 |
197
+ | ----------- | ----------------------------------------------------------------------------------------- |
198
+ | --agent | 可选,智能体名称,多个智能体名称以英文逗号分隔。缺省时配置到所有已检测到的智能体中 |
199
+ | --project | 可选,指定工程路径,将`deveco-cli` `Skill` 或 `MCP` 服务安装到该工程项目中 |
200
+ | --path | 可选,指定 `deveco-cli` `Skill` 的配置路径。不可与 `--project` 、`--agent` 、 `--mcp` 同时使用 |
201
+ | --skill | 可选,安装 `deveco-cli` `Skill`。不可与 `--mcp` 同时使用。`--mcp` 与 `--skill` 都缺省时,执行 `--skill` |
202
+ | --mcp | 可选,配置 `MCP` 服务,与 `--project` 一起使用表示配置工程级 `MCP` 服务,独立使用表示配置用户级 `MCP` 服务。不可与 `--skill` 同时使用 |
203
+ | -f, --force | 可选,当目标位置已存在 `deveco-cli` `Skill` 或 `MCP` 服务时,覆盖重装 |
204
+
205
+ **示例:**
206
+
207
+ ```bash
208
+ # 配置Skill
209
+ devecocli init -f # 安装或更新deveco-cli Skill
210
+ devecocli init --skill
211
+ devecocli init --agent agentname # agentname需替换为实际的智能体名称
212
+ devecocli init --path D:\work\ARKTS\NewData -f
213
+
214
+ # 配置MCP
215
+ devecocli init --mcp
216
+ devecocli init --mcp --agent agentname # agentname需替换为实际的智能体名称
217
+ devecocli init --mcp --project D:\work\ARKTS\NewData -f
218
+ ```
219
+
220
+ ### `docs search`
221
+
222
+ 将关键词搜索版本说明、指南、API参考、最佳实践、`FAQ` 、变更预告等中的内容
223
+
224
+ **命令格式:**
225
+
226
+ ```bash
227
+ devecocli docs search <keywords...> --catalog <name> --format <fmt> --limit <n>
228
+ ```
229
+
230
+ **参数:**
231
+
232
+ | 参数名 | 说明 |
233
+ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
234
+ | keywords... | 必选,搜索关键词,多个关键词用空格隔开 |
235
+ | --catalog | 可选,文档类别,取值包含`harmonyos-releases`(版本说明)、 `harmonyos-guides`(指南)、`harmonyos-references`(API参考)、`best-practices`(最佳实践)、`harmonyos-faqs`(FAQ)、`harmonyos-roadmap`(变更预告)、`all`(所有分类,默认) |
236
+ | --format | 可选,控制输出格式,取值包括 `default` 、`json` ,默认为`default` ,输出结果包括文档ID、标题、文档的概括内容 |
237
+ | --limit | 可选,设置搜索结果返回条数,默认为20 |
238
+
239
+ **示例:**
240
+
241
+ ```bash
242
+ devecocli docs search 沉浸光感
243
+ devecocli docs search '@State' '@Prop' --catalog best-practices --limit 10
244
+ devecocli docs search Row Column --format json
245
+ ```
246
+
247
+ ### `docs read`
248
+
249
+ 按文档ID查询文档的完整内容
250
+
251
+ **命令格式:**
252
+
253
+ ```bash
254
+ devecocli docs read <documentId>
255
+ ```
256
+
257
+ **参数:**
258
+
259
+ | 参数名 | 说明 |
260
+ | ---------- | ------- |
261
+ | documentId | 必选,文档ID |
262
+
263
+ **示例:**
264
+
265
+ ```bash
266
+ devecocli docs read 开发指南/应用框架/UI_Design_Kit_UI设计套件/沉浸光感/ui-design-hds-component-material
267
+ ```
268
+
269
+ ### `docs catalog`
270
+
271
+ 查询文档分类和分类名称
272
+
273
+ **命令格式:**
274
+
275
+ ```bash
276
+ devecocli docs catalog --format <fmt>
277
+ ```
278
+
279
+ **参数:**
280
+
281
+ | 参数名 | 说明 |
282
+ | -------- | ----------------------------------------- |
283
+ | --format | 可选,输出格式,`default` 或 `json` ,默认为 `default` |
284
+
285
+ **示例:**
286
+
287
+ ```bash
288
+ devecocli docs catalog
289
+ devecocli docs catalog --format json
290
+ ```
291
+
292
+ ### `create`
293
+
294
+ 创建 HarmonyOS 应用工程,仅支持创建工程模板中的 `Empty Ability` 模板
295
+
296
+ **命令格式:**
297
+
298
+ ```bash
299
+ devecocli create --app-name <name> --project-path <path> --bundle-name <bundle> --api-level <level>
300
+ ```
301
+
302
+ **参数:**
303
+
304
+ | 参数名 | 说明 |
305
+ | -------------- | ----------------------------------------------------------------- |
306
+ | --app-name | 必选,应用名称 |
307
+ | --project-path | 可选,工程路径,默认为:`./<appname>` |
308
+ | --bundle-name | 可选,包名,默认为:`com.example.<appname>` ,`appname` 自动转为小写 |
309
+ | --api-level | 可选,API级别,最小值为17,最大值从安装的 `Deveco Studio` 的 `HarmonyOS` `SDK` 中自动获取 |
310
+
311
+ **示例:**
312
+
313
+ ```bash
314
+ devecocli create --project-path ./MyApp --app-name MyApp
315
+ devecocli create --project-path ./MyApp --app-name MyApp --bundle-name com.acme.myapp --api-level 23
316
+ devecocli create --app-name MyApp
317
+ ```
318
+
319
+ ### `auth login`
320
+
321
+ 登录华为开发者账号,打开浏览器完成授权。
322
+
323
+ **命令格式:**
324
+
325
+ ```bash
326
+ devecocli auth login
327
+ ```
328
+
329
+ **说明:**
330
+
331
+ - 海外账户暂不支持
332
+
333
+ ### `auth logout`
334
+
335
+ 登出并清除本地存储的凭据
336
+
337
+ **命令格式:**
338
+
339
+ ```bash
340
+ devecocli auth logout
341
+ ```
342
+
343
+ ### `auth status`
344
+
345
+ 显示当前登录的用户
346
+
347
+ **命令格式:**
348
+
349
+ ```bash
350
+ devecocli auth status
351
+ ```
352
+
353
+ ### `auth team list`
354
+
355
+ 列出当前用户已加入的团队
356
+
357
+ **命令格式:**
358
+
359
+ ```bash
360
+ devecocli auth team list
361
+ ```
362
+
363
+ **示例:**
364
+
365
+ ```bash
366
+ devecocli auth team list
367
+ ```
368
+
369
+ ### `build`
370
+
371
+ 编译并打包 HarmonyOS 工程或工程中的模块
372
+
373
+ **命令格式:**
374
+
375
+ ```bash
376
+ devecocli build --product <product> --modules <modules> --build-mode <mode>
377
+ ```
378
+
379
+ **参数:**
380
+
381
+ | 参数名 | 说明 |
382
+ | ------------ | ------------------------------------------------------------------------------------------------------- |
383
+ | --product | 可选,产品的名称,默认为 `default` |
384
+ | --modules | 可选,模块的名称。如需指定模块的 `target` 信息,使用 `module@target` 形式。当工程中只有一个模块时,可缺省;当工程中存在多个模块,且仅存在一个 `entry` 类型的模块时,可缺省 |
385
+ | --build-mode | 可选,构建模式,默认为 `debug` |
386
+
387
+ **示例:**
388
+
389
+ ```bash
390
+ devecocli build --build-mode release
391
+ devecocli build --modules entry library
392
+ devecocli build --modules library@phone
393
+ devecocli build --product oversea --modules entry --build-mode release
394
+ ```
395
+
396
+ **说明:**
397
+
398
+ - 选定模块的依赖会被自动解析和构建
399
+ - 执行`devecocli build --product <name>`命令后,产物为 `.app`
400
+ - 执行`devecocli build --product <name> --modules <m1>`命令后,产物为 `.hap` / `.hsp` / `.har`
401
+
402
+ ### `build clean`
403
+
404
+ 清理 HarmonyOS 项目的构建产物
405
+
406
+ **命令格式:**
407
+
408
+ ```bash
409
+ devecocli build clean
410
+ ```
411
+
412
+ ### `check lint`
413
+
414
+ 检查代码规范并输出实践建议与报告。
415
+
416
+ **命令格式:**
417
+
418
+ ```bash
419
+ devecocli check lint [path]
420
+ ```
421
+
422
+ **参数:**
423
+
424
+ | 参数名 | 说明 |
425
+ | ---------------------------- | --------------------------------------------------------------------- |
426
+ | `[path]` | 可选,待检查的文件或目录;默认使用 `build-profile.json5` 所在的项目根目录,否则使用当前目录 |
427
+ | `--config-path <path>` | Code Linter 配置文件路径,仅支持 `.json` 或 `.json5`;默认使用待检查项目根目录下的 `code-linter.json5`,显式指定时必须与待检查路径属于同一项目 |
428
+ | `--fix` | 自动修复可修复的问题 |
429
+ | `--incremental` | 仅检查 Git 未提交文件 |
430
+ | `--product <name>` | `build-profile.json5` 中定义的 product,默认为 `default` |
431
+ | `--format <default\|json>` | 完整报告格式;`default` 输出 Markdown,`json` 输出 JSON |
432
+ | `--output-path <path>` | 完整报告文件或目录;目录形式会自动生成带时间戳的报告文件 |
433
+ | `--limit <number>` | 未指定 `--output-path` 时,限制终端显示的问题数量 |
434
+
435
+ ### `emulator list`
436
+
437
+ 查看模拟器实例
438
+
439
+ **命令格式:**
440
+
441
+ ```bash
442
+ devecocli emulator list
443
+ ```
444
+
445
+ ### `emulator start`
446
+
447
+ 启动模拟器。首次使用时,需要签署 HarmonyOS 软件许可与服务协议,具体请参考 `emulator license`
448
+
449
+ **命令格式:**
450
+
451
+ ```bash
452
+ devecocli emulator start [names...]
453
+ ```
454
+
455
+ **参数:**
456
+
457
+ | 参数名 | 说明 |
458
+ | ----------- | ----------------------------------------- |
459
+ | \[names...] | 必选,模拟器实例名称,多个名称用空格隔开。若名称中带有空格,则名称需要添加英文引号 |
460
+
461
+ **示例:**
462
+
463
+ ```bash
464
+ devecocli emulator start Phone
465
+ devecocli emulator start Phone1 Phone2
466
+ ```
467
+
468
+ **说明:**
469
+
470
+ - `emulator start` 命令仅支持启动 `release` 版本的模拟器
471
+
472
+ ### `emulator stop`
473
+
474
+ 关闭模拟器
475
+
476
+ **命令格式:**
477
+
478
+ ```bash
479
+ devecocli emulator stop [names...]
480
+ ```
481
+
482
+ **参数:**
483
+
484
+ | 参数名 | 说明 |
485
+ | ----------- | ----------------------------------------- |
486
+ | \[names...] | 必选,模拟器实例名称,多个名称用空格隔开。若名称中带有空格,则名称需要添加英文引号 |
487
+
488
+ **示例:**
489
+
490
+ ```bash
491
+ devecocli emulator stop Phone
492
+ devecocli emulator stop 127.0.0.1:5555
493
+ ```
494
+
495
+ ### `emulator` 场景操作
496
+
497
+ 控制运行中的模拟器实例,直接映射 DevEco Studio 内置 Emulator 公开命令行参数。新增场景控制命令要求 Emulator 7.0 或更高版本;低版本会直接提示升级。截图不属于模拟器场景操作,统一通过 `devecocli ui screenshot` 执行。
498
+
499
+ **示例:**
500
+
501
+ ```bash
502
+ devecocli emulator shake --target Phone
503
+ devecocli emulator power --target Phone
504
+ devecocli emulator rotate left --target Phone
505
+ devecocli emulator volume up --target Phone
506
+ devecocli emulator fold half-open --target Phone
507
+ devecocli emulator battery --target Phone --level 90
508
+ devecocli emulator battery --target Phone --status charging
509
+ devecocli emulator geolocation --target Phone --longitude 116.400244
510
+ devecocli emulator scene outdoorRunning --target Phone
511
+ devecocli emulator sensor --target Phone --heartrate 80
512
+ ```
513
+
514
+ **说明:**
515
+
516
+ - `--target` 支持模拟器名称或 `127.0.0.1:<port>` 序列号。
517
+ - `battery --level` 取值范围为整数 `[1, 100]`。
518
+ - `battery --status` 取值为 `charging` 或 `discharging`。
519
+ - `geolocation` 支持 `--longitude`、`--latitude`、`--altitude`、`--direction`。
520
+ - `scene` 取值为 `outdoorRunning`、`outdoorCycling`、`drivingNavigation`。
521
+ - `sensor` 支持 `--light-intensity`、`--humidity`、`--temperature`、`--steps`、`--heartrate`。
522
+ - `fold <state>` 会根据目标模拟器的设备类型校验状态,设备与参数必须匹配:
523
+
524
+ | 设备类型 | 支持的 `state` |
525
+ | --- | --- |
526
+ | `foldable` | `open`、`half-open`、`close` |
527
+ | `2in1_foldable` | `open`、`vertical-open`、`half-open`、`close` |
528
+ | `triplefold` | `single`、`double`、`triple`、`left-folded-right-half-folded`、`left-half-folded-right-expanded`、`left-expanded-right-folded`、`left-half-folded-right-folded`、`left-expanded-right-half-folded`、`left-half-folded-right-half-folded` |
529
+
530
+ 校验以目标模拟器实际返回的 `deviceType` 为准。非上述三种设备类型以及不属于目标设备类型的状态会在命令下发前被拒绝。校验通过后,底层映射为 `Emulator -instance <name> -foldedState <state>`。
531
+ - 设置 `DEVECO_CLI_DEBUG=1` 可查看底层命令映射,例如 `Emulator -instance <name> -shake`。
532
+
533
+ ### `emulator create`
534
+
535
+ 创建模拟器
536
+
537
+ **命令格式:**
538
+
539
+ ```bash
540
+ devecocli emulator create <name> --device-type <type> --os-version <version> --force
541
+ ```
542
+
543
+ **参数:**
544
+
545
+ | 参数名 | 说明 |
546
+ | ------------- | ------------------------------------------------------------------------------------------------------------------------------- |
547
+ | name | 必选,模拟器名称 |
548
+ | --device-type | 必选,模拟器设备类型,支持 `phone` , `foldable` , `widefold` , `triplefold` , `tablet` , `2in1` , `2in1 foldable` , `tv` , `wearable` ,全小写 |
549
+ | --os-version | 必选,模拟器镜像版本 |
550
+ | --force | 可选,覆盖已有同名的模拟器 |
551
+
552
+ **示例:**
553
+
554
+ ```bash
555
+ devecocli emulator create MyPhone --device-type phone --os-version "HarmonyOS 6.0.1(21)"
556
+ ```
557
+
558
+ ### `emulator delete`
559
+
560
+ 创建模拟器
561
+
562
+ **命令格式:**
563
+
564
+ ```bash
565
+ devecocli emulator delete <name>
566
+ ```
567
+
568
+ **参数:**
569
+
570
+ | 参数名 | 说明 |
571
+ | ---- | -------------- |
572
+ | name | 必选,模拟器实例名称或序列号 |
573
+
574
+ **示例:**
575
+
576
+ ```bash
577
+ devecocli emulator delete MyPhone
578
+ ```
579
+
580
+ ### `emulator image list`
581
+
582
+ 查询模拟器镜像列表
583
+
584
+ **命令格式:**
585
+
586
+ ```bash
587
+ devecocli emulator image list --device-type <type> --all --format <format>
588
+ ```
589
+
590
+ **参数:**
591
+
592
+ | 参数名 | 说明 |
593
+ | ------------- | -------------------------------------------------------------------------------------------------------------------------- |
594
+ | --device-type | 可选,模拟器设备类型,支持 `phone` , `foldable` , `widefold` , `triplefold` , `tablet` , `2in1` , `2in1 foldable` , `tv` , `wearable` |
595
+ | --all | 可选,查询已下载和未下载的所有镜像 |
596
+ | --format | 可选,控制输出格式,取值为 `table` 或 `json` ,默认为 `table` |
597
+
598
+ **示例:**
599
+
600
+ ```bash
601
+ devecocli emulator image list
602
+ devecocli emulator image list --all
603
+ devecocli emulator image list --device-type phone
604
+ devecocli emulator image list --format json
605
+ ```
606
+
607
+ ### `emulator image download`
608
+
609
+ 下载模拟器镜像。首次使用时,需要签署 HarmonyOS `SDK` 许可协议,具体请参考 `emulator license`
610
+
611
+ **命令格式:**
612
+
613
+ ```bash
614
+ devecocli emulator image download --device-type <type> --os-version <version> --force
615
+ ```
616
+
617
+ **参数:**
618
+
619
+ | 参数名 | 说明 |
620
+ | ------------- | ------------------------------------------------------------------------------------------------------------------------------- |
621
+ | --device-type | 必选,模拟器设备类型,支持 `phone` , `foldable` , `widefold` , `triplefold` , `tablet` , `2in1` , `2in1 foldable` , `tv` , `wearable` ,全小写 |
622
+ | --os-version | 必选,模拟器镜像版本 |
623
+ | --force | 可选,覆盖已有的模拟器镜像 |
624
+
625
+ **示例:**
626
+
627
+ ```bash
628
+ devecocli emulator image download --device-type phone --os-version "HarmonyOS 6.0.1(21)" --force
629
+ ```
630
+
631
+ **说明:**
632
+
633
+ - `emulator image download` 命令仅支持下载 `release` 版本的模拟器镜像
634
+
635
+ ### `emulator image remove`
636
+
637
+ 删除模拟器镜像
638
+
639
+ **命令格式:**
640
+
641
+ ```bash
642
+ devecocli emulator image remove --device-type <type> --os-version <version>
643
+ ```
644
+
645
+ **参数:**
646
+
647
+ | 参数名 | 说明 |
648
+ | ------------- | ------------------------------ |
649
+ | --device-type | 必选,模拟器设备类型,与下载镜像的device-type一致 |
650
+ | --os-version | 必选,模拟器镜像版本,与下载镜像的os-version一致 |
651
+
652
+ **示例:**
653
+
654
+ ```bash
655
+ devecocli emulator image remove --device-type phone --os-version "HarmonyOS 6.0.1(21)"
656
+ ```
657
+
658
+ ### `emulator license view`
659
+
660
+ 查看协议文本(只读)
661
+
662
+ **命令格式:**
663
+
664
+ ```bash
665
+ devecocli emulator license view
666
+ ```
667
+
668
+ ### `emulator license`
669
+
670
+ 交互式查看并接受协议。打印完整协议文本后提示 y/N 确认。使用模拟器需要同意 HarmonyOS 软件许可与服务协议,下载镜像需要同意 HarmonyOS `SDK` 许可协议。若已同意则直接提示已接受。非交互终端下会报错,请改用 `emulator license accept`
671
+
672
+ **命令格式:**
673
+
674
+ ```bash
675
+ devecocli emulator license
676
+ ```
677
+
678
+ ### `emulator license accept`
679
+
680
+ 非交互式同意模拟器所有协议,直接写入同意记录,跳过协议展示和确认提示。适用于自动化脚本、CI 或非交互终端环境。若已同意则直接提示已接受
681
+
682
+ **命令格式:**
683
+
684
+ ```bash
685
+ devecocli emulator license accept
686
+ ```
687
+
688
+ ### `device list`
689
+
690
+ 查询所有已连接的设备,包括真机设备和运行中的模拟器
691
+
692
+ **命令格式:**
693
+
694
+ ```bash
695
+ devecocli device list
696
+ ```
697
+
698
+ ### `device view`
699
+
700
+ 查询已连接的设备的详细信息,包括设备序列号、设备名称、设备类型、 `OS` 版本等
701
+
702
+ **命令格式:**
703
+
704
+ ```bash
705
+ devecocli device view --target <serialOrName>
706
+ ```
707
+
708
+ **参数:**
709
+
710
+ | 参数名 | 说明 |
711
+ | ----------- | ------------------------------------- |
712
+ | -t,--target | 可选,目标设备名称或序列号。多设备缺省时,会列出所有已连接设备序列号和名称 |
713
+
714
+ **示例:**
715
+
716
+ ```bash
717
+ devecocli device view
718
+ devecocli device view --target 127.0.0.1:5555
719
+ devecocli device view -t "My Device Name"
720
+ ```
721
+
722
+ ### `ui screenshot`
723
+
724
+ 对真机或模拟器执行 UI 截图。
725
+
726
+ **命令格式:**
727
+
728
+ ```bash
729
+ devecocli ui screenshot --device <name|serial> --display <displayId> --path <path>
730
+ ```
731
+
732
+ **参数:**
733
+
734
+ | 参数 | 说明 | 默认值 |
735
+ | ------------------------ | ------------------------ | ---------- |
736
+ | --device \<name\|serial> | 真机或模拟器名称/序列号;多设备时必填 | 单设备自动选择 |
737
+ | --display \<displayId> | 目标屏幕 ID,可选 | 默认屏幕 |
738
+ | --path \<path> | 截图输出路径,可选;目录或父目录必须已存在 | `./screenshot-<timestamp>.png` |
739
+
740
+ **示例:**
741
+
742
+ ```bash
743
+ devecocli ui screenshot --device Phone
744
+ mkdir -p screenshots
745
+ devecocli ui screenshot --device Phone --path ./screenshots/phone.png
746
+ devecocli ui screenshot --device Phone --display 0 --path ./screenshots/phone.png
747
+ ```
748
+
749
+ **说明:**
750
+
751
+ - `ui screenshot` 支持真机和模拟器。
752
+ - 仅有一个可用设备时可省略 `--device`,多个设备同时连接时必须指定。
753
+ - 截图能力统一通过 `ui screenshot` 提供,不放在模拟器场景操作命令中。
754
+ - 截图统一使用 `hdc shell snapshot_display` 和 `hdc file recv` 实现;设置 `DEVECO_CLI_DEBUG=1` 可查看实际执行命令。
755
+
756
+ ### `ui click`
757
+
758
+ 点击指定坐标或节点 ID 的中心位置。
759
+
760
+ **命令格式:**
761
+
762
+ ```bash
763
+ devecocli ui click [x] [y] --device <name|serial> --id <id> --window <windowId>
764
+ ```
765
+
766
+ **参数:**
767
+
768
+ | 参数 | 说明 |
769
+ | --- | --- |
770
+ | `[x] [y]` | 可选,目标坐标。缺省时需配合 `--id` 使用 |
771
+ | --device \<name\|serial> | 目标设备,多设备时必填 |
772
+ | --id \<id> | 节点 ID,自动解析为中心坐标。不可与 `[x] [y]` 同时使用 |
773
+ | --window \<windowId> | 目标窗口 ID,需与 `--id` 配合使用 |
774
+
775
+ **示例:**
776
+
777
+ ```bash
778
+ devecocli ui click 100 200
779
+ devecocli ui click 100 200 --device Phone
780
+ devecocli ui click --id submit_button
781
+ devecocli ui click --id submit_button --window main_window
782
+ ```
783
+
784
+ ### `ui doubleclick`
785
+
786
+ 双击指定坐标或节点 ID 的中心位置。
787
+
788
+ **命令格式:**
789
+
790
+ ```bash
791
+ devecocli ui doubleclick [x] [y] --device <name|serial> --id <id> --window <windowId>
792
+ ```
793
+
794
+ **参数:**
795
+
796
+ | 参数 | 说明 |
797
+ | --- | --- |
798
+ | `[x] [y]` | 可选,目标坐标。缺省时需配合 `--id` 使用 |
799
+ | --device \<name\|serial> | 目标设备,多设备时必填 |
800
+ | --id \<id> | 节点 ID,自动解析为中心坐标。不可与 `[x] [y]` 同时使用 |
801
+ | --window \<windowId> | 目标窗口 ID,需与 `--id` 配合使用 |
802
+
803
+ **示例:**
804
+
805
+ ```bash
806
+ devecocli ui doubleclick 100 200
807
+ devecocli ui doubleclick 100 200 --device Phone
808
+ devecocli ui doubleclick --id photo_thumb
809
+ devecocli ui doubleclick --id photo_thumb --window main_window
810
+ ```
811
+
812
+ ### `ui longclick`
813
+
814
+ 长按指定坐标或节点 ID 的中心位置。
815
+
816
+ **命令格式:**
817
+
818
+ ```bash
819
+ devecocli ui longclick [x] [y] --device <name|serial> --id <id> --window <windowId>
820
+ ```
821
+
822
+ **参数:**
823
+
824
+ | 参数 | 说明 |
825
+ | --- | --- |
826
+ | `[x] [y]` | 可选,目标坐标。缺省时需配合 `--id` 使用 |
827
+ | --device \<name\|serial> | 目标设备,多设备时必填 |
828
+ | --id \<id> | 节点 ID,自动解析为中心坐标。不可与 `[x] [y]` 同时使用 |
829
+ | --window \<windowId> | 目标窗口 ID,需与 `--id` 配合使用 |
830
+
831
+ **示例:**
832
+
833
+ ```bash
834
+ devecocli ui longclick 100 200
835
+ devecocli ui longclick 100 200 --device Phone
836
+ devecocli ui longclick --id menu_item
837
+ devecocli ui longclick --id menu_item --window main_window
838
+ ```
839
+
840
+ ### `ui swipe`
841
+
842
+ 自定义滑动(指定起点、终点和速度)。
843
+
844
+ **命令格式:**
845
+
846
+ ```bash
847
+ devecocli ui swipe <x1> <y1> <x2> <y2> --device <name|serial> --speed <n>
848
+ ```
849
+
850
+ **参数:**
851
+
852
+ | 参数 | 说明 |
853
+ | --- | --- |
854
+ | `<x1> <y1> <x2> <y2>` | 必选,起点和终点坐标 |
855
+ | --device \<name\|serial> | 目标设备,多设备时必填 |
856
+ | --speed \<n> | 可选,滑动速度(像素/秒),范围 `200` ~ `40000` |
857
+
858
+ **示例:**
859
+
860
+ ```bash
861
+ devecocli ui swipe 100 500 100 200
862
+ devecocli ui swipe 100 500 100 200 --device Phone
863
+ devecocli ui swipe 100 500 100 200 --speed 1000
864
+ ```
865
+
866
+ ### `ui fling`
867
+
868
+ 快速滑动(Fling)。
869
+
870
+ **命令格式:**
871
+
872
+ ```bash
873
+ devecocli ui fling <x1> <y1> <x2> <y2> --device <name|serial> --speed <n>
874
+ ```
875
+
876
+ **参数:**
877
+
878
+ | 参数 | 说明 |
879
+ | --- | --- |
880
+ | `<x1> <y1> <x2> <y2>` | 必选,起点和终点坐标 |
881
+ | --device \<name\|serial> | 目标设备,多设备时必填 |
882
+ | --speed \<n> | 可选,滑动速度(像素/秒),范围 `200` ~ `40000` |
883
+
884
+ **示例:**
885
+
886
+ ```bash
887
+ devecocli ui fling 100 800 100 200
888
+ devecocli ui fling 100 800 100 200 --device Phone
889
+ devecocli ui fling 100 800 100 200 --speed 3000
890
+ ```
891
+
892
+ ### `ui drag`
893
+
894
+ 拖拽操作。
895
+
896
+ **命令格式:**
897
+
898
+ ```bash
899
+ devecocli ui drag <x1> <y1> <x2> <y2> --device <name|serial> --speed <n>
900
+ ```
901
+
902
+ **参数:**
903
+
904
+ | 参数 | 说明 |
905
+ | --- | --- |
906
+ | `<x1> <y1> <x2> <y2>` | 必选,起点和终点坐标 |
907
+ | --device \<name\|serial> | 目标设备,多设备时必填 |
908
+ | --speed \<n> | 可选,滑动速度(像素/秒),范围 `200` ~ `40000` |
909
+
910
+ **示例:**
911
+
912
+ ```bash
913
+ # 拖拽操作
914
+ devecocli ui drag 100 500 100 200
915
+ devecocli ui drag 100 500 100 200 --device Phone
916
+ devecocli ui drag 100 500 100 200 --speed 1500
917
+ ```
918
+
919
+ ### `ui dircfling`
920
+
921
+ 向指定方向快速滑动。
922
+
923
+ **命令格式:**
924
+
925
+ ```bash
926
+ devecocli ui dircfling <direction> --device <name|serial>
927
+ ```
928
+
929
+ **参数:**
930
+
931
+ | 参数 | 说明 |
932
+ | --- | --- |
933
+ | `<direction>` | 必选,方向,取值为 `up`, `down`, `left`, `right` |
934
+ | --device \<name\|serial> | 目标设备,多设备时必填 |
935
+
936
+ **示例:**
937
+
938
+ ```bash
939
+ devecocli ui dircfling up
940
+ devecocli ui dircfling down --device Phone
941
+ devecocli ui dircfling left
942
+ devecocli ui dircfling right
943
+ ```
944
+
945
+ **与 `ui swipe` 的区别:**
946
+
947
+ - `ui swipe` 需要指定精确的起点和终点坐标,支持自定义速度,适用于特定区域滑动。
948
+ - `ui dircfling` 仅需指定方向,使用系统默认速度,适用于页面滚动或列表快速滑动。
949
+
950
+ ### `ui text`
951
+
952
+ 输入文本到当前焦点、指定坐标或指定节点位置。
953
+
954
+ **命令格式:**
955
+
956
+ ```bash
957
+ devecocli ui text <text> [x] [y] --device <name|serial> --id <id> --window <windowId>
958
+ ```
959
+
960
+ **参数:**
961
+
962
+ | 参数 | 说明 |
963
+ | --- | --- |
964
+ | `<text>` | 必选,待输入的文本 |
965
+ | `[x] [y]` | 可选,目标坐标 |
966
+ | --device \<name\|serial> | 目标设备,多设备时必填 |
967
+ | --id \<id> | 节点 ID,自动解析为中心坐标。不可与 `[x] [y]`同时使用 |
968
+ | --window \<windowId> | 目标窗口 ID,需与 `--id` 配合使用 |
969
+
970
+ **示例:**
971
+
972
+ ```bash
973
+ devecocli ui text "Hello World"
974
+ devecocli ui text "Hello World" --device Phone
975
+ devecocli ui text "Hello World" 100 200
976
+ devecocli ui text "Hello World" --id search_box
977
+ devecocli ui text "Hello World" --id search_box --window main_window
978
+ ```
979
+
980
+ ### `ui layout`
981
+
982
+ 导出设备屏幕上的 UI 节点树,输出每个节点的类型、节点 ID、坐标边界 `[left,top,right,bottom]`、文本及可交互标志(`clickable` / `longClickable` / `scrollable` / `checkable`)。
983
+
984
+ **命令格式:**
985
+
986
+ ```bash
987
+ devecocli ui layout --device <name|serial> --id <id> --window <windowId> --all-windows --depth <n> --format <fmt> --mode <full|simplified>
988
+ ```
989
+
990
+ **参数:**
991
+
992
+ | 参数名 | 说明 |
993
+ | --- | --- |
994
+ | --device \<name\|serial> | 目标设备,多设备时必填 |
995
+ | --id \<id> | 节点 ID,筛选树中匹配节点(仅输出匹配节点,不带子节点,强制 JSON)。不可与未筛选的全树输出同时视为列表查询 |
996
+ | --window \<windowId> | 目标窗口 ID,与 `--all-windows` 互斥 |
997
+ | --all-windows | 包含所有窗口,与 `--window` 互斥 |
998
+ | --depth \<n> | 树深度限制,`0`=不限制(默认),`1`=仅根,`2`=根+子节点 |
999
+ | --format | 输出格式,`default` 或 `json`,默认 `default` |
1000
+ | --mode | 输出模式:`full`=完整原始树;`simplified`(默认)=折叠无 ID、无文本、无可交互标志的包装节点 |
1001
+
1002
+ **示例:**
1003
+
1004
+ ```bash
1005
+ devecocli ui layout
1006
+ devecocli ui layout --device Phone
1007
+ devecocli ui layout --device Phone --format json
1008
+ devecocli ui layout --mode full --depth 2
1009
+ devecocli ui layout --id submit_button
1010
+ devecocli ui layout --window 15 --format json
1011
+ ```
1012
+
1013
+ **说明:**
1014
+
1015
+ - `--mode simplified`(默认)会折叠无 `id`、无 `text`、无任何可交互标志的包装节点,使输出聚焦于有意义的可操作节点;根节点始终保留。`--depth` 在折叠后截断。
1016
+ - `--id` 用于按节点 ID 查询,返回所有匹配节点(`children` 置空),常配合 `ui click --id` / `ui text --id` 定位坐标。
1017
+ - 节点 `bounds` 为 `[left, top, right, bottom]`,`ui click --id` 等交互命令据此取中心坐标点击。
1018
+ - `--window` 的窗口 ID 可通过 `devecocli ui window list` 获取。
1019
+
1020
+ ### `ui window list`
1021
+
1022
+ 查看设备上的窗口列表,输出窗口 ID、名称、PID、所属屏幕 ID 及是否聚焦。为 `ui layout --window`、`ui click --window` 等命令提供窗口 ID。
1023
+
1024
+ **命令格式:**
1025
+
1026
+ ```bash
1027
+ devecocli ui window list --device <name|serial> --format <fmt> --all
1028
+ ```
1029
+
1030
+ **参数:**
1031
+
1032
+ | 参数名 | 说明 |
1033
+ | --- | --- |
1034
+ | --device \<name\|serial> | 目标设备,多设备时必填 |
1035
+ | --format | 输出格式,`default` 或 `json`,默认 `default` |
1036
+ | --all | 显示包含系统窗口在内的所有窗口;缺省时仅显示应用窗口(`type === 1`) |
1037
+
1038
+ **示例:**
1039
+
1040
+ ```bash
1041
+ devecocli ui window list
1042
+ devecocli ui window list --device Phone
1043
+ devecocli ui window list --format json
1044
+ devecocli ui window list --all
1045
+ ```
1046
+
1047
+ **说明:**
1048
+
1049
+ - 聚焦窗口在 `default` 格式下高亮显示。
1050
+ - 缺省时仅列出应用窗口;加 `--all` 可查看系统窗口,用于排查多窗口场景。
1051
+
1052
+ ### `run`
1053
+
1054
+ 构建应用后,将应用安装到真机设备或模拟器上,并启动执行
1055
+
1056
+ **命令格式:**
1057
+
1058
+ ```bash
1059
+ devecocli run --module <module> --device <device> --product <product> --build-mode <mode> --ability <ability> --uninstall --skip-build --apply <txtFile>
1060
+ ```
1061
+
1062
+ **参数:**
1063
+
1064
+ | 参数名 | 说明 |
1065
+ | ------------ |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1066
+ | --module | 可选,模块名称。如需指定模块的 `target` 信息,使用 `module@target` 形式。当工程中只有一个可运行模块( `entry` / `feature` / `shared` )时,可缺省 |
1067
+ | --device | 设备名称或设备序列号,单设备时可选,多设备时必选 |
1068
+ | --product | 可选,产品的名称,默认为 `default` |
1069
+ | --build-mode | 可选,构建模式名称,默认为 `debug` |
1070
+ | --ability | 可选,待启动的 `Ability` ,默认:模块 `module.json5` 中的`mainElement` |
1071
+ | --uninstall | 可选,安装前先卸载已有应用 |
1072
+ | --skip-build | 可选,跳过构建操作,直接安装应用 。\*\*说明:\*\*使用该参数时,需确保对应模块已有构建产物 |
1073
+ | --apply \<fileName\> | 可选,**快速增量部署**:仅重编改动文件 → signed hqf → `bm quickfix -a -f -o` 安装 → 重启,比全量 `run` 快。`<fileName>` 是工程 `.hvigor/` 目录下的**纯文件名**(调用方把清单写到此目录,文件名做安全校验防穿越);内容为本轮改动的源文件路径清单(每行一个相对工程根路径;`#`/空行忽略;`.ets`/`.ts`/`.cpp`/资源文件;changeFileList 增量累积,只需列本轮改的,历史文件自动保留)。模块从清单路径自动识别(无需 `--module`)。**前提**:DevEco Studio ≥6.1.1(hvigor `assembleDevHqf` 支持,低于拒绝并提示升级);先 `devecocli run` 全量构建部署一次(生成 buildConfig.json 缓存);**没生效排查**:检查 `<module>/build/config/buildConfig.json` 有无内容(空/无 = 没跑过 `devecocli run`);**失败兜底**:直接 `devecocli run` |
1074
+
1075
+ **示例:**
1076
+
1077
+ ```bash
1078
+ devecocli run
1079
+ devecocli run --module entry --device 127.0.0.1:5555
1080
+ devecocli run --module library@phone --device 127.0.0.1:5555
1081
+ devecocli run --product oversea --module entry --ability EntryAbility
1082
+ devecocli run --build-mode release
1083
+ devecocli run --uninstall
1084
+ devecocli run --apply changes.txt
1085
+ ```
1086
+
1087
+ ### `log`
1088
+
1089
+ 查看`hilog`普通日志或崩溃日志
1090
+
1091
+ **命令格式:**
1092
+
1093
+ ```bash
1094
+ devecocli log --device <device> --crash --level <level> --bundle-name <bundle-name> --keyword <keyword> --tail <num> --from <start> --to <end> --follow
1095
+ ```
1096
+
1097
+ **参数:**
1098
+
1099
+ | 参数名 | 说明 |
1100
+ | ------------- | -------------------------------------------------------------------------------------------------------------------------- |
1101
+ | --device | 设备名称或设备序列号,单设备时可选,多设备时必选 |
1102
+ | --crash | 可选,查看崩溃日志 |
1103
+ | --level | 可选,日志级别,取值包括`D`( `Debug` )、`I`( `Info` )、`W`( `Warn` )、`E`( `Error` )、`F`( `Fatal` ) |
1104
+ | --bundle-name | 可选,根据包名查看日志 |
1105
+ | --keyword | 可选,根据关键词查看日志,关键词区分大小写 |
1106
+ | --tail | 可选,显示最新的N行日志,取值为正整数 |
1107
+ | --from | 可选,起始时间,单位为`m`和`s`,`m`和`s`为小写,默认为`s`,`start`的取值需要大于等于`end` |
1108
+ | --to | 可选,结束时间,单位为`m`和`s`,`m`和`s`为小写,默认为`s` 。不可与--follow同时使用。**说明:** 如当前时间为05:00,`start`设置为30s,`end`设置为10s,则起始时间为04:30,结束时间为04:50 |
1109
+ | --follow | 可选,实时输出日志。不可与--to同时使用 |
1110
+
1111
+ **示例:**
1112
+
1113
+ ```bash
1114
+ devecocli log --level E
1115
+ devecocli log --crash --bundle-name com.example.app
1116
+ devecocli log --device 127.0.0.1:5555 --level W --keyword Init
1117
+ devecocli log --tail 100 --from 5m --to 2m
1118
+ devecocli log --follow --bundle-name com.example.app
1119
+ ```
1120
+
1121
+ ### `skills list`
1122
+
1123
+ 查询可用的 `Skill`
1124
+
1125
+ **命令格式:**
1126
+
1127
+ ```bash
1128
+ devecocli skills list --long
1129
+ ```
1130
+
1131
+ **参数:**
1132
+
1133
+ | 参数名 | 说明 |
1134
+ | --------- | ----------------------------------------------- |
1135
+ | -l,--long | 可选,`Skill` 详情,包括描述和已安装的智能体列表。缺省时,仅显示 `Skill` 名称 |
1136
+
1137
+ **示例:**
1138
+
1139
+ ```bash
1140
+ devecocli skills list
1141
+ devecocli skills list --long
1142
+ devecocli skills list -l
1143
+ ```
1144
+
1145
+ ### `skills find`
1146
+
1147
+ 按关键词搜索 `Skill`
1148
+
1149
+ **命令格式:**
1150
+
1151
+ ```bash
1152
+ devecocli skills find <keyword>
1153
+ ```
1154
+
1155
+ **参数:**
1156
+
1157
+ | 参数名 | 说明 |
1158
+ | ------- | -------- |
1159
+ | keyword | 必选,搜索关键词 |
1160
+
1161
+ **示例:**
1162
+
1163
+ ```bash
1164
+ devecocli skills find deveco
1165
+ ```
1166
+
1167
+ ### `skills add`
1168
+
1169
+ 将 `Skill` 添加到智能体中
1170
+
1171
+ **命令格式:**
1172
+
1173
+ ```bash
1174
+ devecocli skills add --all --agent <agents> --skill <skill-name> --project <path> --path <path> --force
1175
+ ```
1176
+
1177
+ **参数:**
1178
+
1179
+ | 参数名 | 说明 |
1180
+ | ---------- | --------------------------------------------------------- |
1181
+ | --all | 可选,添加所有可用的 `Skill` ,与 `--skill` 二选一 |
1182
+ | --agent | 可选,智能体名称,多个智能体时以英文逗号分隔。缺省时,添加到已检测到的智能体中 |
1183
+ | --skill | 可选,待添加的 `Skill` 名称,与 `--all` 二选一 |
1184
+ | --project | 可选,指定项目路径,将 `Skill` 添加到该工程项目中 |
1185
+ | --path | 可选,指定路径,将 `Skill` 添加到该路径,不可与 `--project` 或 `--agent` 同时使用 |
1186
+ | -f,--force | 可选,当目标位置已有同名 `Skill` 时,覆盖重添加 |
1187
+
1188
+ **示例:**
1189
+
1190
+ ```bash
1191
+ devecocli skills add --all
1192
+ devecocli skills add --skill skillname --agent agentname --force # skillname需替换成实际的Skill名称
1193
+ devecocli skills add --skill skillname --project ./my-app # skillname需替换成实际的Skill名称
1194
+ ```
1195
+
1196
+ ### `skills remove`
1197
+
1198
+ 从智能体中删除已添加的 `Skill`
1199
+
1200
+ **命令格式:**
1201
+
1202
+ ```bash
1203
+ devecocli skills remove --skill <skill-name> --agent <agents> --project <path> --path <path>
1204
+ ```
1205
+
1206
+ **参数:**
1207
+
1208
+ | 参数名 | 说明 |
1209
+ | --------- | -------------------------------------------------------- |
1210
+ | --skill | 必选,待删除的 `Skill` 名称 |
1211
+ | --agent | 可选,智能体名称,多个智能体时以英文逗号分隔。缺省时,删除到已检测到的智能体中的 `Skill` |
1212
+ | --project | 可选,指定项目路径,删除该项目中的 `Skill` |
1213
+ | --path | 可选,指定路径,删除该项目中的 `Skill`,不可与 `--project` 或 `--agent` 同时使用 |
1214
+
1215
+ **示例:**
1216
+
1217
+ ```bash
1218
+ devecocli skills remove --skill skillname # skillname需替换成实际的Skill名称
1219
+ devecocli skills remove --skill skillname --agent agentname # skillname需替换成实际的Skill名称
1220
+ ```
1221
+
1222
+ ### `serve mcp`
1223
+
1224
+ 启动本地 `MCP` 服务。智能体配置 `MCP` 服务后,可通过 `MCP` 协议调用 `ArkTS` / `C++` 语法检查工具。不同智能体平台配置 `MCP` 服务的界面不一样,一个智能体平台的配置示例如下。
1225
+ 推荐通过 `devecocli init --mcp` 自动配置
1226
+
1227
+ ```bash
1228
+ {
1229
+ "mcp": {
1230
+ "deveco-mcp": {
1231
+ "type": "local",
1232
+ "command": [
1233
+ "devecocli",
1234
+ "serve",
1235
+ "mcp"
1236
+ ],
1237
+ "environment":{
1238
+ "PROJECT_PATH": "D:\\code\\sample_project", // 工程路径
1239
+ "NODE_MAX_OLD_SPACE_SIZE": "8192", // 可选,设置内部node进程最大的老生代内存大小,默认为8192
1240
+ "DEVECO_PATH": "D:\\Application\\DevEco Studio" // 可选,Deveco Studio的路径
1241
+ },
1242
+ "enbale": true
1243
+ }
1244
+ }
1245
+ }
1246
+ ```
1247
+
1248
+ ### `serve lsp`
1249
+
1250
+ 启动本地 `LSP` 语言服务。智能体配置 `LSP` 服务后,可通过 `LSP` 协议获取代码补全、跳转定义、悬浮提示、引用查找、诊断等语言特性。当前支持 `ArkTS`和 `clangd`。
1251
+
1252
+ ```bash
1253
+ {
1254
+ "lsp": {
1255
+ "ArkTS": {
1256
+ "command": [
1257
+ "devecocli",
1258
+ "serve",
1259
+ "lsp",
1260
+ "--arkts"
1261
+ ],
1262
+ "extensions": [
1263
+ ".ets"
1264
+ ]
1265
+ },
1266
+ "clangd": {
1267
+ "command": [
1268
+ "devecocli",
1269
+ "serve",
1270
+ "lsp",
1271
+ "--cpp"
1272
+ ],
1273
+ "extensions": [
1274
+ ".c",
1275
+ ".cpp",
1276
+ ".cc",
1277
+ ".cxx",
1278
+ ".h",
1279
+ ".hpp",
1280
+ ".hxx",
1281
+ ".hh"
1282
+ ]
1283
+ }
1284
+ }
1285
+ }
1286
+ ```
1287
+
1288
+ **参数:**
1289
+
1290
+ | 参数名 | 说明 |
1291
+ | --- | --- |
1292
+ | `--arkts` | 与 `--cpp` 二选一,启动 ArkTS 语言服务(ace-server) |
1293
+ | `--cpp` | 与 `--arkts` 二选一,启动 C/C++ 语言服务(clangd) |
1294
+ | `--project-path <path>` | 可选,工程根路径,默认为当前工作目录 |
1295
+ | `--auto-detect` | 可选,当前目录向下查找工程根(检查当前目录自身及其子目录,最多 3 层子目录);适用于 `--arkts` 和 `--cpp`;指定了 `--project-path` 则忽略 |
1296
+
1297
+ ### `signature generate`
1298
+
1299
+ 自动生成调试签名材料(包括p12密钥库、csr证书请求文件、p7b配置文件、cer证书文件),并将签名配置写入项目的 `build-profile.json5` 中。
1300
+
1301
+ **命令格式:**
1302
+
1303
+ ```bash
1304
+ devecocli signature generate --product <product> --team-id <team-id> --force --help
1305
+ ```
1306
+
1307
+ **参数:**
1308
+
1309
+ | 参数名 | 说明 |
1310
+ |-----------------------|-----------------------------------------|
1311
+ | --product \<product\> | 可选,指定product生成签名,默认为 `default` |
1312
+ | --team-id \<team-id\> | 可选,指定生效的team-id,默认使用自身作为团队信息 |
1313
+ | --force | 可选,强制覆盖已存在的证书文件 |
1314
+ | --help,--h | 可选,查看帮助信息 |
1315
+
1316
+ **示例:**
1317
+
1318
+ ```bash
1319
+ # 自动生成签名并写入工程配置
1320
+ devecocli signature generate
1321
+
1322
+ # 指定product
1323
+ devecocli signature generate --product default
1324
+
1325
+ # 指定team-id
1326
+ devecocli signature generate --team-id 1222
1327
+
1328
+ # 强制覆盖已存在的证书文件
1329
+ devecocli signature generate --force
1330
+
1331
+ # 查询帮助信息
1332
+ devecocli signature generate --help
1333
+ ```
1334
+
1335
+ ### `check compat`
1336
+
1337
+ 基于 `DevEco Studio` 自带的 `apkanalyzer-apiscan` 插件,扫描源代码在两个 `SDK` 版本之间的 `API` 变更情况。
1338
+
1339
+ **子命令:**
1340
+
1341
+ | 子命令 | 说明 |
1342
+ | --- | --- |
1343
+ | `devecocli check compat` | 默认执行工程级扫描 |
1344
+ | `devecocli check compat --modules <m1> [m2...]` | 按模块扫描 |
1345
+ | `devecocli check compat <file1> [file2...]` | 按文件扫描(仅支持 `.ets`/`.c`/`.cpp`) |
1346
+ | `devecocli check compat versions` | 列出可用的目标 `SDK` 版本 |
1347
+
1348
+ **命令格式:**
1349
+
1350
+ ```bash
1351
+ devecocli check compat [files...] --source-version <ver> --target-version <ver> [--modules <m...>] [--format <default|csv|json>] [--output-path <path>] [--limit <n>]
1352
+ ```
1353
+
1354
+ **参数:**
1355
+
1356
+ | 参数名 | 说明 |
1357
+ | --- | --- |
1358
+ | `--source-version` | 必填,当前工程 `SDK` 版本 |
1359
+ | `--target-version` | 必填,目标 `SDK` 版本 |
1360
+ | `--modules` | 可选,指定扫描的模块(多个以空格分隔)。与文件参数互斥 |
1361
+ | `--format` | 可选,输出格式。`default`/`csv`/`json`。默认 `default`(控制台输出文本,文件输出 `csv`) |
1362
+ | `--output-path` | 可选,报告输出路径。目录或文件(扩展名必须与 `--format` 匹配) |
1363
+ | `--limit` | 可选,控制台显示的最大记录数,默认 `100` |
1364
+
1365
+ **版本号说明:**
1366
+
1367
+ - 可用版本可通过 `devecocli check compat versions` 查看
1368
+ - `zsh` 环境下版本号需用引号包裹(包含括号),例如 `"<source_version>"`、`"<target_version>"`
1369
+
1370
+ **格式与输出组合:**
1371
+
1372
+ | 场景 | 允许的 `--format` | 行为 |
1373
+ | --- | --- | --- |
1374
+ | 控制台输出(无 `--output-path`) | `default` / `json` | `default` 输出文本表格,`json` 输出 `JSON` |
1375
+ | 文件输出(`--output-path <file>`,扩展名必须匹配 `--format`) | `default` / `csv` / `json` | `default`/`csv` 写 `.csv` 文件;`json` 写 `.json` 文件 |
1376
+ | 目录输出(`--output-path <dir>`,无扩展名) | `default` / `csv` / `json` | `default`/`csv` 生成 `apiChange-res{N}.csv`;`json` 生成 `apiChange-res{N}.json` |
1377
+
1378
+ **示例:**
1379
+
1380
+ ```bash
1381
+ # 工程级扫描,输出到控制台
1382
+ devecocli check compat --source-version "<source_version>" --target-version "<target_version>"
1383
+
1384
+ # 输出 JSON 到控制台
1385
+ devecocli check compat --format json --source-version "<source_version>" --target-version "<target_version>"
1386
+
1387
+ # 输出报告到目录(默认 csv)
1388
+ devecocli check compat --output-path ./report --source-version "<source_version>" --target-version "<target_version>"
1389
+
1390
+ # 输出 JSON 报告到目录(生成 apiChange-res{N}.json)
1391
+ devecocli check compat --output-path ./report --format json --source-version "<source_version>" --target-version "<target_version>"
1392
+
1393
+ # 输出报告到指定文件
1394
+ devecocli check compat --output-path ./report.json --format json --source-version "<source_version>" --target-version "<target_version>"
1395
+
1396
+ # 文件级扫描
1397
+ devecocli check compat ./entry/src/main/ets/pages/Index.ets --source-version "<source_version>" --target-version "<target_version>"
1398
+
1399
+ # 模块级扫描
1400
+ devecocli check compat --modules entry har1 --source-version "<source_version>" --target-version "<target_version>"
1401
+ ```
1402
+
1403
+ ## 常见问题
1404
+
1405
+ [FAQ](https://gitcode.com/openharmony-sig/deveco-cli/wiki/FAQ.md)
1406
+
1407
+ ## 开发
1408
+
1409
+ ```bash
1410
+ npm install
1411
+ npm run dev
1412
+ npm start -- <command>
1413
+ npm run lint
1414
+ npm run format
1415
+ npm run build
1416
+ ```
1417
+
1418
+ - 架构与目录说明见 [`AGENTS.md`](./AGENTS.md)
1419
+ - 如需参与维护,建议先阅读 `AGENTS.md` 中的约定与架构说明
1420
+
1421
+ ## 许可证
1422
+
1423
+ [MIT](./LICENSE)