• 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![扫描工具系统架构图](image/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<b>HTML统计结果:</b>
55
56<div id="box">
57        <table>
58            <tr>
59                <td>taskType</td>
60                <td colspan="2">1</td>
61            </tr>
62            <tr>
63                <td>taskDesc</td>
64                <td colspan="2">find the duplicated files</td>
65            </tr>
66            <tr>
67                <td>param</td>
68                <td colspan="2">--stat-duplicate</td>
69            </tr>
70            <tr>
71                <td>startTime</td>
72                <td colspan="2">2023-11-17 14:48:01:265</td>
73            </tr>
74            <tr>
75                <td>stopTime</td>
76                <td colspan="2">2023-11-17 14:48:01:434</td>
77            </tr>
78            <tr>
79                <td rowspan="5">result</td>
80            </tr>
81            <tr>
82                <td>md5</td>
83                <td>975c41f5727b416b1ffefa5bb0f073b</td>
84            </tr>
85            <tr>
86                <td>size</td>
87                <td>1108880</td>
88            </tr>
89            <tr>
90                <td rowspan="2">files</td>
91                <td>/application-entry-default.hap/libs/armeabi-v7a/example.so</td>
92            </tr>
93            <tr>
94                <td>/entry-default.hap/libs/armeabi-v7a/example.so</td>
95            </tr>
96        </table>
97</div>
98
99**扫描重复文件字段信息**
100
101| 字段      | 类型   | 描述                        |
102| --------- | ------ | --------------------------- |
103| taskType  | int    | 取值为1,表示扫描重复文件。 |
104| taskDesc  | String | 任务的详细描述。            |
105| param     | String | 扫描程序传入参数。          |
106| startTime | String | 任务开始时间。              |
107| stopTime  | String | 任务结束时间。              |
108| result    | Struct | [参考下表。](#section1)       |
109
110**重复文件统计结果字段信息** <a name="section1"></a>
111
112| 字段  | 类型            | 描述                       |
113| ----- | --------------- | -------------------------- |
114| md5   | String          | 相同文件的MD5值。          |
115| size  | int             | 相同文件的大小。单位为Byte。 |
116| files | Vector\<String> | 相同文件名的对应路径。     |
117
118## 扫描超出指定大小的文件示例
119
120<b>命令示例:</b>
121
122```
123java -jar app_check_tool.jar --input ./test.app --out-path ./test --stat-file-size 4
124```
125
126<b>扫描超出指定大小的文件的指令参数说明</b>
127
128| 指令             | 是否必选项 | 描述                                                        |
129| ---------------- | ---------- | ----------------------------------------------------------- |
130| --input          | 是         | 指定传入的HAP、HSP、App包文件路径。                         |
131| --out-path       | 是         | 指定结果输出文件夹目录。                                    |
132| --stat-file-size | 否         | 扫描超过设定大小的文件,单位KB <br>范围为 0-4294967295 KB。 |
133
134<b>JSON统计结果:</b>
135
136```
137[{
138    "taskType":2,
139    "taskDesc":"find files whose size exceed the limit size",
140    "param":"--stat-file-size 4",
141    "startTime":"2023-11-17 14:48:01:458",
142    "stopTime":"2023-11-17 14:48:01:491",
143    "result":[{
144            "file":"/application-entry-default.hap/libs/x86_64/example.so",
145            "size":1292840
146    }]
147}]
148```
149<b>HTML统计结果:</b>
150
151<div id="box">
152    <table>
153        <tr>
154            <td>taskType</td>
155            <td colspan="2">2</td>
156        </tr>
157        <tr>
158            <td>taskDesc</td>
159            <td colspan="2">find files whose size exceed the limit size</td>
160        </tr>
161        <tr>
162            <td>param</td>
163            <td colspan="2">--stat-file-size 4</td>
164        </tr>
165        <tr>
166            <td>startTime</td>
167            <td colspan="2">2023-11-17 14:48:01:458</td>
168        </tr>
169        <tr>
170            <td>stopTime</td>
171            <td colspan="2">2023-11-17 14:48:01:491</td>
172        </tr>
173        <tr>
174            <td rowspan="4">result</td>
175        </tr>
176        <tr>
177            <td>file</td> <td>size</td>
178        </tr>
179        <tr>
180            <td>/application-entry-default.hap/libs/x86_64/example.so</td>
181            <td>1292840</td>
182        </tr>
183    </table>
184</div>
185
186**扫描超出指定大小的文件字段信息**
187
188| 字段      | 类型   | 描述                                |
189| --------- | ------ | ----------------------------------- |
190| taskType  | int    | 取值为2,表示扫描超出指定大小文件。 |
191| taskDesc  | String | 任务的详细描述。                    |
192| param     | String | 扫描程序传入参数。                  |
193| startTime | String | 任务开始时间。                      |
194| stopTime  | String | 任务结束时间。                      |
195| result    | Struct | [参考下表。](#section2)               |
196
197**超出指定大小的文件统计结果字段信息**<a name="section2"></a>
198
199| 字段 | 类型   | 描述                                 |
200| ---- | ------ | ------------------------------------ |
201| file | String | 扫描的大文件的对应路径。             |
202| size | int    | 扫描的大文件的对应大小,单位为Byte。 |
203
204## 统计各类型文件大小占比示例
205
206<b>命令示例:</b>
207
208```
209java -jar app_check_tool.jar --input ./test.app --out-path ./test --stat-suffix true
210```
211
212<b>统计各类型文件大小占比指令参数说明</b>
213
214| 指令          | 是否必选项 | 描述                                                                      |
215| ------------- | ---------- | ------------------------------------------------------------------------- |
216| --input       | 是         | 指定传入的HAP、HSP、App包文件路径。                                       |
217| --out-path    | 是         | 指定结果输出文件夹目录。                                                  |
218| --stat-suffix | 否         | 是否统计各类型文件大小及占比。默认为false。<br>true:启用。<br>false:不启用。|
219
220<b>JSON统计结果:</b>
221
222```
223[{
224    "taskType":3,
225    "taskDesc":"show files group by file type[.suffix]",
226    "param":"--stat-suffix",
227    "startTime":"2023-11-17 14:48:01:497",
228    "stopTime":"2023-11-17 14:48:01:537",
229    "pathList":[
230        "test.app/application-entry-default.hap",
231        "test.app/entry-default.hap"
232    ],
233    "result":[{
234        "suffix":"so",
235        "totalSize":1292840,
236        "files":[{
237            "compress":"false",
238            "file":"/application-entry-default.hap/libs/x86_64/example.so",
239            "size":1292840
240        }]
241    },
242    {
243        "suffix":"abc",
244        "totalSize":84852,
245        "files":[{
246            "file":"/application-entry-default.hap/ets/modules.abc",
247            "size":76304
248        },
249        {
250            "file":"/entry-default.hap/ets/modules.abc",
251            "size":8548
252        }]
253    }]
254}]
255```
256
257<b>HTML统计结果:</b>
258
259<div>
260  <table  >
261        <tr>
262            <td>taskType</td>
263            <td colspan="2">3</td>
264        </tr>
265        <tr>
266            <td>taskDesc</td>
267            <td colspan="2">show files group by file type[.suffix]</td>
268        </tr>
269        <tr>
270            <td>param</td>
271            <td colspan="2">--stat-suffix</td>
272        </tr>
273        <tr>
274            <td>startTime</td>
275            <td colspan="2">2023-11-17 14:48:01:497</td>
276        </tr>
277        <tr>
278            <td>stopTime</td>
279            <td colspan="2">2023-11-17 14:48:01:537</td>
280        </tr>
281        <tr>
282			<td >pathList</td>
283			<td colspan="2">
284                test.app/application-entry-default.hap<br>test.app/entry-default.hap
285			</td>
286		</tr>
287        <tr >
288            <td rowspan="30" width="10%">result</td>
289            <td width="10%">suffix</td>
290            <td width="50%">so</td>
291        </tr>
292        <tr>
293            <td>totalSize</td>
294            <td>1292840</td>
295        </tr>
296        <tr>
297            <td rowspan="2">files</td>
298        </tr>
299        <tr>
300            <td>compress:false<br>size:1292840<br>file:/application-entry-default.hap/libs/x86_64/example.so </td>
301        </tr>
302        <tr>
303            <td width="10%">suffix</td>
304            <td width="50%">abc</td>
305        </tr>
306        <tr>
307            <td>totalSize</td>
308            <td>84852</td>
309        </tr>
310        <tr>
311            <td rowspan="2">files</td>
312        </tr>
313        <tr>
314            <td>
315                size:8548<br>file:/entry-default.hap/ets/modules.abc<br>size:76304<br>file:/application-entry-default.hap/ets/modules.abc<br>
316            </td>
317        </tr>
318    </table>
319</div>
320
321**统计各类型文件大小占比字段信息**
322
323| 字段      | 类型            | 描述                                                                                   |
324| --------- | --------------- | -------------------------------------------------------------------------------------- |
325| taskType  | int             | 取值为3,表示统计各类型文件大小占比。                                                  |
326| taskDesc  | String          | 任务的详细描述。                                                                       |
327| param     | String          | 扫描程序传入参数。                                                                     |
328| startTime | String          | 任务开始时间。                                                                         |
329| stopTime  | String          | 任务结束时间。                                                                         |
330| pathList  | Vector\<String> | 多个HAP、HSP包的路径。                                                                  |
331| result    | Struct          | [参考下表。](#section3)                                                                  |
332
333**各类型文件大小占比统计结果字段信息**<a name="section3"></a>
334
335| 字段      | 类型   | 描述                                       |
336| --------- | ------ | ------------------------------------------ |
337| suffix    | String | 同类型文件后缀名。                         |
338| totalSize | int    | 扫描的同类型<br>文件的总大小,单位为Byte。 |
339| files     | Stuct  | [参考下表。](#section4)                      |
340
341**同类型文件的对应路径和大小字段信息**<a name="section4"></a>
342| 字段     | 类型   | 描述                                                                |
343| -------- | ------ | ------------------------------------------------------------------- |
344| file     | String | 文件路径。                                                          |
345| size     | int    | 文件的大小。                                                        |
346| compress | bool   | 是否是压缩文件(仅so类型文件展示)。<br>true:是压缩文件。<br>false:不是压缩文件。 |
347
348## 优化建议
349根据扫描结果按照如下方式优化应用
350
3511. 重复文件
352    - 同一包内有重复资源,删除重复资源。
353    - 多包(HAP、HSP)间重复资源,可以使用HSP实现资源的复用。
354
3552. 较大文件
356    - 确认是否为应用必需,是否可删除。
357    - JPG、PNG、GIF等文件,可以考虑压缩。
358
3593. 特定类型文件
360    - so文件,通过配置so压缩选项来实现压缩打包。
361    - JPG、PNG、GIF等文件,可以考虑压缩。