• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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![扫描工具系统架构图](figures/app-check-tool-construct.png)
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