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