# 扫描工具使用说明 ## 简介 扫描工具可用于分析检测应用安装包,根据不同的参数设定,扫描指定路径的HAP、HSP、App包内容并输出检测结果报告,为开发者优化包结构或排查问题提供数据支撑。目前扫描工具支持以下几种分析统计: - 扫描重复文件。 - 扫描超出指定大小的文件。 - 统计分析各类型文件的总大小和占比。
工具扫描结果默认以JSON和HTML两种文件格式输出。
扫描工具app_check_tool.jar需要从SDK路径下的toolchains目录中获取。 ![扫描工具系统架构图](image/construct.png) ## 约束与限制 扫描工具需运行在Java8及其以上环境。 ## 扫描重复文件示例 命令示例: ``` java -jar app_check_tool.jar --input ./test.app --out-path ./test --stat-duplicate true ``` 扫描重复文件指令参数说明 | 指令 | 是否必选项 | 描述 | | ---------------- | ---------- | ------------------------------------------------------------------ | | --input | 是 | 指定传入的HAP、HSP、App包文件路径。 | | --out-path | 是 | 指定结果输出文件夹目录。 | | --stat-duplicate | 否 | 是否扫描重复文件。默认为false。
true:启用。
false:不启用。 | JSON统计结果: ``` [{ "taskType":1, "taskDesc":"find the duplicated files", "param":"--stat-duplicate", "startTime":"2023-11-17 14:48:01:265", "stopTime":"2023-11-17 14:48:01:434", "result":[{ "md5":"975c41f5727b416b1ffefa5bb0f073b", "size":1108880, "files":[ "/application-entry-default.hap/libs/armeabi-v7a/example.so", "/entry-default.hap/libs/armeabi-v7a/example.so" ] }] }] ``` HTML统计结果:
taskType 1
taskDesc find the duplicated files
param --stat-duplicate
startTime 2023-11-17 14:48:01:265
stopTime 2023-11-17 14:48:01:434
result
md5 975c41f5727b416b1ffefa5bb0f073b
size 1108880
files /application-entry-default.hap/libs/armeabi-v7a/example.so
/entry-default.hap/libs/armeabi-v7a/example.so
**扫描重复文件字段信息** | 字段 | 类型 | 描述 | | --------- | ------ | --------------------------- | | taskType | int | 取值为1,表示扫描重复文件。 | | taskDesc | String | 任务的详细描述。 | | param | String | 扫描程序传入参数。 | | startTime | String | 任务开始时间。 | | stopTime | String | 任务结束时间。 | | result | Struct | [参考下表。](#section1) | **重复文件统计结果字段信息** | 字段 | 类型 | 描述 | | ----- | --------------- | -------------------------- | | md5 | String | 相同文件的MD5值。 | | size | int | 相同文件的大小。单位为Byte。 | | files | Vector\ | 相同文件名的对应路径。 | ## 扫描超出指定大小的文件示例 命令示例: ``` java -jar app_check_tool.jar --input ./test.app --out-path ./test --stat-file-size 4 ``` 扫描超出指定大小的文件的指令参数说明 | 指令 | 是否必选项 | 描述 | | ---------------- | ---------- | ----------------------------------------------------------- | | --input | 是 | 指定传入的HAP、HSP、App包文件路径。 | | --out-path | 是 | 指定结果输出文件夹目录。 | | --stat-file-size | 否 | 扫描超过设定大小的文件,单位KB
范围为 0-4294967295 KB。 | JSON统计结果: ``` [{ "taskType":2, "taskDesc":"find files whose size exceed the limit size", "param":"--stat-file-size 4", "startTime":"2023-11-17 14:48:01:458", "stopTime":"2023-11-17 14:48:01:491", "result":[{ "file":"/application-entry-default.hap/libs/x86_64/example.so", "size":1292840 }] }] ``` HTML统计结果:
taskType 2
taskDesc find files whose size exceed the limit size
param --stat-file-size 4
startTime 2023-11-17 14:48:01:458
stopTime 2023-11-17 14:48:01:491
result
file size
/application-entry-default.hap/libs/x86_64/example.so 1292840
**扫描超出指定大小的文件字段信息** | 字段 | 类型 | 描述 | | --------- | ------ | ----------------------------------- | | taskType | int | 取值为2,表示扫描超出指定大小文件。 | | taskDesc | String | 任务的详细描述。 | | param | String | 扫描程序传入参数。 | | startTime | String | 任务开始时间。 | | stopTime | String | 任务结束时间。 | | result | Struct | [参考下表。](#section2) | **超出指定大小的文件统计结果字段信息** | 字段 | 类型 | 描述 | | ---- | ------ | ------------------------------------ | | file | String | 扫描的大文件的对应路径。 | | size | int | 扫描的大文件的对应大小,单位为Byte。 | ## 统计各类型文件大小占比示例 命令示例: ``` java -jar app_check_tool.jar --input ./test.app --out-path ./test --stat-suffix true ``` 统计各类型文件大小占比指令参数说明 | 指令 | 是否必选项 | 描述 | | ------------- | ---------- | ------------------------------------------------------------------------- | | --input | 是 | 指定传入的HAP、HSP、App包文件路径。 | | --out-path | 是 | 指定结果输出文件夹目录。 | | --stat-suffix | 否 | 是否统计各类型文件大小及占比。默认为false。
true:启用。
false:不启用。| JSON统计结果: ``` [{ "taskType":3, "taskDesc":"show files group by file type[.suffix]", "param":"--stat-suffix", "startTime":"2023-11-17 14:48:01:497", "stopTime":"2023-11-17 14:48:01:537", "pathList":[ "test.app/application-entry-default.hap", "test.app/entry-default.hap" ], "result":[{ "suffix":"so", "totalSize":1292840, "files":[{ "compress":"false", "file":"/application-entry-default.hap/libs/x86_64/example.so", "size":1292840 }] }, { "suffix":"abc", "totalSize":84852, "files":[{ "file":"/application-entry-default.hap/ets/modules.abc", "size":76304 }, { "file":"/entry-default.hap/ets/modules.abc", "size":8548 }] }] }] ``` HTML统计结果:
taskType 3
taskDesc show files group by file type[.suffix]
param --stat-suffix
startTime 2023-11-17 14:48:01:497
stopTime 2023-11-17 14:48:01:537
pathList test.app/application-entry-default.hap
test.app/entry-default.hap
result suffix so
totalSize 1292840
files
compress:false
size:1292840
file:/application-entry-default.hap/libs/x86_64/example.so
suffix abc
totalSize 84852
files
size:8548
file:/entry-default.hap/ets/modules.abc
size:76304
file:/application-entry-default.hap/ets/modules.abc
**统计各类型文件大小占比字段信息** | 字段 | 类型 | 描述 | | --------- | --------------- | -------------------------------------------------------------------------------------- | | taskType | int | 取值为3,表示统计各类型文件大小占比。 | | taskDesc | String | 任务的详细描述。 | | param | String | 扫描程序传入参数。 | | startTime | String | 任务开始时间。 | | stopTime | String | 任务结束时间。 | | pathList | Vector\ | 多个HAP、HSP包的路径。 | | result | Struct | [参考下表。](#section3) | **各类型文件大小占比统计结果字段信息** | 字段 | 类型 | 描述 | | --------- | ------ | ------------------------------------------ | | suffix | String | 同类型文件后缀名。 | | totalSize | int | 扫描的同类型
文件的总大小,单位为Byte。 | | files | Stuct | [参考下表。](#section4) | **同类型文件的对应路径和大小字段信息** | 字段 | 类型 | 描述 | | -------- | ------ | ------------------------------------------------------------------- | | file | String | 文件路径。 | | size | int | 文件的大小。 | | compress | bool | 是否是压缩文件(仅so类型文件展示)。
true:是压缩文件。
false:不是压缩文件。 | ## 优化建议 根据扫描结果按照如下方式优化应用 1. 重复文件 - 同一包内有重复资源,删除重复资源。 - 多包(HAP、HSP)间重复资源,可以使用HSP实现资源的复用。 2. 较大文件 - 确认是否为应用必需,是否可删除。 - JPG、PNG、GIF等文件,可以考虑压缩。 3. 特定类型文件 - so文件,通过配置so压缩选项来实现压缩打包。 - JPG、PNG、GIF等文件,可以考虑压缩。