bm工具
Bundle Manager(包管理工具,简称bm)是实现应用安装、卸载、更新、查询等功能的工具,bm为开发者提供基本的应用安装包的调试能力。
环境要求(hdc工具)
在使用本工具前,开发者需要先获取hdc工具,执行hdc shell。
bm工具命令列表
| 命令 | 描述 |
|---|---|
| help | 帮助命令,用于查询bm支持的 命令信息。 |
| install | 安装命令,用于安装应用。 |
| uninstall | 卸载命令,用于卸载应用。 |
| dump | 查询命令,用于查询应用的相关信息。 |
| clean | 清理命令,用于清理应用的缓存和数据。在user版本下打开开发者模式可用。 |
| get | 获取udid命令,用于获取设备的udid。 |
| quickfix | 快速修复相关命令,用于执行补丁相关操作,如补丁安装、补丁查询。 |
| compile | 应用执行编译AOT命令。 |
| copy-ap | 把应用的ap文件拷贝到/data/local/pgo目录下,供shell用户读取文件。 |
| dump-dependencies | 查询应用依赖的模块信息。 |
| dump-shared | 查询应用间HSP应用信息。 |
| dump-overlay | 打印overlay应用的overlayModuleInfo。 |
| dump-target-overlay | 打印目标应用的所有关联overlay应用的overlayModuleInfo。 |
| install-plugin | 安装插件命令,用于安装插件。 |
| uninstall-plugin | 卸载插件命令,用于卸载插件。 |
帮助命令(help)
# 显示帮助信息
bm help
参数说明
userId
表示当前系统账号的编号,系统账号的相关接口请参考系统账号管理模块,下面给出几种常见的系统账号。
- userId = 100,表示编号为100的系统账号,系统默认账号,在设备出厂首次启动时由系统账号管理模块创建,且创建完成后会在100账号下安装所有的预置应用。
- userId = 102,表示编号为102的系统账号,由系统账号管理模块创建,仅支持系统应用创建账号。在100账号下安装的应用,在102账号下不会显示,如有需求,需要在102账号下重新安装。在创建102账号过程中,系统会在102账号下安装预置系统应用。
- userId = 0,表示共有系统账号,也叫账号0,该共有系统账号和系统账号编号不同,不是系统账号管理模块创建的。在账号0下安装的应用,所有系统账号共享,会在每个系统账号下都会显示。所有三方应用都不能安装到账号0下。
安装命令(install)
bm install [-h] [-p filePath] [-r] [-w waitingTime] [-s hspDirPath] [-u userId] [-d] [-g]
安装命令参数列表
| 参数 | 参数说明 |
|---|---|
| -h | 帮助信息。 |
| -p | 可选参数,指定待安装的HAP/HSP路径,多HAP/HSP应用可指定多HAP/HSP所在文件夹路径。从API version 22开始,支持指定待安装的APP路径,也可指定只存在一个APP的文件夹路径。 |
| -r | 可选参数,覆盖安装一个HAP/HSP。默认缺省,缺省时表示覆盖安装。 |
| -s | 安装应用间HSP时为必选参数,其他场景为可选参数。用于指定待安装应用间HSP的路径。从API version 24开始,当指定目录时,路径目录下可以存在多个同包名、不同模块名的HSP。API version 23及之前版本,路径目录下只能存在一个HSP。 说明: 应用间HSP不对三方应用开放,三方无法安装应用间HSP。 |
| -w | 可选参数,安装HAP时指定bm工具等待时间,最小的等待时长为180s,最大的等待时长为600s, 默认缺省为180s。 |
| -u | 可选参数,指定用户,默认在当前活跃用户下安装应用。仅支持在当前活跃用户或0用户下安装。 说明: 如果当前活跃用户是100,使用命令bm install -p /data/local/tmp/ohos.app.hap -u 102安装时,只会在当前活跃用户100下安装应用。 |
| -d | 可选参数,允许应用降级安装,即设备已安装较高版本的应用,也可以覆盖安装较低版本的应用。仅支持签名证书分发类型为app_gallery或者签名证书类型为debug的三方应用降级安装。从API version 23开始支持。 |
| -g | 可选参数,安装签名证书类型为debug的应用时自动授予user_grant和manual_settings权限。 仅对开发者模式下的签名证书类型为debug的应用生效。可以通过Profile签名文件中的type字段查看签名证书类型。 签名证书类型为debug的应用更新为签名证书类型为release的应用时取消已授予的user_grant和manual_settings权限。从API version 24开始支持。 |
示例:
# 安装一个hap
bm install -p /data/local/tmp/ohos.app.hap
# 在100用户下安装一个hap
bm install -p /data/local/tmp/ohos.app.hap -u 100
# 覆盖安装一个hap
bm install -p /data/local/tmp/ohos.app.hap -r
# 安装一个应用间共享库
bm install -s xxx.hsp
# 同时安装使用方应用和其依赖的应用间共享库
bm install -p aaa.hap -s xxx.hsp yyy.hsp
# 同时安装HAP和应用内共享库
bm install -p /data/local/tmp/hapPath/
# 安装一个hap,等待时间为180s
bm install -p /data/local/tmp/ohos.app.hap -w 180
# 设备已安装了一个高版本的应用,覆盖安装一个同包名低版本的hap
bm install -p /data/local/tmp/ohos.app.hap -d
# 安装签名证书类型为debug的应用时自动授予user_grant权限和manual_settings权限
bm install -p /data/local/tmp/ohos.app.hap -g
卸载命令(uninstall)
bm uninstall [-h] [-n bundleName] [-m moduleName] [-k] [-s] [-v versionCode] [-u userId]
卸载命令参数列表
| 参数 | 参数说明 |
|---|---|
| -h | 帮助信息。 |
| -n | 必选参数,指定Bundle名称卸载应用。 |
| -m | 可选参数,应用模块名称,指定卸载应用的一个模块。默认卸载所有模块。 |
| -k | 可选参数,卸载应用时保存应用数据。默认卸载应用时不保存应用数据。 |
| -s | 根据场景判断,卸载应用间HSP时必选参数,其他场景为可选参数。卸载指定的共享库。 |
| -v | 可选参数,指定共享包的版本号。默认卸载同包名的所有共享包。 |
| -u | 可选参数,指定用户,默认在当前活跃用户下卸载应用。仅支持在当前活跃用户或0用户下卸载应用。 说明: 如果当前活跃用户是100,使用命令bm uninstall -n com.ohos.app -u 102卸载时,只会在当前活跃用户100下卸载应用。 |
示例:
# 卸载一个应用
bm uninstall -n com.ohos.app
# 在用户100下卸载一个应用
bm uninstall -n com.ohos.app -u 100
# 卸载应用的一个模块
bm uninstall -n com.ohos.app -m entry
# 卸载一个shared bundle
bm uninstall -n com.ohos.example -s
# 卸载一个shared bundle的指定版本
bm uninstall -n com.ohos.example -s -v 100001
# 卸载一个应用,并保留用户数据
bm uninstall -n com.ohos.app -k
查询应用信息命令(dump)
bm dump [-h] [-a] [-g] [-n bundleName] [-s shortcutInfo] [-d deviceId] [-l label] [-u userId]
查询命令参数列表
| 参数 | 参数说明 |
|---|---|
| -h | 帮助信息。 |
| -a | 可选参数,查询系统已经安装的所有应用。 |
| -g | 可选参数,查询系统中签名为调试类型的应用包名。 |
| -n | 可选参数,查询指定Bundle名称的详细信息。 |
| -s | 可选参数,查询指定Bundle名称下的快捷方式信息。 |
| -d | 可选参数,查询指定设备中的包信息。默认查询当前设备。 |
| -l | 可选参数,用于查询指定Bundle名称的label值(应用的名称),需要与-n或-a参数组合使用。 说明: 从API version 20开始支持该命令。如果在Windows环境下输出结果包含特殊字符或中文乱码,需在cmd控制台中手动执行命令chcp 65001,将cmd控制台编码修改为UTF-8。 |
| -u | 可选参数,查询指定用户下的应用信息,默认在当前活跃用户下查询应用信息。仅支持在当前活跃用户或0用户下查询。 说明: 如果当前活跃用户是100,使用命令bm dump -n com.ohos.app -u 102查询时,只会在当前活跃用户100下查询应用。 |
示例:
# 显示所有已安装的Bundle名称
bm dump -a
# 查询系统中签名为调试类型的应用包名
bm dump -g
# 查询该应用的详细信息
bm dump -n com.ohos.app
# 在用户100下查询该应用的详细信息
bm dump -n com.ohos.app -u 100
# 查询该应用的快捷方式信息
bm dump -s -n com.ohos.app
# 查询跨设备应用信息
bm dump -n com.ohos.app -d xxxxx
# 查询该应用的label值(应用的名称)
bm dump -n com.ohos.app -l
# 显示所有已安装应用的bundle名称和label值(应用的名称)
bm dump -a -l
清理命令(clean)
bm clean [-h] [-c] [-n bundleName] [-d] [-i appIndex] [-u userId]
清理命令参数列表
| 参数 | 参数说明 |
|---|---|
| -h | 帮助信息。 |
| -c -n | -n为必选参数,-c为可选参数。清除指定Bundle名称的缓存数据。 |
| -d -n | -n为必选参数,-d为可选参数。清除指定Bundle名称的数据目录。 |
| -i | 可选参数,清除分身应用的数据目录。默认为0。 |
| -u | 可选参数,清理指定用户下的数据,默认在当前活跃用户下清理数据。仅支持在当前活跃用户或0用户下清理数据。 说明: 如果当前活跃用户是100,使用命令bm clean -c -n com.ohos.app -u 102清理数据时,只会在当前活跃用户100下清理。 |
示例:
# 清理该应用下的缓存数据
bm clean -c -n com.ohos.app
# 在用户100下清理该应用下的缓存数据
bm clean -c -n com.ohos.app -u 100
# 清理该应用下的用户数据
bm clean -d -n com.ohos.app
# 执行结果
clean bundle data files successfully.
获取udid命令(get)
bm get [-h] [-u]
获取udid命令参数列表
| 参数 | 参数说明 |
|---|---|
| -h | 帮助信息。 |
| -u | 必选参数,获取设备的udid。 |
示例:
# 获取设备的udid
bm get -u
# 执行结果
udid of current device is :
23CADE0C
快速修复命令(quickfix)
bm quickfix [-h] [-a -f filePath [-t targetPath] [-d] [-o]] [-q -b bundleName] [-r -b bundleName]
注:hqf文件制作方式可参考HQF打包指令。
快速修复命令参数列表
| 参数 | 参数说明 |
|---|---|
| -h | 帮助信息。 |
| -a -f | -a为可选参数,指定-a后,-f为必选参数。执行快速修复补丁安装命令,file-path对应hqf文件,支持传递1个或多个hqf文件,或传递hqf文件所在的目录。 |
| -q -b | -q为可选参数,指定-q后,-b为必选参数。根据包名查询补丁信息。 |
| -r -b | -r为可选参数,指定-r后,-b为必选参数。根据包名卸载未使能的补丁。 |
| -t | 可选参数,快速修复应用到指定目标路径。 |
| -d | 可选参数,应用快速修复调试模式。 |
| -o | 可选参数,应用快速修复覆盖模式,该模式下so将被解压覆盖到应用的so目录中。 |
示例:
# 根据包名查询补丁包信息
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.
# 快速修复补丁卸载
bm quickfix -r -b com.ohos.app
# 执行结果
delete quick fix successfully
共享库查询命令(dump-shared)
bm dump-shared [-h] [-a] [-n bundleName]
共享库查询命令参数列表
| 参数 | 参数说明 |
|---|---|
| -h | 帮助信息。 |
| -a | 可选参数,查询系统中所有已安装的共享库。 |
| -n | 可选参数,查询指定包名的共享库详细信息。 |
示例:
# 显示所有已安装共享库包名
bm dump-shared -a
# 显示该共享库的详细信息
bm dump-shared -n com.ohos.lib
共享库依赖关系查询命令(dump-dependencies)
bm dump-dependencies [-h] [-n bundleName] [-m moduleName]
共享库依赖关系查询命令参数列表
| 参数 | 参数说明 |
|---|---|
| -h | 帮助信息。 |
| -n | 必选参数,查询指定应用依赖的共享库信息。 |
| -m | 必选参数,查询指定应用指定模块依赖的共享库信息。 |
示例:
# 查询指定应用指定模块依赖的共享库信息
bm dump-dependencies -n com.ohos.app -m entry
应用执行编译AOT命令(compile)
bm compile [-h] [-m mode] [-r bundleName] [-a]
compile命令参数列表
| 参数 | 参数说明 |
|---|---|
| -h | 帮助信息。 |
| -a | 可选参数,编译所有应用。 |
| -m | 可选参数,可选值为partial或者full。根据包名编译应用。 |
| -r | 可选参数,移除应用的结果。 |
示例:
# 根据包名编译应用
bm compile -m partial com.example.myapplication
拷贝ap文件命令(copy-ap)
拷贝ap文件到指定应用的/data/local/pgo路径。
bm copy-ap [-h] [-a] [-n bundleName]
copy-ap命令参数列表
| 参数 | 参数说明 |
|---|---|
| -h | 帮助信息。 |
| -a | 可选参数,默认所有包相关ap文件。拷贝所有包相关ap文件。 |
| -n | 可选参数,默认当前应用包名。根据包名拷贝对应包相关的ap文件。 |
示例:
# 根据包名移动对应包相关的ap文件
bm copy-ap -n com.example.myapplication
查询overlay应用信息命令(dump-overlay)
bm dump-overlay [-h] [-b bundleName] [-m moduleName] [-t targetModuleName] [-u userId]
dump-overlay命令参数列表
| 参数 | 参数说明 |
|---|---|
| -h | 帮助信息。 |
| -b | 必选参数,获取指定Overlay应用的所有OverlayModuleInfo信息。 |
| -m | 可选参数,根据指定Overlay特征module的名称查询OverlayModuleInfo信息,默认当前Overlay应用主模块名。 |
| -t | 可选参数,根据指定目标module的名称查询OverlayModuleInfo信息,默认参数为空。 |
| -u | 可选参数,在指定用户下查询OverlayModuleInfo信息,默认在当前活跃用户下查询。仅支持在当前活跃用户或0用户下查询。 说明: 如果当前活跃用户是100,使用命令bm dump-overlay -b com.ohos.app -u 102查询OverlayModuleInfo信息,只会返回当前活跃用户100下的OverlayModuleInfo信息。 |
示例:
# 根据包名来获取overlay应用com.ohos.app中的所有OverlayModuleInfo信息
bm dump-overlay -b com.ohos.app
# 在用户100下,根据包名来获取overlay应用com.ohos.app中的所有OverlayModuleInfo信息
bm dump-overlay -b com.ohos.app -u 100
# 根据包名和module来获取overlay应用com.ohos.app中overlay module为libraryModuleName的所有OverlayModuleInfo信息
bm dump-overlay -b com.ohos.app -m libraryModuleName
# 根据目标包名和module来获取overlay应用com.ohos.app中目标module为entryModuleName的所有OverlayModuleInfo信息
bm dump-overlay -b com.ohos.app -t entryModuleName