• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
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