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