README_zh.md
1# 打包工具组件<a name="ZH-CH_TOPIC_0000001126664311"></a>
2
3- [简介](#section_introduction)
4- [目录](#section_directory)
5- [约束](#section_constraints)
6- [使用说明](#section_usage_instruction)
7- [相关仓](#section_related_repo)
8
9## 简介<a name="section_introduction"></a>
10
11本组件包含打包、拆包和包解析三个功能模块:
12
13- 打包模块有将资源文件打包成hap包,和将多个hap包打包成app包两种模式。
14- 拆包模块有从app包中拆出所有hap包,和从hap包中拆出json文件两种模式。
15
16- 包解析模块可以根据对应解析模式,解析出指定设备类型下的hap包列表、hap包信息、签名信息等。
17
18## 目录<a name="section_directory"></a>
19```
20/developtools/packing_tool
21 ├── adapter
22 │ ├── bundles # packing_tool工具的版本信息
23 │ └── ohos # packing_tool工具实现的核心代码
24 └── META-INF
25 ├── collectingbininfo_tool # bin文件转成hap文件的外部依赖配置文件
26 ├── packingbin_tool # hap文件转成bin文件的外部依赖配置文件
27 └── unpacking_tool # 解析hap文件的外部依赖配置文件
28```
29
30## 约束<a name="section_constraints"></a>
311.当打包的app包依赖hap包时,需要hap包打包执行完毕后,再执行app包的打包命令。可根据命令执行的返回值来控制。
32
332.如果命令中多次出现同一个命令,则取其最后一次出现的值,如--mode hap --mode app,即mode值为app。
34
353.如果同一命令中跟多个参数,则取距离其最近的值。如--mode hap app,mode值为hap。
36
374.传入的参数路径不能以“--”开头,避免与指令冲突。
38
395.指令必须是小写的,如:--mode,文件后缀不区分大小写。
40
416.建议命令中传入绝对路径。
42
437.打包完成后,res/下的文件会放到assets/entry/resources目录下。
44assets/目录下的文件将被放入assets/目录下。
45lib/下的文件将被放入libs/目录下。
46maple-so/下的文件将被放入maple/目录下。
47resource.index的文件将被放入assets/entry/目录下。
48
49## 使用说明<a name="section_usage_instruction"></a>
50打包hap包命令示例:
51```
52java -jar hmos_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] --shell-apk-path [option] --index-path [option] --out-path <option> --force [option]
53```
54参数含义及规范:
55
56| 参数 | 是否必选 | 描述 |
57| ---- | ---- | ---- |
58|--mode|是|打包类型(hap)|
59|--json-path|是|.json文件路径,文件名必须为config.json。|
60|--profile-path|否|CAPABILITY.profile文件路径|
61|--maple-so-dir|否|maple so目录输入路径|
62|--dex-path|否|1.dex文件路径,文件名必须以.dex为后缀。如果是多个dex需要用“,”分隔<br>2.dex文件路径也可以为目录|
63|--lib-path|否|lib库文件路径|
64|--resources-path|否|resources资源包路径|
65|--shell-apk-path|否|1.shell apk文件路径,文件名必须以.apk为后缀。如果是多个apk需要用“,”分隔<br>2.shell apk文件路径也可以为目录|
66|--index-path|否|.index文件路径,文件名必须为resources.index|
67|--out-path|是|目标文件路径,文件名必须以.hap为后缀|
68|--force|否|默认值为false,如果为true,表示当目标文件存在时,强制删除|
69|--file-path|否|可指定目标文件夹,将其打入hap包内|
70
71打包har包命令示例:
72```
73java -jar hmos_app_packing_tool.jar --mode <options> --json-path <option> --jar-path <option> --lib-path [option] --resources-path [option] --out-path <option> --force [option]
74```
75参数含义及规范:
76
77| 参数 | 是否必选 | 描述 |
78| ---- | ---- | ---- |
79|--mode|是|打包类型(har)|
80|--json-path|是|.json文件路径,文件名必须为config.json|
81|--jar-path|否|1.jar文件路径,文件名必须以.jar为后缀。如果是多个jar需要用“,”分隔<br>2.jar文件路径也可以为目录|
82|--lib-path|否|lib库文件路径|
83|--res-path|否|resource资源包路径|
84|--out-path|是|目标文件路径,文件名必须以.hap为后缀|
85|--force|否|默认值为false,如果为true,表示当目标文件存在时,强制删除|
86
87打包app包命令示例:
88```
89java -jar hmos_app_packing_tool.jar --mode <options> --hap-path <option> --out-path [option] --signature-path [option] --certificate-path [option] --pack-info-path <option> --force [option]
90```
91参数含义及规范:
92
93| 参数 | 是否必选 | 描述 |
94| ---- | ---- | ---- |
95|--mode|是|打包类型(app)|
96|--hap-path|是|1.hap包文件路径,文件名必须以.hap为后缀。如果是多个hap包需要用“,”分隔<br>2.hap文件路径也可以是目录|
97|--pack-info-path|是|文件名必须为pack.info|
98|--out-path|是|目标文件路径,文件名必须以.app为后缀|
99|--signature-path|否|签名路径|
100|--certificate-path|否|证书路径|
101|--force|否|默认值为false,如果为true,表示当目标文件存在时,强制删除|
102
103拆hap包命令示例:
104```
105java -jar hmos_app_unpacking_tool.jar --mode <options> --hap-path <option> --out-path [option] --force [option] --unpackapk [option]
106```
107参数含义及规范:
108
109| 参数 | 是否必选 | 描述 |
110| ---- | ---- | ---- |
111|--mode|是|拆包类型(hap)|
112|--hap-path|是|hap包路径|
113|--out-path|是|拆包目标文件路径|
114|--force|否|默认值为false,如果为true,表示当目标文件存在时,强制删除|
115|--unpackapk|否|默认值为false,如果为true,表示拆包时,将apk解压出来|
116
117拆har包命令示例:
118```
119java -jar hmos_app_unpacking_tool.jar --mode <options> --har-path <option> --out-path [option] --force [option]
120```
121参数含义及规范:
122
123| 参数 | 是否必选 | 描述 |
124| ---- | ---- | ---- |
125|--mode|是|拆包类型(har)|
126|--har-path|是|har包路径|
127|--out-path|是|拆包目标文件路径|
128|--force|否|默认值为false,如果为true,表示当目标文件存在时,强制删除|
129
130拆app包命令示例:
131```
132java -jar hmos_app_unpacking_tool.jar --mode <options> --app-path <option> --out-path [option] --force [option] --unpackapk [option]
133```
134参数含义及规范:
135
136| 参数 | 是否必选 | 描述 |
137| ---- | ---- | ---- |
138|--mode|是|拆包类型(app)|
139|--app-path|是|app包路径|
140|--out-path|是|拆包目标文件路径|
141|--force|否|默认值为false,如果为true,表示当目标文件存在时,强制删除|
142|--unpackapk|否|默认值为false,如果为true,表示拆包时,将apk解压出来|
143
144## 相关仓<a name="section_related_repo"></a>
145
146[用户程序框架子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/%E7%94%A8%E6%88%B7%E7%A8%8B%E5%BA%8F%E6%A1%86%E6%9E%B6%E5%AD%90%E7%B3%BB%E7%BB%9F.md)