1# 扫描工具 2 3## 简介 4 5扫描工具可用于分析检测应用安装包,根据不同的参数设定,扫描指定路径的HAP、HSP、App包内容并输出检测结果报告,为开发者优化包结构或排查问题提供数据支撑。目前扫描工具支持以下几种分析统计: 6- 扫描重复文件。 7- 扫描超出指定大小的文件。 8- 统计分析各类型文件的总大小和占比。<br> 9 10工具扫描结果默认以JSON和HTML两种文件格式输出。<br> 11扫描工具app_check_tool.jar需要从SDK路径下的toolchains目录中获取。 12 13![扫描工具系统架构图](figures/app-check-tool-construct.png) 14 15## 约束与限制 16扫描工具需运行在Java8及其以上环境。 17 18## 扫描重复文件示例 19 20<b>命令示例:</b> 21 22``` 23java -jar app_check_tool.jar --input ./test.app --out-path ./test --stat-duplicate true 24``` 25 26<b>扫描重复文件指令参数说明</b> 27 28| 指令 | 是否必选项 | 描述 | 29| ---------------- | ---------- | ------------------------------------------------------------------ | 30| --input | 是 | 指定传入的HAP、HSP、App包文件路径。 | 31| --out-path | 是 | 指定结果输出文件夹目录。 | 32| --stat-duplicate | 否 | 是否扫描重复文件。默认为false。<br>true:启用。<br>false:不启用。 | 33 34<b>JSON统计结果:</b> 35 36``` 37[{ 38 "taskType":1, 39 "taskDesc":"find the duplicated files", 40 "param":"--stat-duplicate", 41 "startTime":"2023-11-17 14:48:01:265", 42 "stopTime":"2023-11-17 14:48:01:434", 43 "result":[{ 44 "md5":"975c41f5727b416b1ffefa5bb0f073b", 45 "size":1108880, 46 "files":[ 47 "/application-entry-default.hap/libs/armeabi-v7a/example.so", 48 "/entry-default.hap/libs/armeabi-v7a/example.so" 49 ] 50 }] 51}] 52``` 53 54**扫描重复文件字段信息** 55 56| 字段 | 类型 | 描述 | 57| --------- | ------ | --------------------------- | 58| taskType | int | 取值为1,表示扫描重复文件。 | 59| taskDesc | String | 任务的详细描述。 | 60| param | String | 扫描程序传入参数。 | 61| startTime | String | 任务开始时间。 | 62| stopTime | String | 任务结束时间。 | 63| result | Struct | [参考下表。](#section1) | 64 65**重复文件统计结果字段信息** <a name="section1"></a> 66 67| 字段 | 类型 | 描述 | 68| ----- | --------------- | -------------------------- | 69| md5 | String | 相同文件的MD5值。 | 70| size | int | 相同文件的大小。单位为Byte。 | 71| files | Vector\<String> | 相同文件名的对应路径。 | 72 73## 扫描超出指定大小的文件示例 74 75<b>命令示例:</b> 76 77``` 78java -jar app_check_tool.jar --input ./test.app --out-path ./test --stat-file-size 4 79``` 80 81<b>扫描超出指定大小的文件的指令参数说明</b> 82 83| 指令 | 是否必选项 | 描述 | 84| ---------------- | ---------- | ----------------------------------------------------------- | 85| --input | 是 | 指定传入的HAP、HSP、App包文件路径。 | 86| --out-path | 是 | 指定结果输出文件夹目录。 | 87| --stat-file-size | 否 | 扫描超过设定大小的文件,单位KB <br>范围为 0-4294967295 KB。 | 88 89<b>JSON统计结果:</b> 90 91``` 92[{ 93 "taskType":2, 94 "taskDesc":"find files whose size exceed the limit size", 95 "param":"--stat-file-size 4", 96 "startTime":"2023-11-17 14:48:01:458", 97 "stopTime":"2023-11-17 14:48:01:491", 98 "result":[{ 99 "file":"/application-entry-default.hap/libs/x86_64/example.so", 100 "size":1292840 101 }] 102}] 103``` 104 105 106**扫描超出指定大小的文件字段信息** 107 108| 字段 | 类型 | 描述 | 109| --------- | ------ | ----------------------------------- | 110| taskType | int | 取值为2,表示扫描超出指定大小文件。 | 111| taskDesc | String | 任务的详细描述。 | 112| param | String | 扫描程序传入参数。 | 113| startTime | String | 任务开始时间。 | 114| stopTime | String | 任务结束时间。 | 115| result | Struct | [参考下表。](#section2) | 116 117**超出指定大小的文件统计结果字段信息**<a name="section2"></a> 118 119| 字段 | 类型 | 描述 | 120| ---- | ------ | ------------------------------------ | 121| file | String | 扫描的大文件的对应路径。 | 122| size | int | 扫描的大文件的对应大小,单位为Byte。 | 123 124## 统计各类型文件大小占比示例 125 126<b>命令示例:</b> 127 128``` 129java -jar app_check_tool.jar --input ./test.app --out-path ./test --stat-suffix true 130``` 131 132<b>统计各类型文件大小占比指令参数说明</b> 133 134| 指令 | 是否必选项 | 描述 | 135| ------------- | ---------- | ------------------------------------------------------------------------- | 136| --input | 是 | 指定传入的HAP、HSP、App包文件路径。 | 137| --out-path | 是 | 指定结果输出文件夹目录。 | 138| --stat-suffix | 否 | 是否统计各类型文件大小及占比。默认为false。<br>true:启用。<br>false:不启用。| 139 140<b>JSON统计结果:</b> 141 142``` 143[{ 144 "taskType":3, 145 "taskDesc":"show files group by file type[.suffix]", 146 "param":"--stat-suffix", 147 "startTime":"2023-11-17 14:48:01:497", 148 "stopTime":"2023-11-17 14:48:01:537", 149 "pathList":[ 150 "test.app/application-entry-default.hap", 151 "test.app/entry-default.hap" 152 ], 153 "result":[{ 154 "suffix":"so", 155 "totalSize":1292840, 156 "files":[{ 157 "compress":"false", 158 "file":"/application-entry-default.hap/libs/x86_64/example.so", 159 "size":1292840 160 }] 161 }, 162 { 163 "suffix":"abc", 164 "totalSize":84852, 165 "files":[{ 166 "file":"/application-entry-default.hap/ets/modules.abc", 167 "size":76304 168 }, 169 { 170 "file":"/entry-default.hap/ets/modules.abc", 171 "size":8548 172 }] 173 }] 174}] 175``` 176 177 178 179**统计各类型文件大小占比字段信息** 180 181| 字段 | 类型 | 描述 | 182| --------- | --------------- | -------------------------------------------------------------------------------------- | 183| taskType | int | 取值为3,表示统计各类型文件大小占比。 | 184| taskDesc | String | 任务的详细描述。 | 185| param | String | 扫描程序传入参数。 | 186| startTime | String | 任务开始时间。 | 187| stopTime | String | 任务结束时间。 | 188| pathList | Vector\<String> | 多个HAP、HSP包的路径。 | 189| result | Struct | [参考下表。](#section3) | 190 191**各类型文件大小占比统计结果字段信息**<a name="section3"></a> 192 193| 字段 | 类型 | 描述 | 194| --------- | ------ | ------------------------------------------ | 195| suffix | String | 同类型文件后缀名。 | 196| totalSize | int | 扫描的同类型<br>文件的总大小,单位为Byte。 | 197| files | Stuct | [参考下表。](#section4) | 198 199**同类型文件的对应路径和大小字段信息**<a name="section4"></a> 200| 字段 | 类型 | 描述 | 201| -------- | ------ | ------------------------------------------------------------------- | 202| file | String | 文件路径。 | 203| size | int | 文件的大小。 | 204| compress | bool | 是否是压缩文件(仅so类型文件展示)。<br>true:是压缩文件。<br>false:不是压缩文件。 | 205