1# 打包工具 2 3 4打包工具是OpenHarmony提供的一种调测工具,支持通过命令行的方式生成HAP、将多个HAP打包为App Pack(Application Package),或将多个HAP和App Pack打包为App Pack。App Pack为应用市场上架时所需的包格式。 5 6 7打包所用的app_packing_tool.jar,可以在本地下载的OpenHarmony的SDK库中找到。 8 9 10- 打包为HAP 11 Stage模型打包命令如下: 12 13 14 ```bash 15 java -jar app_packing_tool.jar --mode <option> --json-path <option> --resources-path <option> --ets-path <option> --index-path <option> --pack-info-path <option> --out-path <option> --force <option> 16 ``` 17 18 FA模型打包命令如下: 19 20 21 ```bash 22 java -jar app_packing_tool.jar --mode <option> --json-path <option> --maple-so-path <option> --profile-path <option> --maple-so-dir <option> --dex-path <option> --lib-path <option> --resources-path <option> --index-path <option> --out-path <option> --force <option> 23 ``` 24 25 命令参数含义及规范请见下表。 26 27 | 指令 | 是否必选项 | 描述 | 28 | -------- | -------- | -------- | 29 | --mode | 是 | 打包类型,此处为hap。 | 30 | --json-path | 是 | .json文件路径,FA模型文件名必须为config.json;stage模型文件名必须为module.json5。 | 31 | --profile-path | 否 | CAPABILITY.profile文件路径 | 32 | --maple-so-path | 否 | maple so文件输入路径,so文件路径,文件名必须以.so为后缀。如果是多个so需要用","分隔。 | 33 | --maple-so-dir | 否 | maple so目录输入路径。 | 34 | --dex-path | 否 | 1.dex文件路径,文件名必须以.dex为后缀。如果是多个dex需要用","分隔。<br/>2.dex文件路径也可以为目录。 | 35 | --lib-path | 否 | lib库文件路径。 | 36 | --resources-path | 否 | resources资源包路径。 | 37 | --index-path | 否 | .index文件路径,文件名必须为resources.index。 | 38 | --pack-info-path | 否 | pack.info文件路径,文件名必须为pack.info。 | 39 | --rpcid-path | 否 | rpcid.sc文件路径,文件名必须为rpcid.sc。 | 40 | --js-path | 否 | 存放js文件目录路径,仅stage模型生效。 | 41 | --ets-path | 否 | 存放ets文件的目录路径,仅stage模型生效。 | 42 | --out-path | 是 | 目标文件路径,文件名必须以.hap为后缀。 | 43 | --force | 否 | 默认值为false,如果为true,表示当目标文件存在时,强制删除。 | 44 45- 将多个HAP打包为APP包 46 命令如下: 47 48 49 ```bash 50 java -jar app_packing_tool.jar --mode <option> --hap-path <option> --out-path <option> --signature-path <option> --certificate-path <option> --pack-info-path <option> --force <option> 51 ``` 52 53 命令参数含义及规范请见下表。 54 55 | 指令 | 是否必选项 | 描述 | 56 | -------- | -------- | -------- | 57 | --mode | 是 | 打包类型,此处为app。在将多个HAP打入同一个app时,需保证每个HAP的versionCode、versionName字段相同。 | 58 | --hap-path | 是 | 1.HAP文件路径,文件名必须以.hap为后缀。如果是多个HAP需要用","分隔。<br/>2.HAP文件路径也可以是目录。 | 59 | --pack-info-path | 是 | 文件名必须为pack.info。 | 60 | --out-path | 是 | 目标文件路径,文件名必须以.app为后缀。 | 61 | --signature-path | 否 | 签名路径。 | 62 | --certificate-path | 否 | 证书路径,请参见[签名指导](../security/hapsigntool-guidelines.md)。 | 63 | --force | 否 | 默认值为false,如果为true,表示当目标文件存在时,强制删除。 | 64 65- 多个HAP或者多个APP打包为APP包 66 命令如下: 67 68 69 ```bash 70 java -jar app_packing_tool.jar --mode <option> --hap-list <option> --app-list <option> --out-path <option> 71 ``` 72 73 命令参数含义及规范请见下表。 74 75 | 指令 | 是否必选项 | 描述 | 76 | -------- | -------- | -------- | 77 | --mode | 是 | 打包类型,此处为multiApp。在将多个HAP打入同一个APP时,需保证每个HAP满足合法性校验规则。 | 78 | --hap-list | 否 | 1.HAP文件路径,文件名必须以.hap为后缀。如果是多个HAP需要用","分隔。<br/>2.HAP文件路径也可以是目录。 | 79 | --app-list | 否 | 1.APP文件路径,文件名必须以.app为后缀。如果是多个APP包需要用","分隔。<br/>2.APP文件路径也可以是目录。<br/>3.--hap-list命令与--app-list不可以都不传。 | 80 | --out-path | 是 | 目标文件路径,文件名必须以.app为后缀。 | 81 | --force | 否 | 默认值为false,如果为true,表示当目标文件存在时,强制删除。 | 82 83 多工程打包HAP合法性校验规则: 84 85 - 需保证被打包的每个HAP在配置文件(请参见"[FA模型配置文件](../application-models/application-component-configuration-fa.md)"或 "[Stage模型配置文件](../application-models/application-component-configuration-stage.md)")中配置的bundleName、versionCode、versionName、minCompatibleVersionCode、minAPIVersion, targetAPIVersion , apiReleaseType等字段相同。 86 - 每个HAP的moduleName唯一,同一设备Entry类型的HAP唯一。 87 - 对于FA模型,还需要保证json文件中配置的package唯一。 88