From adac20f895c5f53c73f18ebff48513b9ca637168 Mon Sep 17 00:00:00 2001 From: zengyawen Date: Fri, 2 Dec 2022 20:16:01 +0800 Subject: [PATCH] update application-models Signed-off-by: zengyawen --- zh-cn/application-dev/tools/Readme-CN.md | 9 + zh-cn/application-dev/tools/aa-tool.md | 113 +++++++ zh-cn/application-dev/tools/anm-tool.md | 77 +++++ zh-cn/application-dev/tools/bm-tool.md | 284 ++++++++++++++++++ zh-cn/application-dev/tools/cem-tool.md | 90 ++++++ .../tools/figures/anm-dump-A.png | Bin 0 -> 528 bytes .../tools/figures/cem-dump-e.png | Bin 0 -> 7086 bytes .../tools/figures/cem-publish-all.png | Bin 0 -> 1450 bytes .../tools/figures/cem-publish-event.png | Bin 0 -> 1319 bytes zh-cn/application-dev/tools/packing-tool.md | 87 ++++++ .../public_sys-resources/icon-caution.gif | Bin 0 -> 580 bytes .../public_sys-resources/icon-danger.gif | Bin 0 -> 580 bytes .../tools/public_sys-resources/icon-note.gif | Bin 0 -> 394 bytes .../public_sys-resources/icon-notice.gif | Bin 0 -> 406 bytes .../tools/public_sys-resources/icon-tip.gif | Bin 0 -> 253 bytes .../public_sys-resources/icon-warning.gif | Bin 0 -> 580 bytes zh-cn/application-dev/tools/unpacking-tool.md | 54 ++++ 17 files changed, 714 insertions(+) create mode 100644 zh-cn/application-dev/tools/Readme-CN.md create mode 100644 zh-cn/application-dev/tools/aa-tool.md create mode 100644 zh-cn/application-dev/tools/anm-tool.md create mode 100644 zh-cn/application-dev/tools/bm-tool.md create mode 100644 zh-cn/application-dev/tools/cem-tool.md create mode 100644 zh-cn/application-dev/tools/figures/anm-dump-A.png create mode 100644 zh-cn/application-dev/tools/figures/cem-dump-e.png create mode 100644 zh-cn/application-dev/tools/figures/cem-publish-all.png create mode 100644 zh-cn/application-dev/tools/figures/cem-publish-event.png create mode 100644 zh-cn/application-dev/tools/packing-tool.md create mode 100644 zh-cn/application-dev/tools/public_sys-resources/icon-caution.gif create mode 100644 zh-cn/application-dev/tools/public_sys-resources/icon-danger.gif create mode 100644 zh-cn/application-dev/tools/public_sys-resources/icon-note.gif create mode 100644 zh-cn/application-dev/tools/public_sys-resources/icon-notice.gif create mode 100644 zh-cn/application-dev/tools/public_sys-resources/icon-tip.gif create mode 100644 zh-cn/application-dev/tools/public_sys-resources/icon-warning.gif create mode 100644 zh-cn/application-dev/tools/unpacking-tool.md diff --git a/zh-cn/application-dev/tools/Readme-CN.md b/zh-cn/application-dev/tools/Readme-CN.md new file mode 100644 index 0000000000..d65d64cc4d --- /dev/null +++ b/zh-cn/application-dev/tools/Readme-CN.md @@ -0,0 +1,9 @@ +# 工具 + +- [aa工具](aa-tool.md) +- [bm工具](bm-tool.md) +- 打包拆包工具 + - [打包工具](packing-tool.md) + - [拆包工具](unpacking-tool.md) +- [cem工具](cem-tool.md) +- [anm工具](anm-tool.md) diff --git a/zh-cn/application-dev/tools/aa-tool.md b/zh-cn/application-dev/tools/aa-tool.md new file mode 100644 index 0000000000..2d4a1ff605 --- /dev/null +++ b/zh-cn/application-dev/tools/aa-tool.md @@ -0,0 +1,113 @@ +# aa工具 + + +Ability assistant(Ability助手,简称为aa),是实现应用及测试用例启动功能的工具,为开发者提供基本的应用调试和测试的能力。通过该工具,开发者可以在hdc shell中,发送命令以执行各种系统操作,例如启动应用组件、强制停止进程、打印应用组件相关信息等。 + + +- help + 用于显示aa相关的帮助信息。 + + 返回值: + + 返回对应的帮助信息。 + + 使用方法: + + + ```bash + aa help + ``` + + +- start + 用于启动一个应用组件,目标组件可以是FA模型的PageAbility和ServiceAbility组件,也可以是Stage模型的UIAbility和ServiceExtensionAbility组件,且目标组件相应配置文件中的visible标签不能配置为false。 + + | 参数 | 参数说明 | + | -------- | -------- | + | -h/--help | 帮助信息。 | + | -d | 可选参数,deviceId。 | + | -a | 必选参数,abilityName。 | + | -b | 必选参数,bundleName。 | + | -D | 可选参数,调试模式。 | + + 返回值: + + 当启动成功时,返回"start ability successfully.";当启动失败时,返回"error: failed to start ability.",同时会包含相应的失败信息。 + + 使用方法: + + + ```bash + aa start [-d ] -a -b [-D] + ``` + +- stop-service + 用于停止ServiceAbility。 + + | 参数 | 参数说明 | + | -------- | -------- | + | -h/--help | 帮助信息。 | + | -d | 可选参数,deviceId。 | + | -a | 必选参数,abilityName。 | + | -b | 必选参数,bundleName。 | + + 返回值: + + 当成功停止ServiceAbility时,返回"stop service ability successfully.";当停止失败时,返回"error: failed to stop service ability."。 + + 使用方法: + + + ```bash + aa stop-service [-d ] -a -b + ``` + +- dump + 用于打印应用组件的相关信息。 + | 参数 | 二级参数 | 参数说明 | + | -------- | -------- | -------- | + | -h/--help | - | 帮助信息。 | + | -a/--all | - | 打印所有mission内的应用组件信息。 | + | -l/--mission-list | type(缺省打印全部) | 打印任务栈信息。
可取值:
- NORMAL
- DEFAULT_STANDARD
- DEFAULT_SINGLE
- LAUNCHER | + | -e/--extension | elementName | 打印扩展组件信息。 | + | -u/--userId | UserId | 打印指定UserId的栈信息,需要和其他参数组合使用,例如aa dump -a -u 100、aa dump -d -u 100。 | + | -d/--data | - | 打印DataAbility相关信息。 | + | -i/--ability | AbilityRecord ID | 打印指定应用组件详细信息。 | + | -c/--client | - | 打印应用组件详细信息,需要和其他参数组合使用,例如aa dump -a -c、aa dump -i 21 -c。 | + + 使用方法: + + + ```bash + aa dump -a + ``` + + ![aa-dump-a](figures/aa-dump-a.png) + + + ```bash + aa dump -l + ``` + + ![aa-dump-l](figures/aa-dump-l.png) + + + ```bash + aa dump -i 12 + ``` + + ![aa-dump-i](figures/aa-dump-i.png) + +- force-stop + 通过bundleName强制停止一个进程。 + + 返回值: + + 当成功强制停止该进程时,返回"force stop process successfully.";当强制停止失败时,返回"error: failed to force stop process."。 + + 使用方法: + + + ```bash + aa force-stop + ``` diff --git a/zh-cn/application-dev/tools/anm-tool.md b/zh-cn/application-dev/tools/anm-tool.md new file mode 100644 index 0000000000..2c0967f353 --- /dev/null +++ b/zh-cn/application-dev/tools/anm-tool.md @@ -0,0 +1,77 @@ +# anm工具 + +Advanced Notification Manager(通知管理工具,简称anm)是实现通知打印、设置通知参数等功能的工具,为开发者提供基本的通知调试和测试能力。通过该工具,开发者可以在hdc shell中,发送命令以执行各种系统操作,例如打印已发布通知详细信息、设置通知缓存个数、使能通知等。 + +### help + +* 介绍 + + 打印帮助信息。 + +* 用法 + + ``` + anm help + ``` + +### dump + +* 介绍 + + 打印通知相关信息。 + +* 用法 + + ``` + anm dump [] + ``` + + 参数如下表所示 + + | 参数 | 参数说明 | + | ---------------- | -------------------------------- | + | -A/--active | 打印所有活跃的通知信息 | + | -R/--recent | 打印最近的通知信息 | + | -D/--distributed | 打印来自其他设备的分布式通知信息 | + | -b/--bundle | 可选参数,设置指定的包名打印 | + | -u/--user-id | 可选参数,设置指定的用户ID打印 | + | -h/--help | 帮助信息 | + +* 示例 + + ``` +anm dump -A + ``` + + 打印活跃的通知信息。 + + ![anm-dump-A](figures/anm-dump-A.png) + + +### Setting + +* 介绍 + + 设置通知参数。 + +* 用法 + + ``` + anm setting [] + ``` + + 参数如下表所示 + + | 参数 | 参数说明 | + | ------------------------ | ------------------------------------ | + | -c/--recent-count | 设置保存在内存中的最近通知的最大个数 | + | -e/--enable-notification | 设置通知使能开关 | + | -h/--help | 帮助信息 | + +* 示例 + + ``` + anm setting -c 100 + ``` + + 设置保存在内存中的最近通知的最大数为100个。 \ No newline at end of file diff --git a/zh-cn/application-dev/tools/bm-tool.md b/zh-cn/application-dev/tools/bm-tool.md new file mode 100644 index 0000000000..6b7fade381 --- /dev/null +++ b/zh-cn/application-dev/tools/bm-tool.md @@ -0,0 +1,284 @@ +# bm工具 + + +Bundle Manager(包管理工具,简称bm)是实现应用安装、卸载、更新、查询等功能的工具,bm为开发者提供基本的应用安装包的调试能力,开发者可以在hdc shell中,执行bm命令以触发各种系统操作,例如:安装应用,卸载应用,查询安装包信息等。 + + + **表1** bm工具命令列表 + +| 命令 | 描述 | +| -------- | -------- | +| help | 帮助命令,显示bm支持的命令信息 | +| install | 安装命令,用来安装应用 | +| uninstall | 卸载命令,用来卸载应用 | +| dump | 查询命令,用来查询应用的相关信息 | +| clean | 清理命令,用来清理应用的缓存和数据 | +| enable | 使能命令,用来使能应用,使能后应用可以继续使用 | +| disable | 禁用命令,用来禁用应用,禁用后应用无法使用 | +| get | 获取udid命令,用来获取设备的udid | +| quickfix | 快速修复相关命令,用来执行补丁相关操作,如补丁安装、补丁查询 | + + +## 帮助命令 + + **表2** help命令列表 + +| 命令 | 描述 | +| -------- | -------- | +| bm help | 显示bm工具的能够支持的命令信息 | + +示例: + + +```bash +# 显示帮助信息 +bm help +``` + + +## 安装命令 + +```bash +bm install [-h] [-p path] [-u userId] [-r] [-w waitting-time] +``` + + + **表3** 安装命令列表 + +| 命令 | 是否必选 | 描述 | +| -------- | -------- | -------- | +| -h | 否,默认输出帮助信息 | 显示install支持的命令信息 | +| -p | 是 | 安装HAP包路径,支持指定路径和多个HAP同时安装 | +| -u | 否,默认安装到当前所有用户上 | 给指定用户安装一个HAP包 | +| -r | 否,默认值为覆盖安装 | 覆盖安装一个HAP包 | +| -w | 否,默认等待5s | 安装HAP包时指定bm工具等待时间,最小的等待时长为5s,最大的等待时长为600s, 默认缺省为5s | + + +示例: + +```bash +bm install -p /data/app/ohosapp.hap -u 100 -w 5s -r +// 执行结果 +install bundle successfully. +``` + + +## 卸载命令 + +```bash +bm uninstall [-h help] [-n bundleName] [-m moduleName] [-u userId] [-k] +``` + + + **表4** 卸载命令列表 + +| 命令 | 是否必选 | 描述 | +| -------- | -------- | -------- | +| -h | 否,默认输出帮助信息 | 显示uninstall支持的命令信息 | +| -n | 是 | 指定包名卸载应用 | +| -m | 否,默认卸载所有模块 | 指定卸载应用的一个模块 | +| -u | 否,默认卸载当前所有用户下该应用 | 指定用户卸载应用 | +| -k | 否,默认卸载应用时不保存应用数据 | 卸载应用时保存应用数据 | + + +示例: + +```bash +bm uninstall -n com.ohos.app -m com.ohos.app.MainAbility -u 100 -k +// 执行结果 +uninstall bundle successfully. +``` + + +## 查询命令 + +```bash +bm dump [-h help] [-a] [-n bundleName] [-s shortcutInfo] [-u userId] [-d deviceId] +``` + + +注:-u未指定情况下,默认为所有用户。 + + + **表5** 查询命令列表 + +| 命令 | 是否必选 | 描述 | +| -------- | -------- | -------- | +| -h | 否,默认输出帮助信息 | 显示dump支持的命令信息 | +| -a | 是 | 查询系统已经安装的所有应用 | +| -n | 是 | 查询指定包名的详细信息 | +| -s | 是 | 查询指定包名下的快捷方式信息 | +| -d | 否,默认查询当前设备 | 查询指定设备中的包信息 | +| -u | 否,默认查询当前设备上的所有用户 | 查询指定用户下指定包名的详细信息 | + + +示例: + +```bash +# 显示所有已安装的包名 +bm dump -a +# 查询该应用的详细信息 +bm dump -n com.ohos.app -u 100 +# 查询该应用的快捷方式信息 +bm dump -s com.ohos.app -u 100 +# 查询跨设备应用信息 +bm dump -n com.ohos.app -d xxxxx +``` + + +## 清理命令 + +```bash +bm clean [-h] [-c] [-n bundleName] [-d] [-u userId] +``` + + +注:-u未指定情况下,默认为当前活跃用户。 + + + **表6** 清理命令列表 + +| 命令 | 描述 | +| -------- | -------- | +| -h | 显示clean支持的命令信息 | +| -c -n | 清除指定包名的缓存数据 | +| -d -n | 清除指定包名的数据目录 | +| -u | 清除指定用户下包名的缓存数据 | + + +示例: + +```bash +# 清理该应用下的缓存数据 +bm clean -c -n com.ohos.app -u 100 +// 执行结果 +clean bundle cache files successfully. +# 清理该应用下的用户数据 +bm clean -d -n com.ohos.app -u 100 +// 执行结果 +clean bundle data files successfully. +``` + + +## 使能命令 + +```bash +bm enable [-h] [-n bundleName] [-a abilityName] [-u userId] +``` + + +注:-u未指定情况下,默认为当前活跃用户。 + + + **表7** 使能命令列表 + +| 命令 | 描述 | +| -------- | -------- | +| -h | 显示enable支持的命令信息 | +| -n | 使能指定包名的应用 | +| -a | 使能指定包名下的元能力模块 | +| -u | 使能指定用户和包名的应用 | + + +示例: + +```bash +# 使能该应用 +bm enable -n com.ohos.app -a com.ohos.app.MainAbility -u 100 +// 执行结果 +enable bundle successfully. +``` + + +## 禁用命令 + +```bash +bm disable [-h] [-n bundleName] [-a abilityName] [-u userId] +``` + + +注:-u未指定情况下,默认为当前活跃用户。 + + + **表8** 禁用命令列表 + +| 命令 | 描述 | +| -------- | -------- | +| -h | 显示disable支持的命令信息 | +| -n | 禁用指定包名的应用 | +| -a | 禁用指定包名下的元能力模块 | +| -u | 禁用指定用户和包名下的应用 | + +示例: + +```bash +# 禁用该应用 +bm disable -n com.ohos.app -a com.ohos.app.MainAbility -u 100 +// 执行结果 +disable bundle successfully. +``` + + +## 获取udid + +```bash +bm get [-h] [-u] +``` + + + **表9** 获取udid命令列表 + +| 命令 | 描述 | +| -------- | -------- | +| -h | 显示get支持的命令信息 | +| -u | 获取设备的udid | + + +示例: + +```bash +# 获取设备的udid +bm get -u +// 执行结果 +udid of current device is : +23CADE0C +``` + + +## 快速修复 + +```bash +bm quickfix [-h] [-a -f filePath] [-q -b bundleName] +``` + + + **表10** 快速修复命令列表 + +| 命令 | 描述 | +| -------- | -------- | +| -h | 显示quickfix支持的命令信息 | +| -a -f | 执行快速修复补丁安装命令,file-path对应hqf文件,支持传递1个或多个hqf文件,或传递hqf文件所在的目录。 | +| -q -b | 根据包名查询补丁信息,bundle-name对应包名。 | + + +示例: + +```bash +# 根据包名查询补丁包信息 +bm quickfix -q -b com.ohos.app +// 执行结果 +// Information as follows: +// ApplicationQuickFixInfo: +// bundle name: com.ohos.app +// bundle version code: xxx +// bundle version name: xxx +// patch version code: x +// patch version name: +// cpu abi: +// native library path: +// type: +# 快速修复补丁安装 +bm quickfix -a -f /data/app/ +//执行结果 +apply quickfix succeed. +``` diff --git a/zh-cn/application-dev/tools/cem-tool.md b/zh-cn/application-dev/tools/cem-tool.md new file mode 100644 index 0000000000..f0edf2e558 --- /dev/null +++ b/zh-cn/application-dev/tools/cem-tool.md @@ -0,0 +1,90 @@ +# cem工具 + +Common Event Manager(公共事件管理工具, 简称cem)是实现公共事件信息打印、发布公共事件等功能的工具,为开发者提供基本的公共事件调试和测试能力。通过该工具,开发者可以在hdc shell中,发送命令执行各种系统操作,例如打印所有公共事件订阅者、已发送公共事件和接受者、模拟发布公共事件等。 + +## cem调试助手 + +### help + +* 介绍 + + 打印帮助信息。 + +* 用法 + + ``` + cem help + ``` + +### publish + +* 介绍 + + 发布公共事件。 + +* 用法 + + ``` + cem publish [] + ``` + + 参数如下表所示 + + | 参数 | 参数说明 | + | ------------ | ------------------------------------------ | + | -e/--event | 必选参数,发布事件名称 | + | -s/--sticky | 可选参数,发布粘性事件,默认发布非粘性事件 | + | -o/--ordered | 可选参数,发布有序事件,默认发布无序事件 | + | -c/--code | 可选参数,公共事件结果码 | + | -d/--data | 可选参数,公共事件携带数据 | + | -h/--help | 帮助信息 | + +* 示例 + + ``` +cem publish --event "testevent" + ``` + + 发布名称为testevent的公共事件 + + ![cem-publish-event](figures/cem-publish-event.png) + + ``` +cem publish -e "testevent" -s -o -c 100 -d "this is data" + ``` + + 发布名称为testevent的粘性有序公共事件,该事件的结果码为100,携带数据内容为“this is data” + + ![cem-publish-all](figures/cem-publish-all.png) + +### dump + +* 介绍 + + 打印公共事件相关信息。 + +* 用法 + + ``` + cem dump [] + ``` + + 参数如下表所示 + + | 参数 | 参数说明 | + | ---------- | -------------------------------------------- | + | -a/--all | 打印开机以来所有已发送的公共事件及其具体信息 | + | -e/--event | 查询特定名称事件的具体信息 | + | -h/--help | 帮助信息 | + +* 示例 + + ``` + cem dump -e "testevent" + ``` + +​ 打印公共事件名称为testevent的具体信息。 + +​ ![cem-dump-e](figures/cem-dump-e.png) + + diff --git a/zh-cn/application-dev/tools/figures/anm-dump-A.png b/zh-cn/application-dev/tools/figures/anm-dump-A.png new file mode 100644 index 0000000000000000000000000000000000000000..368e6f2d810976486e786a4c8f0603a87ad48540 GIT binary patch literal 528 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 literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/tools/figures/cem-publish-all.png b/zh-cn/application-dev/tools/figures/cem-publish-all.png new file mode 100644 index 0000000000000000000000000000000000000000..99526e1f7245d101914354e2a89d5e97d710c27f GIT binary patch literal 1450 zcmV;b1y%ZqP) zOLnU;3_!^{9kM8v&H}QhzClk?;@XyE`3KxPY5~hamcKI2V_nzpeczXD+ZF(TQP2(n z{P1`_pWm;4s1yLun|=n0001b@NcvNa2{SWoA7VYf&IV({xdf< z%ZH8`R2<`f!~*SLKk$J6%uVg``RJG#k>$zRWZ!pe1~3>;9ldiMZvF0ewrvStqZJs9 zX5&d~hn4al4Wo4**sncO9hJ(UXBk=Ryhpb)v@f;k{mw0X=k`n48Y6DoCO)TmrZoT2 z9CaKufaxLMOG-bj{h*v&{Riu)iSagtww7PZKV$OF6pL?NJ`x)L)B3L_ZSGk~zZUYP^pbB` z+m{}`S*2r+DcZYI#bQJyooi`&D>dzPmIlniZ0|HupOU;weZK{g{2AI04`S-&9Dd zS9&W|W6U}3-cYn$N-oL2H=2;d5zmT838U@fWwd|6wQ22NE#-SXXk%2l=cRmd>0^Z<#T~TwQ=6P(ay;}}>eSlM zVn46^<1>=nFuk>Wv_4xCi~VZl(R!0xjZlWQY+9CGuKj6|kHvqz?VDDoR`Np`G5c!! z6{&q`S$0P*@#|77+W`Q;RXF|0U$KpA0001I&+%slP1>UxE{GM@- z??GW4bP#!7pB-9{9hB;BY2606E5w)q;16`90OR0vqjMx2}$BF%hqr|;xW%!%nIVLkb+rheM;wdfz_X{jHn{5}3v>-4$YiAkwvJoGyG z4&Y2Y)^+`kRmQL)<_;N`(&yx8?pyQM2J&Zl>FTLTi;E3Kd=93 z(pa$SU-C}1%D+^<)U_JvYsm+=3-6`uVGGvH9a(fUiI;`IP`vS^xk507*qoM6N<$ Ef}@4z%>V!Z literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/tools/figures/cem-publish-event.png b/zh-cn/application-dev/tools/figures/cem-publish-event.png new file mode 100644 index 0000000000000000000000000000000000000000..f0ca7e73093f1be72c743bd7c08467f11e2a0e05 GIT binary patch literal 1319 zcmV+?1=#wDP)Bj00009a7bBm000ie z000ie0hKEb8vpeh4bY)!^&fNe21iVQ^K~#90?VYi4 zc!h1^m>ZqaU~hkE07T$6#1s5l900z2HVd{AF2KSP=3(Jsywm z@9(d#uh-Ytx3{-tS**3j82DaD|j!IaW4*k$s5F3>WlY6f!}uaZle0i z-aE_KQ;S#~cQgfHF8-daKu=aD6vxXh{+W?~RVJE_KC}#>vd^3_g*z-2Dl!f_Znk11P{*D{rtZFJAv_UGex*aH3(Vrw_-|_ z=E0*lL*`fQWbEclu|(C6^XD@+t^zW0VtwNDC90Z6&VY6}m#6mcd;M&w-^S_6Qheiz z1;z5k{Nk@N=^FV(<(H_-F6n_xX}8R^UQcDq7OApZMuBZ|#<9a$wC-93_20u5PNwnV zf{yvCbXY3un96)Wry03l9;w^Nc4$Oi_xf?g=E}#@%S0G2+**$90ixa9NF+{Ehv=mx zqrZRKB4-La96+CSugL6U-dQ15Z9${iSrcwl#ZZmqUYOQ5M!}ex8vk0x#bO{32)|O` z5X@H_mf3pwEfm{bS&*jxjBJO4>9A|H)bBYPZyPz-SBNF2@}#7R`Ge;1w=wkTK{dr% zx08u5#TLoiIllFO)vkHo)I~ej%5jfIv%@I}-a8aWhO7W{(Hc4Lisdik0i+rFoHMg7 zK!%~`UI55|_X5nyzTPV?S*^7!W#LNf@uE~i)4Dga+ulX*{oZN-$ed5g zOqlvpO)h8gc$QeMvbAc@mieScbn#e{FULsVscMvr^$|r?m7BM7QJ+Q8&6ae#SG8lR zUy12ry^4A&(VYFN&z$0{C~l8(H8GTE=SKUd@*ief-$!ioDd17gTA9JVr@a7~xZNE7 zee414t68U{W}34`#zsc*-esQeX=kC=ywr=m+gCHM`sJS3-!`wD1BA%AII{6mZdrgo(cCDCo0d}RYi*ZsCU{>&6fLW2fx47XB z0H?#;3ot8qFTkwu|MvpSN;vnfJKDw=cX6~v0HA}&8DLiMUVvE%z1JO< --json-path