# 打包工具组件
- [简介](#section_introduction)
- [目录](#section_directory)
- [约束](#section_constraints)
- [使用说明](#section_usage_instruction)
- [相关仓](#section_related_repo)
## 简介
本组件包含打包、拆包和包解析三个功能模块:
- 打包模块有将资源文件打包成hap包,和将多个hap包打包成app包两种模式。
- 拆包模块有从app包中拆出所有hap包,和从hap包中拆出json文件两种模式。
- 包解析模块可以根据对应解析模式,解析出指定设备类型下的hap包列表、hap包信息、签名信息等。
## 目录
```
/developtools/packing_tool
├── adapter
│ ├── bundles # packing_tool工具的版本信息
│ └── ohos # packing_tool工具实现的核心代码
└── META-INF
├── collectingbininfo_tool # bin文件转成hap文件的外部依赖配置文件
├── packingbin_tool # hap文件转成bin文件的外部依赖配置文件
└── unpacking_tool # 解析hap文件的外部依赖配置文件
```
## 约束
1.当打包的app包依赖hap包时,需要hap包打包执行完毕后,再执行app包的打包命令。可根据命令执行的返回值来控制。
2.如果命令中多次出现同一个命令,则取其最后一次出现的值,如--mode hap --mode app,即mode值为app。
3.如果同一命令中跟多个参数,则取距离其最近的值。如--mode hap app,mode值为hap。
4.传入的参数路径不能以“--”开头,避免与指令冲突。
5.指令必须是小写的,如:--mode,文件后缀不区分大小写。
6.建议命令中传入绝对路径。
7.打包完成后,res/下的文件会放到assets/entry/resources目录下。
assets/目录下的文件将被放入assets/目录下。
lib/下的文件将被放入libs/目录下。
maple-so/下的文件将被放入maple/目录下。
resource.index的文件将被放入assets/entry/目录下。
## 使用说明
打包hap包命令示例:
```
java -jar hmos_app_packing_tool.jar --mode