• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 打包工具
2
3打包工具用于在程序编译完成后,对编译出的文件等进行打包,以供安装发布。开发者可以使用DevEco Studio进行打包,也可使用打包工具的JAR包进行打包,JAR包通常存放在SDK路径下的toolchains目录中。
4
5打包工具支持生成:Ability类型的模块包(HAP)、静态共享包(HAR)、动态共享包(HSP)、应用程序包(App)、快速修复模块包(HQF)、快速修复包(APPQF)。
6
7
8## HAP打包指令
9
10开发者可以使用打包工具的JAR包对模块进行打包,通过传入打包选项、文件路径,生成所需的HAP包。
11
12- Stage模型示例:
13
14
15    ```
16    java -jar app_packing_tool.jar --mode hap --json-path <option> --resources-path <option> --ets-path <option> --index-path <option> --pack-info-path <option> --out-path <option> --force true
17    ```
18
19- FA模型示例:
20
21
22    ```
23    java -jar app_packing_tool.jar --mode hap --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]
24    ```
25
26**表1** HAP打包指令参数说明
27
28| 指令             | 是否必选项 | 选项          | 描述                                                         | 备注            |
29| ---------------- | ---------- | ------------- | ------------------------------------------------------------ | --------------- |
30| --mode           | 是         | hap           | 打包类型。                                                   | NA              |
31| --json-path      | 是         | NA            | .json文件路径.FA模型文件名必须为config.json;Stage模型文件名必须为module.json。 | NA              |
32| --profile-path   | 否         | NA            | CAPABILITY.profile文件路径。                                 | NA              |
33| --maple-so-path  | 否         | NA            | maple so文件输入路径,so文件路径,文件名必须以.so为后缀。如果是多个so需要用“,”分隔。 | NA              |
34| --maple-so-dir   | 否         | NA            | maple so目录输入路径。                                       | NA              |
35| --dex-path       | 否         | NA            | dex文件路径,文件名必须以.dex为后缀。如果是多个dex需要用“,”分隔。 <br/>dex文件路径也可以为目录。 | NA              |
36| --lib-path       | 否         | NA            | lib库文件路径。                                              | NA              |
37| --resources-path | 否         | NA            | resources资源包路径。                                        | NA              |
38| --index-path     | 否         | NA            | .index文件路径,文件名必须为resources.index。                | NA              |
39| --pack-info-path | 否         | NA            | pack.info文件路径,文件名必须为pack.info。                   | NA              |
40| --rpcid-path     | 否         | NA            | rpcid.sc文件路径,文件名必须为rpcid.sc。                     | NA              |
41| --js-path        | 否         | NA            | 存放js文件目录路径。                                         | 仅stage模型生效 |
42| --ets-path       | 否         | NA            | 存放ets文件目录路径。                                        | 仅stage模型生效 |
43| --out-path       | 是         | NA            | 目标文件路径,文件名必须以.hap为后缀。                       | NA              |
44| --force          | 否         | true或者false | 默认值为false,如果为true,表示当目标文件存在时,强制删除。  | NA              |
45| --an-path        | 否         | NA            | 存放an文件的路径。                                           | 仅stage模型生效 |
46| --ap-path        | 否         | NA            | 存放ap文件的路径。                                           | 仅stage模型生效 |
47| --dir-list       | 否         | NA            | 可指定目标文件夹列表,将其打入HAP包内。                      | NA              |
48
49## HSP打包指令
50
51HSP包实现了多个HAP对文件的共享,开发者可以使用打包工具的jar包对应用进行打包,通过传入打包选项、文件路径,生成所需的HSP包。
52
53示例:
54```
55java -jar path\app_packing_tool.jar --mode hsp --json-path <option> --resources-path <option> --ets-path <option> --index-path <option> --pack-info-path <option> --out-path path\out\library.hsp --force true
56```
57
58**表2** HSP打包指令参数说明
59
60| 指令             | 是否必选项 | 选项          | 描述                                                         |
61| ---------------- | ---------- | ------------- | ------------------------------------------------------------ |
62| --mode           | 是         | hsp           | 打包类型。                                                   |
63| --json-path      | 是         | NA            | .json文件路径,文件名必须为module.json。                     |
64| --profile-path   | 否         | NA            | CAPABILITY.profile文件路径。                                 |
65| --dex-path       | 否         | NA            | 1.dex文件路径,文件名必须以.dex为后缀。如果是多个dex需要用“,”分隔。<br/>2.dex文件路径也可以为目录。 |
66| --lib-path       | 否         | NA            | lib库文件路径。                                              |
67| --resources-path | 否         | NA            | resources资源包路径。                                        |
68| --index-path     | 否         | NA            | .index文件路径,文件名必须为resources.index。                |
69| --pack-info-path | 否         | NA            | pack.info文件路径,文件名必须为pack.info。                   |
70| --js-path        | 否         | NA            | 存放js文件目录路径。                                         |
71| --ets-path       | 否         | NA            | 存放ets文件目录路径。                                        |
72| --out-path       | 是         | NA            | 目标文件路径,文件名必须以.hsp为后缀。                       |
73| --force          | 否         | true或者false | 默认值为false,如果为true,表示当目标文件存在时,强制删除。  |
74
75## App打包指令
76
77开发者可以使用打包工具的jar包对应用进行打包,通过传入打包选项、文件路径,生成所需的App包。App包用于上架应用市场。
78
79**App打包时HAP合法性校验:** 在对工程内的HAP包打包生成App包时,需要保证被打包的每个HAP在json文件中配置的bundleName、versionCode、versionName、minCompatibleVersionCode、debug、minAPIVersion、targetAPIVersion、apiReleaseType相同,moduleName唯一。对于FA模型,还需要保证json文件中配置的package唯一。
80
81
82示例:
83
84```
85java -jar app_packing_tool.jar --mode app --hap-path <option> --hsp-path <option> --out-path <option> --signature-path [option] --certificate-path [option] --pack-info-path [option] --force [option]
86```
87
88**表3** App打包指令参数说明
89
90| 指令                 | 是否必选项 | 选项          | 描述                                                           |
91|--------------------|-------|-------------|--------------------------------------------------------------|
92| --mode             | 是     | app         | 多个HAP需满足HAP的合法性校验。                                           |
93| --hap-path         | 是     | NA          | HAP包文件路径,文件名必须以.hap为后缀。如果是多个HAP包需要用“,”分隔。<br/>HAP包文件路径也可以是目录。 |
94| --hsp-path         | 否     | NA          | HSP包文件路径,文件名必须以.hsp为后缀。如果是多个HSP包需要用“,”分隔。<br/>HSP包文件路径也可以是目录。 |
95| --pack-info-path   | 是     | NA          | 文件名必须为pack.info。                                             |
96| --out-path         | 是     | NA          | 目标文件路径,文件名必须以.app为后缀。                                        |
97| --signature-path   | 否     | NA          | 签名路径。                                                        |
98| --certificate-path | 否     | NA          | 证书路径。                                                        |
99| --force            | 否     | true或者false | 默认值为false,如果为true,表示当目标文件存在时,强制删除。                           |
100
101
102
103## 多工程打包指令
104
105多工程打包适用于多个团队开发同一个应用,但不方便共享代码的情况。开发者通过传入已经打好的HAP、HSP和App包,将多个包打成一个最终的App包,并上架应用市场。
106
107**多工程打包HAP合法性校验:** 需要保证被打包的每个HAP在json文件中配置的bundleName、versionCode、versionName、minCompatibleVersionCode、debug属性相同,minAPIVersion、targetAPIVersion、apiReleaseType、compileSdkVersion、compileSdkType相同,moduleName唯一,同一设备entry唯一。对于FA模型,还需要保证json文件中配置的package唯一。
108
109示例:
110
111```
112java -jar app_packing_tool.jar --mode multiApp --hap-list [option] --hsp-list [option] --app-list [option] --out-path <option>
113```
114
115**表4** 多工程打包指令参数说明
116
117| 指令         | 是否必选项 | 选项        | 描述                                                                                                  |
118|------------|-------|-----------|-----------------------------------------------------------------------------------------------------|
119| --mode     | 是     | multiApp  | 打包类型,在将多个HAP打入同一个App时,需保证每个HAP满足合法性校验规则。                                                            |
120| --hap-list | 否     | HAP的路径    | HAP包文件路径,文件名必须以.hap为后缀。如果是多个hap包需要”,“分隔。<br/>hap文件路径也可以是目录。                                          |
121| --hsp-list | 否     | HSP的路径    | HSP包文件路径,文件名必须以.hsp为后缀。如果是多个hsp包需要”,“分隔。<br/>hsp文件路径也可以是目录。                                          |
122| --app-list | 否     | App的路径    | App文件路径,文件名必须以.app为后缀。如果是多个App包需要用”,“分隔。<br/>App文件路径也可以是目录。<br/>--hap-list,--hsp-list,--app-list不可以都不传。 |
123| --out-path | 是     | NA | 目标文件路径,文件名必须以.hqf为后缀。 |
124| --force    | 否     | true或者false | 默认值为false,如果为true,表示当目标文件存在时,强制删除。                                                                  |
125
126
127
128## HQF打包指令
129
130HQF包适用于应用存在一些问题,需要紧急修复的场景。开发者可以使用打包工具的jar包对应用进行打包,通过传入打包选项、文件路径,生成所需的HQF包。
131
132示例:
133
134```
135java -jar app_packing_tool.jar --mode hqf --json-path <option> --lib-path <option> --ets-path <option> --out-path <option>
136```
137
138**表5** HQF打包指令参数说明
139
140| 指令          | 是否必选项 | 选项          | 描述                                 |
141|-------------|-------|-------------|------------------------------------|
142| --mode      | 是     | hqf         | 打包类型。                              |
143| --json-path | 是     | NA          | .json文件路径,文件名必须为patch.json。        |
144| --lib-path  | 否     | NA          | lib库文件的路径。                         |
145| --ets-path  | 否     | NA          | 存放ets文件目录路径。                       |
146| --out-path  | 是     | NA          | 目标文件路径,文件名必须以.hqf为后缀。              |
147| --force     | 否     | true或者false | 默认值为false,如果为true,表示当目标文件存在时,强制删除。 |
148
149## APPQF打包指令
150
151APPQF包由一个或多个HQF文件组成。这些HQF包在应用市场会从APPQF包中拆分出来,再被分发到具体的设备上。开发者可以使用打包工具的jar包对应用进行打包,通过传入打包选项、文件路径,生成所需的APPQF包。
152
153示例:
154
155```
156java -jar app_packing_tool.jar --mode appqf --hqf-list <option> --out-path <option>
157```
158
159**表6** APPQF打包指令参数说明
160
161| 指令         | 是否必选项 | 选项          | 描述                                 |
162|------------|-------|-------------|------------------------------------|
163| --mode     | 是     | appqf       | 打包类型。                              |
164| --hqf-list | 是     | NA          | HQF文件路径,多个HQF以英文逗号隔开。              |
165| --out-path | 是     | NA          | 目标文件路径,文件名必须以.appqf为后缀。            |
166| --force    | 否     | true或者false | 默认值为false,如果为true,表示当目标文件存在时,强制删除。 |
167
168
169           |
170
171## 版本归一指令(versionNormalize)
172
173同一个App中,所有HAP、HSP包的versionName和versionCode需要保持一致。当只有一个HAP或HSP需要修改升级时,可以调用此命令,将多个HAP、HSP的版本统一。本命令会修改所传入的HAP、HSP的版本号和版本名称,并在指定目录生成修改后的同名HAP、HSP,以及一个version_record.json文件,用于记录所有HAP、HSP原有的版本号、版本名称。
174
175示例:
176```
177java -jar path\app_packing_tool.jar --mode versionNormalize --input-list 1.hap,2.hsp --version-code 1000001 --version-name 1.0.1 --out-path path\out\
178```
179
180**表7** versionNormalize指令参数说明
181
182| 指令             | 是否必选项 | 选项               | 描述                                                                |
183|----------------|-------|------------------|-------------------------------------------------------------------|
184| --mode         | 是     | versionNormalize | 命令类型。                                                             |
185| --input-list   | 是     | HAP或HSP的路径       | 1.HAP或HSP包文件路径,文件名必须以.HAP或.HSP为后缀。如果是多个HAP或HSP包需要“,”分隔。<br/>2.传入目录时,会读取目录下所有的HAP和HSP文件。 |
186| --version-code | 是     | 版本号              | 指定的版本号,HAP、HSP的版本号会被修改为该版本。需要为整数,且不小于所有传入的HAP、HSP的版本号。            |
187| --version-name | 是     | 版本名称             | 指定的版本名称,HAP、HSP的版本名称会被修改为该版本名称。                                    |
188| --out-path     | 是     | NA               | 目标文件路径,需要为一个目录。                                                   |
189