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