<div align="center"> <h1>DevEco CLI</h1> <p>一个面向 HarmonyOS 应用开发的统一命令行入口。</p> <p> <a href="https://www.npmjs.com/package/@ah-plugins/dsh-deveco-cli"><img src="https://img.shields.io/npm/v/@ah-plugins/dsh-deveco-cli.svg" alt="NPM Version" /></a> <a href="https://www.npmjs.com/package/@ah-plugins/dsh-deveco-cli"><img src="https://img.shields.io/npm/dm/@ah-plugins/dsh-deveco-cli.svg" alt="NPM Downloads" /></a> <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/Node.js-%3E%3D22-green.svg" alt="Node.js" /></a> <img src="https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-blue.svg" alt="Platform" /> <a href="https://developer.huawei.com/consumer/cn/download/"><img src="https://img.shields.io/badge/DevEco%20Studio-%3E%3D6.0.0-orange.svg" alt="DevEco Studio" /></a> <img src="https://img.shields.io/badge/Command%20Line%20Tools-%3E%3D26.0.0-orange.svg" alt="Command Line Tools" /> <a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License" /></a> </p> </div>
DevEco CLI 将 DevEco Studio 工具链统一封装为一个 CLI,内置 ohpm、hvigor、hdc、emulator、hilog,同时集成 HarmonyOS 技能安装、项目脚手架、本地 HarmonyOS 文档检索和 MCP 服务。
> 关于数据采集与隐私(遥测打点内容、存储加密、上报及关闭方式),请参阅 [PRIVACY.md](./PRIVACY.md)。
快速开始
前置要求
- 操作系统为
macOS、Windows或Linux(需配置对应环境变量) - 安装
Node.js,推荐使用22及以上版本 - DevEco Studio >= 6.0.0 或 Command Line Tools >= 26.0.0
- macOS:必须安装在 ~/Applications 或 /Applications 目录下。
安装
npm install -g @ah-plugins/dsh-deveco-cli@latest安装后可以通过以下命令更新到最新版本:
devecocli update最短工作流
devecocli create --app-name MyApp
cd MyApp
devecocli run
devecocli log --level E文档检索
devecocli docs search List
devecocli docs read harmonyos-guides/application-models/arkts-page-start-overview更多命令和参数可通过 devecocli --help 或各子命令的 --help 查看。
环境变量
devecocli 当需要使用非默认安装路径、多版本并存时固定选型,Command Line Tools或在Linux下运行时,可通过以下环境变量显式指定工具链根:
| 名称 | 说明 |
|---|---|
DEVECO_CLI_STUDIO_PATH | 显式指定 DevEco Studio 安装根,优先级最高 |
DEVECO_CLI_CLT_PATH | 显式指定 Command Line Tools 安装根 |
完整优先级链:
DEVECO_CLI_STUDIO_PATH > DEVECO_CLI_CLT_PATH > Auto_Detect平台与版本约束
| 平台 | DevEco Studio Auto_Detect | Command Line Tools | 最低版本 |
|---|---|---|---|
| Windows | 支持 | 可选 | Studio 6.0.0 / CLT 26.0.0 |
| macOS | 支持 | 可选 | 同上 |
| Linux | 不支持 | 必选 | CLT 26.0.0 |
使用示例
# 设置 DevEco Studio
export DEVECO_CLI_STUDIO_PATH="/Applications/DevEco-Studio.app" (可带或不带尾部 Contents)
devecocli device list
# 设置 CLT
export DEVECO_CLI_CLT_PATH=/opt/command-line-tools
devecocli device listAI Agent 集成
DevEco CLI 支持通过命令行将自身技能添加到 Agent 中。下面以 opencode 为例展示最短流程:
# 1. 给 opencode 安装 deveco-cli 技能
devecocli init --agent opencode
# 2. 给 opencode 在当前 HarmonyOS 项目配置 MCP
devecocli init --mcp --agent opencode --project ./MyApp
# 3. 进入项目并启动 opencode
cd MyApp
opencode也支持 atomcode等 Agent,使用方式相同:
# 给 atomcode 安装技能
devecocli init --agent atomcode如果 Agent 不在 --agent 参数取值范围内,可使用 --path 参数进行添加,参考如下命令:
devecocli init --path D:\work\ARKTS\NewData进入 Agent 后可以直接描述任务,例如:
Build this project in release mode and run it on my emulatorTail the last error logs from this appCheck for syntax errors in src/main/ets/pages/Index.ets
说明:
- 在
Windows上搭配devecocli使用opencode时,推荐将powershell 7 作为默认执行终端。 - 在
Windows上用opencode执行devecocli build/emulator start等指令时,若命令结束后终端无法正常退出,建议将默认终端切换为powershell 7
DeepSeek Harness 插件
DevEco CLI 同时发布为 dsh bundle。安装后,DeepSeek Harness 会注册 deveco_cli 工具,供 Agent 以结构化参数调用 devecocli:
dsh plugin add @ah-plugins/dsh-deveco-cli
dsh web工具参数为 command、args 和可选 cwd。args 是 argv 数组,不是 shell 字符串:
{
"command": "docs",
"args": ["search", "List", "--format", "json"],
"cwd": "/path/to/HarmonyOSProject"
}该插件复用当前包内的 dist/cli.js,因此发布前需要执行 npm run build。
常用命令
| 命令 | 用途 |
|---|---|
devecocli create | 创建新的 HarmonyOS 项目 |
devecocli build | 构建项目并产出 .hap / .hsp / .har / .app |
devecocli check lint | 检查代码规范并输出实践建议与报告 |
devecocli run | 安装并运行应用 |
devecocli device list | 查看当前连接设备 |
devecocli emulator list | 查看本地模拟器实例 |
devecocli ui layout | 导出设备屏幕上的 UI 节点树(布局、坐标、节点 ID) |
devecocli ui window list | 查看设备窗口列表(为 ui layout / ui click 等提供窗口 ID) |
devecocli ui screenshot | 对真机或模拟器执行 UI 截图 |
devecocli ui click | 点击指定坐标或节点 ID |
devecocli ui swipe | 自定义滑动(指定起点、终点和速度) |
devecocli ui text | 输入文本到焦点或指定位置 |
devecocli log | 查看 hilog 或崩溃日志 |
devecocli docs search | 搜索本地 HarmonyOS 文档 |
devecocli init | 安装内置技能或配置 MCP |
devecocli skills | 管理 HarmonyOS 技能市场中的技能 |
devecocli signature generate | 自动生成调试签名材料并配置到项目 |
devecocli check compat | 扫描源代码在两个 SDK 版本之间的 API 变更 |
命令集
help
查看版本、帮助信息以及所有子命令
命令格式:
devecocli help# 返回结果
Usage: devecocli [options] [command]
HarmonyOS application development command line tool
Options:
-V, --version output the version number
-h, --help display help for command
Commands:
build [options] Build the HarmonyOS project
run [options] Build and run the project on a connected device
update Update deveco-cli to the latest version
device Manage connected devices
emulator Manage emulator instances
auth Authentication commands (login, logout, status, team)
ui Inspect and interact with UI on a connected device
skills Manage HarmonyOS skills
log [options] Obtain device application logs
create [options] Scaffold a new HarmonyOS application project
init [options] Install the deveco-cli skill or configure the deveco-mcp server into AI agents
serve Host bundled auxiliary protocol servers
docs [options] Search and read HarmonyOS documentation from local docs directory
check Run DevEco project checks
signature Generate application signature
help [command] display help for commandinit
将deveco-cli Skill 或者 MCP 服务配置到智能体中
命令格式:
devecocli init --agent <agents> --project <path> --path <path> --skill --mcp --force参数:
| 参数名 | 说明 |
|---|---|
| --agent | 可选,智能体名称,多个智能体名称以英文逗号分隔。缺省时配置到所有已检测到的智能体中 |
| --project | 可选,指定工程路径,将deveco-cli Skill 或 MCP 服务安装到该工程项目中 |
| --path | 可选,指定 deveco-cli Skill 的配置路径。不可与 --project 、--agent 、 --mcp 同时使用 |
| --skill | 可选,安装 deveco-cli Skill。不可与 --mcp 同时使用。--mcp 与 --skill 都缺省时,执行 --skill |
| --mcp | 可选,配置 MCP 服务,与 --project 一起使用表示配置工程级 MCP 服务,独立使用表示配置用户级 MCP 服务。不可与 --skill 同时使用 |
| -f, --force | 可选,当目标位置已存在 deveco-cli Skill 或 MCP 服务时,覆盖重装 |
示例:
# 配置Skill
devecocli init -f # 安装或更新deveco-cli Skill
devecocli init --skill
devecocli init --agent agentname # agentname需替换为实际的智能体名称
devecocli init --path D:\work\ARKTS\NewData -f
# 配置MCP
devecocli init --mcp
devecocli init --mcp --agent agentname # agentname需替换为实际的智能体名称
devecocli init --mcp --project D:\work\ARKTS\NewData -fdocs search
将关键词搜索版本说明、指南、API参考、最佳实践、FAQ 、变更预告等中的内容
命令格式:
devecocli docs search <keywords...> --catalog <name> --format <fmt> --limit <n>参数:
| 参数名 | 说明 |
|---|---|
| keywords... | 必选,搜索关键词,多个关键词用空格隔开 |
| --catalog | 可选,文档类别,取值包含harmonyos-releases(版本说明)、 harmonyos-guides(指南)、harmonyos-references(API参考)、best-practices(最佳实践)、harmonyos-faqs(FAQ)、harmonyos-roadmap(变更预告)、all(所有分类,默认) |
| --format | 可选,控制输出格式,取值包括 default 、json ,默认为default ,输出结果包括文档ID、标题、文档的概括内容 |
| --limit | 可选,设置搜索结果返回条数,默认为10 |
示例:
devecocli docs search 沉浸光感
devecocli docs search '@State' '@Prop' --catalog best-practices --limit 10
devecocli docs search Row Column --format jsondocs read
按文档ID查询文档的完整内容
命令格式:
devecocli docs read <documentId> 参数:
| 参数名 | 说明 |
|---|---|
| documentId | 必选,文档ID |
示例:
devecocli docs read 开发指南/应用框架/UI_Design_Kit_UI设计套件/沉浸光感/ui-design-hds-component-materialdocs catalog
查询文档分类和分类名称
命令格式:
devecocli docs catalog --format <fmt> 参数:
| 参数名 | 说明 |
|---|---|
| --format | 可选,输出格式,default 或 json ,默认为 default |
示例:
devecocli docs catalog
devecocli docs catalog --format jsoncreate
创建 HarmonyOS 应用工程,仅支持创建工程模板中的 Empty Ability 模板
命令格式:
devecocli create --app-name <name> --project-path <path> --bundle-name <bundle> --api-level <level> 参数:
| 参数名 | 说明 |
|---|---|
| --app-name | 必选,应用名称 |
| --project-path | 可选,工程路径,默认为:./<appname> |
| --bundle-name | 可选,包名,默认为:com.example.<appname> ,appname 自动转为小写 |
| --api-level | 可选,API级别,最小值为17,最大值从安装的 Deveco Studio 的 HarmonyOS SDK 中自动获取 |
示例:
devecocli create --project-path ./MyApp --app-name MyApp
devecocli create --project-path ./MyApp --app-name MyApp --bundle-name com.acme.myapp --api-level 23
devecocli create --app-name MyAppauth login
登录华为开发者账号,打开浏览器完成授权。
命令格式:
devecocli auth login说明:
- 海外账户暂不支持
auth logout
登出并清除本地存储的凭据
命令格式:
devecocli auth logoutauth status
显示当前登录的用户
命令格式:
devecocli auth statusauth team list
列出当前用户已加入的团队
命令格式:
devecocli auth team list示例:
devecocli auth team listbuild
编译并打包 HarmonyOS 工程或工程中的模块
命令格式:
devecocli build --product <product> --modules <modules> --build-mode <mode>参数:
| 参数名 | 说明 |
|---|---|
| --product | 可选,产品的名称,默认为 default |
| --modules | 可选,模块的名称。如需指定模块的 target 信息,使用 module@target 形式。当工程中只有一个模块时,可缺省;当工程中存在多个模块,且仅存在一个 entry 类型的模块时,可缺省 |
| --build-mode | 可选,构建模式,默认为 debug |
示例:
devecocli build --build-mode release
devecocli build --modules entry library
devecocli build --modules library@phone
devecocli build --product oversea --modules entry --build-mode release说明:
- 选定模块的依赖会被自动解析和构建
- 执行
devecocli build --product <name>命令后,产物为.app - 执行
devecocli build --product <name> --modules <m1>命令后,产物为.hap/.hsp/.har
build clean
清理 HarmonyOS 项目的构建产物
命令格式:
devecocli build cleancheck compat
基于 DevEco Studio 自带的 apkanalyzer-apiscan 插件,扫描源代码在两个 SDK 版本之间的 API 变更情况。
子命令:
| 子命令 | 说明 |
|---|---|
devecocli check compat | 默认执行工程级扫描 |
devecocli check compat --modules <m1> [m2...] | 按模块扫描 |
devecocli check compat <file1> [file2...] | 按文件扫描(仅支持 .ets/.c/.cpp) |
devecocli check compat versions | 列出可用的目标 SDK 版本 |
命令格式:
devecocli check compat [files...] --source-version <ver> --target-version <ver> [--modules <m...>] [--format <default|csv|json>] [--output-path <path>] [--limit <n>]参数:
| 参数名 | 说明 |
|---|---|
--source-version | 必填,当前工程 SDK 版本 |
--target-version | 必填,目标 SDK 版本 |
--modules | 可选,指定扫描的模块(多个以空格分隔)。与文件参数互斥 |
--format | 可选,输出格式。default/csv/json。默认 default(控制台输出文本,文件输出 csv) |
--output-path | 可选,报告输出路径。目录或文件(扩展名必须与 --format 匹配) |
--limit | 可选,控制台显示的最大记录数,默认 100 |
版本号说明:
- 可用版本可通过
devecocli check compat versions查看 zsh环境下版本号需用引号包裹(包含括号),例如"<source_version>"、"<target_version>"
compat versions 参数:
| 参数名 | 说明 |
|---|---|
--format | 可选,输出格式。default 或 json。默认 default(文本输出,每行一个版本号) |
格式与输出组合:
| 场景 | 允许的 --format | 行为 |
|---|---|---|
控制台输出(无 --output-path) | default / json | default 输出文本表格,json 输出 JSON |
文件输出(--output-path <file>,扩展名必须匹配 --format) | default / csv / json | default/csv 写 .csv 文件;json 写 .json 文件 |
目录输出(--output-path <dir>,无扩展名) | default / csv / json | default/csv 生成 apiChange-res{N}.csv;json 生成 apiChange-res{N}.json |
示例:
# 工程级扫描,输出到控制台
devecocli check compat --source-version "<source_version>" --target-version "<target_version>"
# 输出 JSON 到控制台
devecocli check compat --format json --source-version "<source_version>" --target-version "<target_version>"
# 输出报告到目录(默认 csv)
devecocli check compat --output-path ./report --source-version "<source_version>" --target-version "<target_version>"
# 输出 JSON 报告到目录(生成 apiChange-res{N}.json)
devecocli check compat --output-path ./report --format json --source-version "<source_version>" --target-version "<target_version>"
# 输出报告到指定文件
devecocli check compat --output-path ./report.json --format json --source-version "<source_version>" --target-version "<target_version>"
# 文件级扫描
devecocli check compat ./entry/src/main/ets/pages/Index.ets --source-version "<source_version>" --target-version "<target_version>"
# 模块级扫描
devecocli check compat --modules entry har1 --source-version "<source_version>" --target-version "<target_version>"check lint
检查代码规范并输出实践建议与报告。
命令格式:
devecocli check lint [path]参数:
| 参数名 | 说明 | | ---------------------------- | --------------------------------------------------------------------- | | [path] | 可选,待检查的文件或目录;默认使用 build-profile.json5 所在的项目根目录,否则使用当前目录 | | --config-path <path> | Code Linter 配置文件路径,仅支持 .json 或 .json5;默认使用待检查项目根目录下的 code-linter.json5,显式指定时必须与待检查路径属于同一项目 | | --fix | 自动修复可修复的问题 | | --incremental | 仅检查 Git 未提交文件 | | --product <name> | build-profile.json5 中定义的 product,默认为 default | | --format <default\|json> | 完整报告格式;default 输出 Markdown,json 输出 JSON;要求 DevEco Studio ≥ 6.1.0 | | --output-path <path> | 完整报告文件或目录,目录形式会自动生成带时间戳的报告文件;要求 DevEco Studio ≥ 6.1.0 | | --limit <number> | 未指定 --output-path 时,限制终端显示的问题数量 |
emulator 版本要求: DevEco Studio ≥ 6.1.0
emulator list
查看模拟器实例
命令格式:
devecocli emulator list [--format <table|json>]参数:
| 参数名 | 说明 |
|---|---|
--format | 可选,控制终端输出格式,取值为 table 或 json,默认为 table |
示例:
devecocli emulator list
devecocli emulator list --format jsonemulator start
启动模拟器。首次使用时,需要签署 HarmonyOS 软件许可与服务协议,具体请参考 emulator license
命令格式:
devecocli emulator start [names...]参数:
| 参数名 | 说明 |
|---|---|
| \[names...] | 必选,模拟器实例名称,多个名称用空格隔开。若名称中带有空格,则名称需要添加英文引号 |
示例:
devecocli emulator start Phone
devecocli emulator start Phone1 Phone2说明:
emulator start命令仅支持启动release版本的模拟器
emulator stop
关闭模拟器
命令格式:
devecocli emulator stop [names...]参数:
| 参数名 | 说明 |
|---|---|
| \[names...] | 必选,模拟器实例名称,多个名称用空格隔开。若名称中带有空格,则名称需要添加英文引号 |
示例:
devecocli emulator stop Phone
devecocli emulator stop 127.0.0.1:5555emulator 场景操作
控制运行中的模拟器实例,直接映射 DevEco Studio 内置 Emulator 公开命令行参数。新增场景控制命令要求 Emulator 7.0 或更高版本;低版本会直接提示升级。截图不属于模拟器场景操作,统一通过 devecocli ui screenshot 执行。
示例:
devecocli emulator shake --target Phone
devecocli emulator power --target Phone
devecocli emulator rotate left --target Phone
devecocli emulator volume up --target Phone
devecocli emulator fold half-open --target Phone
devecocli emulator battery --target Phone --level 90
devecocli emulator battery --target Phone --status charging
devecocli emulator geolocation --target Phone --longitude 116.400244
devecocli emulator scene outdoorRunning --target Phone
devecocli emulator sensor --target Phone --heartrate 80说明:
--target支持模拟器名称或127.0.0.1:<port>序列号。battery --level会自动查询模拟器当前充电状态:充电时取值范围为整数[0, 100],未充电时为[1, 100]。battery --status取值为charging或discharging。geolocation支持--longitude、--latitude、--altitude、--direction。scene取值为outdoorRunning、outdoorCycling、drivingNavigation。sensor支持--light-intensity、--humidity、--temperature、--steps、--heartrate。fold <state>会根据目标模拟器的设备类型校验状态,设备与参数必须匹配:
| 设备类型 | 支持的 state | |
|---|---|---|
| --- | --- | |
foldable | open、half-open、close | |
2in1_foldable | open、vertical-open、half-open、close | |
triplefold | single、double、`triple |
…