1e41f4b71Sopenharmony_ci# restool工具
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## 简介
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_cirestool是一种应用工程资源编译工具,通过编译资源文件创建资源索引、解析资源,开发者可以调用[资源管理接口](../reference/apis-localization-kit/js-apis-resource-manager.md)获取到对应资源。restool工具保存在sdk安装目录下的toolchains子目录。
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci## 参数说明
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_cirestool当前支持以下命令选项:
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci| 选项 | 是否可缺省 | 是否存在入参 | 描述 |
13e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- |
14e41f4b71Sopenharmony_ci| -i | 不可缺省 | 带参数 | 指定需要构建的[资源目录](#编译资源)或者需要构建的[资源中间文件目录](#编译资源)。同一个命令可以多次指定。 |
15e41f4b71Sopenharmony_ci| -j | 不可缺省 | 带参数 | 指定config.json或者module.json文件路径。 |
16e41f4b71Sopenharmony_ci| -o | 不可缺省 | 带参数 | 指定已编译资源的输出路径。 |
17e41f4b71Sopenharmony_ci| -p | 不可缺省 | 带参数 | 指定编译资源的bundle名称。 |
18e41f4b71Sopenharmony_ci| -r | 不可缺省 | 带参数 | 指定资源的头文件路径,有三种格式:“.txt”、“.js”、“.h”。 |
19e41f4b71Sopenharmony_ci| -e | 可缺省 | 带参数 | 指定生成资源的起始ID值,例如:0x01000000,范围[0x01000000, 0x06FFFFFF),[0x08000000, 0x41FFFFFF) |
20e41f4b71Sopenharmony_ci| -f | 可缺省 | 不带参数 | 如果输出路径已经存在。强制删除,重新生成。 |
21e41f4b71Sopenharmony_ci| -h | 可缺省 | 不带参数 | 查看工具帮助信息。 |
22e41f4b71Sopenharmony_ci| -m | 可缺省 | 带参数 | 多模块联合编译时,指定多个模块名。用“,”连接。 |
23e41f4b71Sopenharmony_ci| -x | 可缺省 | 带参数 | 指定生成中间文件的资源目录或单个资源路径。同一个命令可以多次指定。 |
24e41f4b71Sopenharmony_ci| -z | 可缺省 | 不带参数 | 针对资源中间文件目录,生成编译结果。 |
25e41f4b71Sopenharmony_ci| -v | 可缺省 | 不带参数 | 查看工具版本号。 |
26e41f4b71Sopenharmony_ci| --ids | 可缺省 | 带参数 | 指定生成id_defined.json的输出目录。 |
27e41f4b71Sopenharmony_ci| --defined-ids | 可缺省 | 带参数 | 指定id_defined.json文件路径,一般都是通过--ids生成。<br>id_defined.json包含资源类型、名称及其ID的列表。<br>开发者可以自定义id_defined.json中的资源ID。 |
28e41f4b71Sopenharmony_ci| --icon-check | 可缺省 | 不带参数 | 开启icon和startWindowIcon的PNG图片校验功能。 |
29e41f4b71Sopenharmony_ci| --target-config | 可缺省 | 带参数 | 与“-i”命令同时使用,支持选择编译。<br>[参数说明](#target-config参数说明):指定要包含的配置。|
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci### target-config参数说明
32e41f4b71Sopenharmony_ci
33e41f4b71Sopenharmony_ci支持参数配置类型:MccMnc、Locale、Orientation、Device、ColorMode、Density
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ci参数格式说明:配置之间用“;”分割,配置中的值用“[]”封装,并使用“,”分割。
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ciMccMnc匹配规则:Mcc(国家码)必须相同;Mnc(网络码)不存在时默认匹配,否则Mnc须相同才匹配。
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ciLocale匹配规则:Locale匹配需满足以下三条规则。
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci1、语言须相同。
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci2、脚本(文字)不存在时默认匹配,否则必须相同。
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci3、国家或地区不存在时默认匹配,否则必须相同。
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci参数举例说明:Locale[zh_CN,en_US];Device[phone],该参数过滤其他语言,保留能匹配上zh_CN和en_US的语言;过滤其他设备,保留phone;其他参数(如MccMnc、Orientation等)配置不过滤均保留。
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ci## 使用实例
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci例如:entry目录结构如下
52e41f4b71Sopenharmony_ci```
53e41f4b71Sopenharmony_cientry/src/main
54e41f4b71Sopenharmony_ci|    |----resource
55e41f4b71Sopenharmony_ci|    |    |----base
56e41f4b71Sopenharmony_ci|    |    |    |----element
57e41f4b71Sopenharmony_ci|    |    |    |----media
58e41f4b71Sopenharmony_ci|    |    |    |----profile
59e41f4b71Sopenharmony_ci|    |    |----rawfile
60e41f4b71Sopenharmony_ci|    |    |----resfile
61e41f4b71Sopenharmony_ci|    |----config.json/module.json
62e41f4b71Sopenharmony_ci```
63e41f4b71Sopenharmony_ci
64e41f4b71Sopenharmony_ci### 编译资源
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci编译资源的方式有两种,分别是全量资源编译和增量资源编译。
67e41f4b71Sopenharmony_ci
68e41f4b71Sopenharmony_ci1、全量资源编译,命令如下:
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci```
71e41f4b71Sopenharmony_cirestool -i entry/src/main -j entry/src/main/module.json -p com.ohos.demo -o out -r out/ResourceTable.txt -f
72e41f4b71Sopenharmony_ci```
73e41f4b71Sopenharmony_ci
74e41f4b71Sopenharmony_ci2、增量资源编译,具体步骤如下:
75e41f4b71Sopenharmony_ci
76e41f4b71Sopenharmony_ci步骤一:生成资源中间件,命令如下:
77e41f4b71Sopenharmony_ci
78e41f4b71Sopenharmony_ci```
79e41f4b71Sopenharmony_cirestool -x entry/src/main/resource -o out
80e41f4b71Sopenharmony_ci```
81e41f4b71Sopenharmony_ci步骤二:编译资源中间件,命令如下:
82e41f4b71Sopenharmony_ci
83e41f4b71Sopenharmony_ci```
84e41f4b71Sopenharmony_cirestool -i out1 -i out2 -o out -p com.ohos.demo -r out/ResourceTable.txt -j entry/src/main/module.json -f -z
85e41f4b71Sopenharmony_ci```
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci### 固定资源ID
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci固定资源ID,具体步骤如下:
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci步骤一:创建id_defined.json文件。创建方式有两种,分别是通过命令行和自定义。
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci+ 方式一:通过命令行生成此文件,命令如下:
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_ci```
96e41f4b71Sopenharmony_cirestool -i entry/src/main -j entry/src/main/module.json -p com.ohos.demo -o out -r out/ResourceTable.txt --ids out -f
97e41f4b71Sopenharmony_ci```
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci+ 方式二:自定义文件,文件名必须是id_defined.json,文件内容如下:
100e41f4b71Sopenharmony_ci
101e41f4b71Sopenharmony_ci```
102e41f4b71Sopenharmony_ci{
103e41f4b71Sopenharmony_ci    "record" :
104e41f4b71Sopenharmony_ci    [
105e41f4b71Sopenharmony_ci        {
106e41f4b71Sopenharmony_ci            "id" : "0x01000000", // 资源需要固定的ID值
107e41f4b71Sopenharmony_ci            "name" : "app_name", // 资源名称
108e41f4b71Sopenharmony_ci            "type" : "string" // 资源类型
109e41f4b71Sopenharmony_ci        }
110e41f4b71Sopenharmony_ci    ]
111e41f4b71Sopenharmony_ci}
112e41f4b71Sopenharmony_ci```
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ci步骤二:完成资源ID固定。完成固定的方式有两种,通过命令一完成固定或者将自定义的id_definded.json放在resource/base/element/目录下后通过命令二完成固定。
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ci+ 命令一:
117e41f4b71Sopenharmony_ci```
118e41f4b71Sopenharmony_cirestool -i entry/src/main -j entry/src/main/module.json -p com.ohos.demo -o out1 -r out1/ResourceTable.txt --defined-ids out/id_defined.json -f
119e41f4b71Sopenharmony_ci```
120e41f4b71Sopenharmony_ci
121e41f4b71Sopenharmony_ci+ 命令二:
122e41f4b71Sopenharmony_ci```
123e41f4b71Sopenharmony_cirestool -i entry/src/main -j entry/src/main/module.json -p com.ohos.demo -o out1 -r out1/ResourceTable.txt  -f
124e41f4b71Sopenharmony_ci```