• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# restool工具
2
3
4## 简介
5
6restool是一种应用工程资源编译工具,通过编译资源文件创建资源索引、解析资源,开发者可以调用[资源管理接口](../reference/apis-localization-kit/js-apis-resource-manager.md)获取到对应资源。restool工具保存在sdk安装目录下的toolchains子目录。
7
8## 参数说明
9
10### restool支持的命令选项
11
12| 选项 | 是否可缺省 | 是否存在入参 | 描述 |
13| -------- | -------- | -------- | -------- |
14| -i | 不可缺省 | 带参数 | 指定需要构建的资源目录或者资源中间件。<br>在资源目录中支持指定一个编译好的Hap资源目录(解压态),在此Hap的基础上完成叠加编译。<br>具体可参考如下[编译资源命令](#编译资源)。 |
15| -j | 不可缺省 | 带参数 | 指定config.json或者module.json文件路径。 |
16| -o | 不可缺省 | 带参数 | 指定已编译资源的输出路径。 |
17| -p | 不可缺省 | 带参数 | 指定编译资源的bundle名称。 |
18| -r | 不可缺省 | 带参数 | 指定资源的头文件路径,有三种格式:“.txt”、“.js”、“.h”。 |
19| -e | 可缺省 | 带参数 | 指定生成资源的起始ID值,例如:0x01000000,范围[0x01000000, 0x06FFFFFF),[0x08000000, 0x41FFFFFF)。 |
20| -f | 可缺省 | 不带参数 | 如果输出路径已经存在。强制删除,重新生成。 |
21| -h | 可缺省 | 不带参数 | 查看工具帮助信息。 |
22| -m | 可缺省 | 带参数 | 多模块联合编译时,指定多个模块名。用“,”连接。 |
23| -x | 可缺省 | 带参数 | 指定生成中间文件的资源目录或单个资源路径。同一个命令可以多次指定。 |
24| -z | 可缺省 | 不带参数 | 针对资源中间文件目录,生成编译结果。 |
25| -v | 可缺省 | 不带参数 | 查看工具版本号。 |
26| --ids | 可缺省 | 带参数 | 指定生成id_defined.json的输出目录。 |
27| --defined-ids | 可缺省 | 带参数 | 指定id_defined.json文件路径,一般都是通过--ids生成。<br>id_defined.json包含资源类型、名称及其ID的列表。<br>开发者可以自定义id_defined.json中的资源ID。 |
28| --icon-check | 可缺省 | 不带参数 | 开启icon和startWindowIcon的PNG图片校验功能。 |
29| --thread | 可缺省 | 带参数 | 指定资源编译时开启的子线程数量。 |
30| --target-config | 可缺省 | 带参数 | 与“-i”命令同时使用,支持选择编译。<br>具体可参考如下**target-config参数说明**。|
31| --ignored-file | 可缺省 | 带参数 | 指定资源编译时文件和文件夹的忽略规则,格式为正则表达式,多个规则之间以“:”分隔。例如:“\\.git:\\.svn”表示忽略名称为“.git”、“.svn”的文件和文件夹。|
32
33**target-config参数说明**
34
35支持参数配置类型:MccMnc、Locale、Orientation、Device、ColorMode、Density。
36
37参数格式说明:配置之间用“;”分割,配置中的值用“[]”封装,并使用“,”分割。
38
39MccMnc匹配规则:Mcc(国家码)必须相同;Mnc(网络码)不存在时默认匹配,否则Mnc须相同才匹配。
40
41Locale匹配规则:Locale匹配需满足以下三条规则。
42
431、语言须相同。
44
452、脚本(文字)不存在时默认匹配,否则必须相同。
46
473、国家或地区不存在时默认匹配,否则必须相同。
48
49参数举例说明:Locale[zh_CN,en_US];Device[phone],该参数过滤其他语言,保留能匹配上zh_CN和en_US的语言;过滤其他设备,保留phone;其他参数(如MccMnc、Orientation等)配置不过滤均保留。
50
51### restool支持的子命令
52
53| 命令  | 描述 |
54| ---  | ---- |
55| dump | 以json的格式输出hap包中resource的内容。 |
56
57**dump命令**
58
59```
60restool dump [-h] [config] filePath
61```
62
63dump命令参数列表:
64
65| 参数 | 是否可缺省 | 是否存在入参 | 描述 |
66| --- | --------- | ---------- |------- |
67| -h  | 可缺省 | 不带参数 | 帮助信息。 |
68| config | 可缺省 | 不带参数 | 只打印hap包中资源的限定词信息。 |
69
70示例:
71
72```sh
73# 打印hap包中所有的资源信息
74restool dump entry.hap
75# 打印hap包中资源的限定词信息
76restool dump config entry.hap
77```
78
79## 使用实例
80
81例如,entry目录结构如下:
82```
83entry/src/main
84|    |----resource
85|    |    |----base
86|    |    |    |----element
87|    |    |    |----media
88|    |    |    |----profile
89|    |    |----rawfile
90|    |    |----resfile
91|    |----config.json/module.json
92```
93
94### 编译资源
95
96编译资源的方式有三种,分别是全量资源编译、增量资源编译和叠加资源编译。其中增量编译仅预览模式可用,用于预览开发阶段的组件效果;全量编译用于构建工程的资源文件;叠加编译支持将工程中的资源叠加进已有的Hap模板资源中,复用已编译的资源项。
97
981、全量资源编译,命令如下:
99
100```
101restool -i entry/src/main -j entry/src/main/module.json -p com.ohos.demo -o out -r out/ResourceTable.txt -f
102```
103
1042、增量资源编译,具体步骤如下:
105
106步骤一:生成资源中间件,命令如下:
107
108```
109restool -x entry/src/main/resource -o out
110```
111步骤二:编译资源中间件,命令如下:
112
113```
114restool -i out1 -i out2 -o out -p com.ohos.demo -r out/ResourceTable.txt -j entry/src/main/module.json -f -z
115```
116
1173、叠加资源编译,命令如下:
118
119```
120# hapResource为解压后的Hap包路径
121restool -i entry/src/main -i hapResource -j entry/src/main/module.json -p com.ohos.demo -o out -r out/ResourceTable.txt -f
122```
123
124### 固定资源ID
125
126固定资源ID,具体步骤如下:
127
128步骤一:创建id_defined.json文件。创建方式有两种,分别是通过命令行和自定义。
129
130+ 方式一:通过命令行生成此文件,命令如下:
131
132```
133restool -i entry/src/main -j entry/src/main/module.json -p com.ohos.demo -o out -r out/ResourceTable.txt --ids out -f
134```
135
136+ 方式二:自定义文件,文件名必须是id_defined.json,文件内容如下:
137
138```
139{
140    "record" :
141    [
142        {
143            "id" : "0x01000000", // 资源需要固定的ID值
144            "name" : "app_name", // 资源名称
145            "type" : "string" // 资源类型
146        }
147    ]
148}
149```
150
151步骤二:完成资源ID固定。完成固定的方式有两种,通过命令一完成固定或者将自定义的id_defined.json放在resource/base/element/目录下后通过命令二完成固定。
152
153+ 命令一:
154```
155restool -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
156```
157
158+ 命令二:
159```
160restool -i entry/src/main -j entry/src/main/module.json -p com.ohos.demo -o out1 -r out1/ResourceTable.txt  -f
161```
162## restool工具错误码
163
164### 11201001 加载依赖库失败
165
166**错误信息**
167
168Failed to load the library 'xxx.dll'.
169
170**错误描述**
171
172加载依赖库失败。
173
174**可能原因**
175
1761. 依赖库路径错误或路径无访问权限。
1772. 三方依赖库未安装,或路径错误,或路径无访问权限。
1783. 出现Windows系统报错,由于在用户环境变量和系统环境变量中,排在xxx.dll路径之前的路径文件无法被访问,导致加载依赖库时搜索环境变量错误。
179
180**处理步骤**
181
1821. 检查依赖库路径是否准确且有访问权限。
1832. 按照错误信息提示安装缺失的三方依赖库,并保证三方依赖库路径准确且有访问权限。
1843. 将SDK下的`xxx/openharmony/previewer/common/bin`路径及依赖库所在路径添加至环境变量Path的前两行,两者先后顺序无限制。
185
186### 11203001 JSON文件打开失败
187
188**错误信息**
189
190Failed to open the JSON file 'xxx.json'.
191
192**错误描述**
193
194JSON文件打开失败。
195
196**可能原因**
197
198JSON文件路径错误,或无访问权限。
199
200**处理步骤**
201
202检查JSON文件路径是否准确且有访问权限。
203
204### 11203002 JSON文件解析失败
205
206**错误信息**
207
208Failed to parse the JSON file: incorrect format.
209
210**错误描述**
211
212JSON文件格式错误,解析失败。
213
214**可能原因**
215
216JSON文件格式错误,如包含多余的逗号等。
217
218**处理步骤**
219
220检查JSON文件格式,可参考[JSON](https://www.json.org/json-zh.html)221
222### 11203003 JSON节点的类型与预期不匹配
223
224**错误信息**
225
226The value type of node 'xxx' does not match. Expected type: xxx.
227
228**错误描述**
229
230JSON中`xxx`节点的类型错误。
231
232**可能原因**
233
234JSON中对应节点的类型错误,如预期类型是string,实际类型为number。
235
236**处理步骤**
237
238检查JSON中`xxx`节点的类型。
239
240### 11203004 JSON中缺少必需节点
241
242**错误信息**
243
244The required node 'xxx' is missing.
245
246**错误描述**
247
248JSON中缺少必需的`xxx`节点。
249
250**可能原因**
251
252JSON中没有配置对应的必需节点,如`name`、`value`等。
253
254**处理步骤**
255
256检查JSON中是否缺少`xxx`节点。
257
258### 11203005 JSON中存在空object或空数组
259
260**错误信息**
261
262The array or object node 'xxx' cannot be empty.
263
264**错误描述**
265
266JSON中`xxx`节点为空object或空数组。
267
268**可能原因**
269
270JSON中对应节点为空,如object配置为{},或数组配置为[]。
271
272**处理步骤**
273
274检查JSON中`xxx`节点是否为空。
275
276### 11203006 JSON中包含多个子节点
277
278**错误信息**
279
280The node 'xxx' in the JSON file can have only one member.
281
282**错误描述**
283
284JSON中`xxx`节点仅能包含一个子节点。
285
286**可能原因**
287
288JSON中对应节点包含了多个子节点。
289
290**处理步骤**
291
292检查`xxx`节点是否仅包含一个子节点。
293
294### 11203007 无效的JSON节点名称
295
296**错误信息**
297
298Invalid node name 'xxx'. Valid values: ["boolean","color","float","id","intarray","integer","pattern","plural","strarray","string","symbol","theme"].
299
300**错误描述**
301
302无效的JSON节点名称`xxx`。
303
304**可能原因**
305
306JSON中对应节点的名称错误,不在指定的名称["boolean","color","float","id","intarray","integer","pattern","plural","strarray","string","symbol","theme"]范围内。
307
308**处理步骤**
309
310检查JSON中`xxx`节点的名称是否在指定的范围内。
311
312### 11204001 创建文件失败
313
314**错误信息**
315
316Failed to create the directory or file 'xxx'.
317
318**错误描述**
319
320创建文件失败。
321
322**可能原因**
323
324文件路径错误,或无访问权限。
325
326**处理步骤**
327
328检查文件路径是否准确且有访问权限。
329
330### 11204003 删除文件失败
331
332**错误信息**
333
334Failed to delete the directory or file 'xxx'.
335
336**错误描述**
337
338删除文件失败。
339
340**可能原因**
341
342文件路径错误,或无访问权限。
343
344**处理步骤**
345
346检查文件路径是否准确且有访问权限。
347
348### 11204004 拷贝文件失败
349
350**错误信息**
351
352Failed to copy the file from 'xxx' to 'xxx'.
353
354**错误描述**
355
356拷贝文件失败。
357
358**可能原因**
359
360文件路径错误,或无访问权限。
361
362**处理步骤**
363
364检查文件路径是否准确且有访问权限。
365
366### 11204005 打开文件失败
367
368**错误信息**
369
370Failed to open the file 'xxx'.
371
372**错误描述**
373
374打开文件失败。
375
376**可能原因**
377
378文件路径错误,或无访问权限。
379
380**处理步骤**
381
382检查文件路径是否准确且有访问权限。
383
384### 11204006 读取文件失败
385
386**错误信息**
387
388Failed to read the file 'xxx'.
389
390**错误描述**
391
392读取文件失败。
393
394**可能原因**
395
3961. 文件路径错误,或无访问权限。
3972. 文件内容为空。
398
399**处理步骤**
400
4011. 检查文件路径是否准确且有访问权限。
4022. 检查文件内容是否为空。
403
404### 11210001 未知命令选项
405
406**错误信息**
407
408Unknown option 'xxx'.
409
410**错误描述**
411
412未知命令选项。
413
414**可能原因**
415
416不支持对应命令选项。
417
418**处理步骤**
419
420检查命令是否准确,可使用-h查看命令帮助信息,输入正确的命令选项和参数。
421
422### 11210002 选项缺少必需参数
423
424**错误信息**
425
426Option 'xxx' requires an argument.
427
428**错误描述**
429
430选项缺少必需的参数。
431
432**可能原因**
433
434选项缺少必需的参数,如-i/--inputPath没有指定输入路径。
435
436**处理步骤**
437
438检查命令是否准确,可使用-h查看命令帮助信息,输入正确的命令选项和参数。
439
440### 11210003 无效参数
441
442**错误信息**
443
444Invalid argument value 'xxx'.
445
446**错误描述**
447
448无效的参数。
449
450**可能原因**
451
452命令选项均需带有前缀短划线`-`,选项对应的参数无短划线,若输入选项时遗漏了短划线,该选项将被当作参数处理,无法生效,如输入`restool inputPath`。
453
454**处理步骤**
455
456检查命令是否准确,可使用-h查看命令帮助信息,输入正确的命令选项和参数。
457
458### 11210004 无效的输入路径
459
460**错误信息**
461
462Invalid input path 'xxx'.
463
464**错误描述**
465
466无效的输入路径。
467
468**可能原因**
469
470-i/--inputPath选项指定的路径参数错误,或无访问权限。
471
472**处理步骤**
473
474检查路径参数是否准确且有访问权限。
475
476### 11210005 重复的输入路径
477
478**错误信息**
479
480Duplicated input path 'xxx'.
481
482**错误描述**
483
484重复的输入路径。
485
486**可能原因**
487
488多个-i/--inputPath选项指定了相同的输入路径。
489
490**处理步骤**
491
492检查-i/--inputPath选项指定的路径是否重复。
493
494### 11210006 包名存在冲突
495
496**错误信息**
497
498The package names 'xxx' and 'xxx' conflict.
499
500**错误描述**
501
502包名存在冲突。
503
504**可能原因**
505
506多次指定了-p/--packageName选项。
507
508**处理步骤**
509
510检查是否多次指定-p/--packageName选项。
511
512### 11210007 无效的输出路径
513
514**错误信息**
515
516Invalid output path 'xxx'.
517
518**错误描述**
519
520无效的输出路径。
521
522**可能原因**
523
524-o/--outputPath指定的输出路径不存在,或无访问权限。
525
526**处理步骤**
527
528检查路径参数是否准确且有访问权限。
529
530### 11210008 输出路径存在冲突
531
532**错误信息**
533
534The output paths 'xxx' and 'xxx' conflict.
535
536**错误描述**
537
538输出路径存在冲突。
539
540**可能原因**
541
542多次指定了-o/--outputPath选项。
543
544**处理步骤**
545
546检查是否多次指定-o/--outputPath选项。
547
548### 11210009 重复的资源头文件路径
549
550**错误信息**
551
552Duplicated resource header path 'xxx'.
553
554**错误描述**
555
556重复的资源头文件路径。
557
558**可能原因**
559
560多个-r/--resHeader选项指定了相同的资源头文件路径。
561
562**处理步骤**
563
564检查-r/--resHeader选项指定的资源头文件路径是否重复。
565
566### 11210010 模块名称存在冲突
567
568**错误信息**
569
570The module names 'xxx' and 'xxx' conflict.
571
572**错误描述**
573
574模块名称存在冲突。
575
576**可能原因**
577
578多次指定了-m/--modules选项。
579
580**处理步骤**
581
582检查是否多次指定-m/--modules选项。
583
584### 11210011 重复的模块名称
585
586**错误信息**
587
588Duplicated module name 'xxx'.
589
590**错误描述**
591
592重复的模块名称。
593
594**可能原因**
595
596-m/--modules选项指定了重复的模块名称,如`-m entry,entry`。
597
598**处理步骤**
599
600检查-m/--modules选项指定的模块名称是否重复。
601
602### 11210012 应用配置文件存在冲突
603
604**错误信息**
605
606The paths 'xxx' and 'xxx' of the module.json (in the stage model) or config.json (in the FA model) file conflict.
607
608**错误描述**
609
610应用配置文件[module.json(Stage模型)](../quick-start/module-configuration-file.md)或[config.json(FA模型)](../quick-start/application-configuration-file-overview-fa.md)的路径存在冲突。
611
612**可能原因**
613
614多次指定了-j/--json选项。
615
616**处理步骤**
617
618检查是否多次指定-j/--json选项。
619
620### 11210013 无效的资源起始id
621
622**错误信息**
623
624Invalid start ID 'xxx'. It is out of range.
625
626**错误描述**
627
628无效的资源起始id。
629
630**可能原因**
631
632通过-e/--startId指定的资源起始id不在指定范围内。
633
634**处理步骤**
635
636检查资源起始id是否在[0x01000000, 0x06FFFFFF) 或 [0x08000000, 0xFFFFFFFF)的范围内。
637
638### 11210014 重复的增量资源文件路径
639
640**错误信息**
641
642Duplicated append path 'xxx'.
643
644**错误描述**
645
646重复的增量资源文件路径。
647
648**可能原因**
649
650多个-x/--append选项指定了相同的增量资源文件路径。
651
652**处理步骤**
653
654检查-x/--append指定的增量资源文件路径是否重复。
655
656### 11210015 target-config存在冲突
657
658**错误信息**
659
660The target configurations 'xxx' and 'xxx' conflict.
661
662**错误描述**
663
664多个target-config选项指定的参数存在冲突。
665
666**可能原因**
667
668多次指定了--target-config选项。
669
670**处理步骤**
671
672检查是否多次指定--target-config选项。
673
674### 11210016 无效的target-config
675
676**错误信息**
677
678Invalid target configuration argument 'xxx'. The argument format for option --target-config should be like 'Locale[zh_CN,en_US];Device[phone]'.
679
680**错误描述**
681
682无效的target-config参数。
683
684**可能原因**
685
686--target-config选项指定的参数格式错误。
687
688**处理步骤**
689
690检查--target-config选项对应参数格式是否准确,如:`Locale[zh_CN,en_US];Device[phone]`,具体格式信息可以参考[restool支持的命令选项](#restool支持的命令选项)中关于target-config的说明。
691
692### 11210017 无效的系统资源id_defined.json路径
693
694**错误信息**
695
696Invalid system id_defined.json path 'xxx'.
697
698**错误描述**
699
700无效的系统资源id_defined.json路径。
701
702**可能原因**
703
704通过--defined-sysids指定的系统资源的id_defined.json路径错误或无访问权限。
705
706**处理步骤**
707
708检查系统资源的id_defined.json路径是否准确且有访问权限。
709
710### 11210018 重复的系统资源id_defined.json路径
711
712**错误信息**
713
714Duplicated system id_defined.json path 'xxx'.
715
716**错误描述**
717
718--defined-sysids选项指定的文件路径重复。
719
720**可能原因**
721
722多个--defined-sysids选项指定了相同的系统资源id_defined.json路径。
723
724**处理步骤**
725
726检查--defined-sysids选项指定的系统资源id_defined.json文件路径是否重复。
727
728### 11210019 compressed-config存在冲突
729
730**错误信息**
731
732The compression JSON paths 'xxx' and 'xxx' conflict.
733
734**错误描述**
735
736多个--compressed-config选项指定的参数存在冲突。
737
738**可能原因**
739
740多次指定了--compressed-config选项。
741
742**处理步骤**
743
744检查是否多次指定--compressed-config选项。
745
746### 11210020 参数非ASCII值
747
748**错误信息**
749
750The argument value 'xxx' is not an ASCII value.
751
752**错误描述**
753
754参数非ASCII值。
755
756**可能原因**
757
758输入、输出路径等参数中存在中文或其他非ASCII字符。
759
760**处理步骤**
761
762检查参数中是否存在中文或者其他非ASCII字符。
763
764### 11210021 选项之间存在互斥
765
766**错误信息**
767
768Options 'xxx' and 'xxx' cannot be used together.
769
770**错误描述**
771
772不能同时指定两个互斥的选项。
773
774**可能原因**
775
776同时指定了两个互斥的选项,如`-x`和`--target-config`。
777
778**处理步骤**
779
780检查命令是否准确,避免指定互斥的选项,可以使用-h查看命令帮助信息,输入正确的命令选项和参数。
781
782### 11210022 包名为空
783
784**错误信息**
785
786The package name is empty. It should be specified with option -p/--packageName.
787
788**错误描述**
789
790包名为空。
791
792**可能原因**
793
794未指定-p/--packageName选项。
795
796**处理步骤**
797
798检查是否通过-p/--packageName选项指定包名。
799
800### 11210023 资源头文件路径为空
801
802**错误信息**
803
804The resource header path (for example, ./ResourceTable.js, ./ResourceTable.h) is empty. It should be specified with option -r/--resHeader.
805
806**错误描述**
807
808资源头文件的路径为空。
809
810**可能原因**
811
812未通过-r/--resHeader选项指定资源头文件路径。
813
814**处理步骤**
815
816检查是否通过-r/--resHeader选项指定资源头文件路径。
817
818### 11210024 dump命令缺少HAP包路径
819
820**错误信息**
821
822The HAP path of the resource dump command is missing.
823
824**错误描述**
825
826dump命令缺少HAP包路径。
827
828**可能原因**
829
830dump命令未指定HAP包路径。
831
832**处理步骤**
833
834检查dump命令是否指定HAP包路径,如:`restool dump xxx/entry.hap`。
835
836### 11210025 dump命令指定的HAP包路径无效
837
838**错误信息**
839
840Invalid HAP path 'xxx' in the resource dump command.
841
842**错误描述**
843
844dump命令指定HAP包路径无效。
845
846**可能原因**
847
848dump命令指定的HAP包路径错误或无访问权限。
849
850**处理步骤**
851
852检查dump命令指定的HAP包路径是否准确且有访问权限。
853
854### 11210026 无效的子线程数量
855
856**错误信息**
857
858Invalid thread count 'xxx'. It should be an integer greater than 0.
859
860**错误描述**
861
862无效的子线程数量。
863
864**可能原因**
865
866--thread选项指定的子线程数量为负数或小数。
867
868**处理步骤**
869
870检查--thread选项的参数是否为大于0的整数。
871
872### 11211001 输出路径已存在
873
874**错误信息**
875
876The output path exists. Specify option -f/--forceWrite to overwrite.
877
878**错误描述**
879
880输出路径已存在。
881
882**可能原因**
883
884通过-o/--output指定的输出路径下已存在文件,无法直接覆盖。
885
886**处理步骤**
887
888检查输出路径下是否已有文件,可手动删除或指定-f/--forceWrite选项强制覆盖。
889
890### 11211002 缺少模块配置文件路径
891
892**错误信息**
893
894There are multiple input paths, but the path of the module.json (in the stage model) or config.json (in the FA model) file is not specified with option -j/--json.
895
896**错误描述**
897
898缺少应用配置文件[module.json(Stage模型)](../quick-start/module-configuration-file.md)或[config.json(FA模型)](../quick-start/application-configuration-file-overview-fa.md)的路径。
899
900**可能原因**
901
902当通过-i/--inputPath仅指定了单个输入路径时,restool默认从输入路径的父目录读取应用配置文件;当指定了多个输入路径时,如`restool -i xxx\AppScope -i xxx\entry\main`,需要通过-j/--json明确指定应用配置文件的路径。
903
904**处理步骤**
905
906检查是否通过-j/--json明确指定应用配置文件路径。
907
908### 11211003 无效的模块类型
909
910**错误信息**
911
912Invalid module type 'xxx'. Valid values: ["entry", "har", "shared", "feature"].
913
914**错误描述**
915
916无效的模块类型。
917
918**可能原因**
919
920应用配置文件[module.json(Stage模型)](../quick-start/module-configuration-file.md)或[config.json(FA模型)](../quick-start/application-configuration-file-overview-fa.md)中指定的模块类型错误,取值不在["entry", "har", "shared", "feature"]范围内。
921
922**处理步骤**
923
924检查模块类型是否在指定的范围内。
925
926### 11211004 资源起始id与id_defined.json存在冲突
927
928**错误信息**
929
930The start ID 'xxx' specified by option -e/--startId conflict with the IDs in the id_defined.json file.
931
932**错误描述**
933
934通过-e/--startId指定的资源起始id与id_defined.json文件存在冲突。
935
936**可能原因**
937
938默认情况下,资源起始id为`0x01000000`,编译时资源id依次递增,同时restool提供了两种方式自定义资源id:
9391. 选项-e/--startId:可以在[0x01000000, 0x06FFFFFF) 或 [0x08000000, 0xFFFFFFFF)的范围内指定资源起始id。
9402. [固定资源ID](#固定资源id):通过id_defined.json文件指定资源id。
941
942若同时使用两种方式,可能导致同一个资源在两种方式下计算得到的资源id值不一致,存在冲突。
943
944**处理步骤**
945
946检查是否同时使用上述两种方式自定义资源id。
947
948### 11211007 id_defined.json中的资源类型无效
949
950**错误信息**
951
952Invalid resource type 'xxx' in the id_defined.json file. Valid values: ["boolean","color","float","id","intarray","integer","pattern","plural","strarray","string","symbol","theme"].
953
954**错误描述**
955
956id_defined.json中的资源类型无效。
957
958**可能原因**
959
960id_defined.json中资源类型type的取值不在["boolean","color","float","id","intarray","integer","pattern","plural","strarray","string","symbol","theme"]范围内。
961
962**处理步骤**
963
964检查资源类型是否在指定范围内。
965
966### 11211008 id_defined.json中的资源id无效
967
968**错误信息**
969
970Invalid ID value 'xxx' in the id_defined.json file. It should be a hexadecimal string, match the pattern ^0[xX][0-9a-fA-F]{8}, and be in the scope [0x01000000,0x06FFFFFF] or [0x08000000,0xFFFFFFFF].
971
972**错误描述**
973
974id_defined.json中资源id无效。
975
976**可能原因**
977
9781. id_defined.json中资源id非十六进制数。
9792. id取值不在[0x01000000,0x06FFFFFF] 或 [0x08000000,0xFFFFFFFF]的范围内。
980
981**处理步骤**
982
983检查资源id是否为十六进制格式且取值在[0x01000000,0x06FFFFFF] 或 [0x08000000,0xFFFFFFFF]范围内。
984
985<!--Del-->
986### 11211010 id_defined.json中的资源顺序无效
987
988**错误信息**
989
990The order value 'xxx' in the id_defined.json file does not match the record element sequence 'xxx'. Expected value: xxx.
991
992**错误描述**
993
994id_defined.json中资源的order属性值与资源在`record`数组中的声明顺序不一致。
995
996**可能原因**
997
998id_defined.json中资源的order属性值错误,如下错误示例:
999
1000```
1001{
1002    "startId": "0x07800000",
1003    "record": [
1004        {
1005            "type": "color",
1006            "name": "ohos_id_color_foreground",
1007            "order": 0
1008        },
1009        {
1010            "type": "color",
1011            "name": "ohos_id_color_foreground_dark",
1012            "order": 2
1013        }
1014    ]
1015}
1016```
1017
1018其中声明了两个资源,数组`record`的下标从0开始,第二个资源`ohos_id_color_foreground_dark`在数组中的下标为1,对应order的值也应该为1。
1019
1020**处理步骤**
1021
1022检查资源order属性值与资源在数组中的声明顺序是否一致。
1023<!--DelEnd-->
1024
1025### 11211012 id_defined.json定义了重复的id
1026
1027**错误信息**
1028
1029The names 'xxx' and 'xxx' in the id_defined.json file define the same ID.
1030
1031**错误描述**
1032
1033id_defined.json中两个资源定义了同一个资源id值。
1034
1035**可能原因**
1036
1037id_defined.json中两个资源定义了同一个资源id值。
1038
1039**处理步骤**
1040
1041检查id_defined.json中的资源id是否唯一且取值在[0x01000000,0x06FFFFFF] 或 [0x08000000,0xFFFFFFFF]范围内。
1042
1043### 11211014 错误的模块名称
1044
1045**错误信息**
1046
1047The module name 'xxx' is not found in ["yyy","zzz"], which is specified by -m/--modules.
1048
1049**错误描述**
1050
1051应用配置文件中的模块名称不在-m/--modules指定的模块名称列表内。
1052
1053**可能原因**
1054
10551. -m/--modules指定的模块名称列表错误。
10562. 应用配置文件[module.json(Stage模型)](../quick-start/module-configuration-file.md)或[config.json(FA模型)](../quick-start/application-configuration-file-overview-fa.md)中name指定的模块名称错误。
1057
1058**处理步骤**
1059
1060检查-m/--modules指定的模块名称列表中是否包含应用配置文件中name指定的模块名称。
1061
1062### 11211101 无效的资源文件
1063
1064**错误信息**
1065
1066Failed to scan resources: invalid path 'xxx'.
1067
1068**错误描述**
1069
1070扫描资源失败,无效的资源文件。
1071
1072**可能原因**
1073
1074资源文件不符合要求,比如:
10751. rawfile应该是一个文件夹,实际是文件。
10762. base/element下应该都是JSON文件,实际存在文件夹。
1077
1078**处理步骤**
1079
1080检查资源文件的类型是否正确,可参考[资源分类与访问-资源分类](../quick-start/resource-categories-and-access.md#资源分类)中关于各类资源文件的说明。
1081
1082### 11211103 无效的限定词目录
1083
1084**错误信息**
1085
1086Invalid qualifier key 'xxx'. It should match the pattern of the qualifiers directory, for example zh_CN or en_US.
1087
1088**错误描述**
1089
1090无效的限定词目录。
1091
1092**可能原因**
1093
1094限定词目录名称错误。
1095
1096**处理步骤**
1097
1098检查限定词目录名称是否准确,限定词目录命名规则可参考[资源分类与访问-限定词目录](../quick-start/resource-categories-and-access.md#资源目录)。
1099
1100### 11211104 无效的资源组目录
1101
1102**错误信息**
1103
1104Invalid resource directory name 'xxx'. Valid values: ["element","media","profile"].
1105
1106**错误描述**
1107
1108无效的资源组目录名称。
1109
1110**可能原因**
1111
1112限定词目录下的资源组目录名称错误,不在["element","media","profile"]范围内。
1113
1114**处理步骤**
1115
1116检查限定词目录下是否仅包含[资源组目录](../quick-start/resource-categories-and-access.md#资源组目录):`element`,`media`和`profile`。
1117
1118### 11211106 无效的翻译状态
1119
1120**错误信息**
1121
1122Invalid translation priority value 'xxx'. Valid values: ["code","translate","LT","customer"].
1123
1124**错误描述**
1125
1126无效的翻译状态。
1127
1128**可能原因**
1129
1130字符串或[单复数](../../application-dev/internationalization/l10n-singular-plural.md)资源的可翻译属性attr下的翻译状态属性priority配置错误,不在["code","translate","LT","customer"]范围内。
1131
1132**处理步骤**
1133
1134检查翻译状态priority的值是否准确,可参考[资源可翻译特性](../quick-start/resource-categories-and-access.md#资源可翻译特性)中关于priority的说明。
1135
1136### 11211107 不支持的element资源类型
1137
1138**错误信息**
1139
1140Unsupported element resource type 'xxx'. Valid values: ["integer","string","strarray","intarray","boolean","color","theme","plural","float","pattern","symbol"].
1141
1142**错误描述**
1143
1144不支持的element资源类型。
1145
1146**可能原因**
1147
1148element目录下json资源文件支持的资源类型为["integer","string","strarray","intarray","boolean","color","theme","plural","float","pattern","symbol"],不支持"id"。
1149
1150**处理步骤**
1151
1152检查element资源的类型是否准确,可参考[资源组目录](../quick-start/resource-categories-and-access.md#资源组目录)中关于element资源的说明。
1153
1154### 11211108 无效的颜色值
1155
1156**错误信息**
1157
1158Invalid color value 'xxx' of the resource 'xxx'. It can only reference '$color:xxx' or be '#rgb', '#argb', '#rrggbb', or '#aarrggbb'.
1159
1160**错误描述**
1161
1162无效的颜色值。
1163
1164**可能原因**
1165
1166color资源只支持以下两种格式:
11671. 引用其他color资源,如`$color:xxx`引用应用自身color资源,或`$ohos:color:xxx`引用系统color资源。
11682. 以`#`开头的rgb颜色值格式,如`#rgb`,`#argb`,`#rrggbb`,`#aarrggbb`。
1169
1170**处理步骤**
1171
1172检查color资源是否为正确的引用格式或rgb格式。
1173
1174### 11211109 无效的资源引用
1175
1176**错误信息**
1177
1178Invalid resource reference `$xxx:xxx`. Supported reference: `$(ohos:)?xxx:xxx`.
1179
1180**错误描述**
1181
1182无效的资源引用。
1183
1184**可能原因**
1185
1186资源引用只适用于同类型资源之间,如string.json中的字符串资源可以用`$string:xxx`引用应用自身的字符串资源,或使用`$ohos:string:xxx`引用系统字符串资源,但不能通过`$integer:xxx`引用整数资源。
1187
1188**处理步骤**
1189
1190检查资源引用方式是否正确。
1191
1192### 11211110 theme资源的parent为空
1193
1194**错误信息**
1195
1196The parent value of resource 'xxx' is empty. It should be a valid resource name.
1197
1198**错误描述**
1199
1200theme资源的parent值为空。
1201
1202**可能原因**
1203
1204theme资源的parent属性是可选的,其值需配置为其他theme资源的名称,不能是空字符串。如下正确示例:
1205```
1206{
1207  "theme": [
1208    {
1209      "name": "base",
1210      "value": [
1211        {
1212          "name": "width",
1213          "value": "wrap_content"
1214        },
1215        {
1216          "name": "height",
1217          "value": "wrap_content"
1218        },
1219        {
1220          "name": "size",
1221          "value": "25dp"
1222        }
1223      ]
1224    },
1225    {
1226      "name": "child",
1227      "parent": "base",
1228      "value": [
1229        {
1230          "name": "noTitle",
1231          "value": "yes"
1232        }
1233      ]
1234    }
1235  ]
1236}
1237```
1238其中声明了两个theme资源`base`和`child`,`base`不包含parent属性,`child`的parent配置为"base"。
1239
1240**处理步骤**
1241
1242检查theme资源的parent是否为空,如无需parent属性,可以将其移除。
1243
1244### 11211111 数组类型的资源超长
1245
1246**错误信息**
1247
1248The array resource 'xxx' is too large. The total length of the value of the array elements cannot exceed 65535.
1249
1250**错误描述**
1251
1252数组类型的资源超长。
1253
1254**可能原因**
1255
1256单个数组类型资源总长度超过了65535个字节。
1257
1258**处理步骤**
1259
1260检查数组类型资源是否超长,可以将其拆分为多个数组资源。
1261
1262### 11211112 无效的单复数资源类别
1263
1264**错误信息**
1265
1266Invalid quantity 'xxx' of the plural resource 'xxx'. Valid values: ["zero","one","two","few","many","other"].
1267
1268**错误描述**
1269
1270无效的单复数资源类别。
1271
1272**可能原因**
1273
1274单复数资源的类别属性quantity配置错误,不在["zero","one","two","few","many","other"]范围内。
1275
1276**处理步骤**
1277
1278检查单复数的类别是否准确,可参考[支持单复数](../../application-dev/internationalization/l10n-singular-plural.md)中关于单复数类别的说明。
1279
1280### 11211113 单复数资源的类别重复
1281
1282**错误信息**
1283
1284Duplicated quantity 'xxx' of the plural resource 'xxx'.
1285
1286**错误描述**
1287
1288单复数资源的类别重复。
1289
1290**可能原因**
1291
1292单复数资源中重复声明了相同的类别,如下错误示例中`eat_apple`重复声明了类别`one`:
1293```
1294{
1295  "plural": [
1296    {
1297      "name": "eat_apple",
1298      "value": [
1299        {
1300          "quantity": "one",
1301          "value": "%d apple"
1302        },
1303        {
1304          "quantity": "one",
1305          "value": "%d apple"
1306        },
1307        {
1308          "quantity": "other",
1309          "value": "%d apples"
1310        }
1311      ]
1312    }
1313  ]
1314}
1315```
1316
1317**处理步骤**
1318
1319检查单复数资源声明的类别是否重复,可参考[支持单复数](../../application-dev/internationalization/l10n-singular-plural.md)中关于单复数类别的说明。
1320
1321### 11211114 单复数资源缺少other类别
1322
1323**错误信息**
1324
1325The plural resource 'xxx' should contain the 'other' quantity.
1326
1327**错误描述**
1328
1329单复数资源应该包含other类别。
1330
1331**可能原因**
1332
1333单复数资源缺少other类别的声明。
1334
1335**处理步骤**
1336
1337检查单复数资源是否包含other类别的声明,可参考[支持单复数](../../application-dev/internationalization/l10n-singular-plural.md)中关于单复数类别的说明。
1338
1339### 11211115 无效的symbol资源
1340
1341**错误信息**
1342
1343Invalid value 'xxx' of the symbol resource 'xxx'. It should be in the scope [0xF0000,0xFFFFF] or [0x100000,0x10FFFF].
1344
1345**错误描述**
1346
1347无效的symbol资源值。
1348
1349**可能原因**
1350
1351symbol资源的值不在[0xF0000,0xFFFFF] 或 [0x100000,0x10FFFF]范围内。
1352
1353**处理步骤**
1354
1355检查symbol资源的值是否在指定范围内。
1356
1357### 11211116 无效的资源名称
1358
1359**错误信息**
1360
1361Invalid resource name 'xxx'. It should match the pattern [a-zA-Z0-9_].
1362
1363**错误描述**
1364
1365无效的资源名称。
1366
1367**可能原因**
1368
1369资源名称需要与规则[a-zA-Z0-9_]匹配,只能包含大小写字母、数字和下划线。
1370
1371**处理步骤**
1372
1373检查资源名称与规则[a-zA-Z0-9_]是否匹配。
1374
1375### 11211117 资源重复定义
1376
1377**错误信息**
1378
1379Resource 'xxx' conflict. It is first declared at 'xxx' and declared again at 'xxx'.
1380
1381**错误描述**
1382
1383资源重复定义。
1384
1385**可能原因**
1386
1387在多处定义了同类型同名的资源,存在冲突。
1388
1389**处理步骤**
1390
1391检查资源是否重复定义,可以修改资源名称或删除重复资源。
1392
1393### 11211118 资源id超过最大值
1394
1395**错误信息**
1396
1397The resource ID 'xxx' exceeds the maximum ID 'xxx'.
1398
1399**错误描述**
1400
1401资源id超过最大值。
1402
1403**可能原因**
1404
1405应用资源id的范围为[0x01000000,0x06FFFFFF] 或 [0x08000000,0xFFFFFFFF],资源过多,或指定了较大的资源起始id,可能导致id溢出超过最大值0x06FFFFFF 或 0xFFFFFFFF。
1406
1407**处理步骤**
1408
14091. 删除无用资源。
14102. 指定较小的资源起始id。
1411
1412### 11211120 引用的资源未定义
1413
1414**错误信息**
1415
1416The resource reference '$xxx:xxx' is not defined.
1417
1418**错误描述**
1419
1420引用的资源未定义。
1421
1422**可能原因**
1423
14241. 引用的资源不存在,如资源已被删除或重命名。
14252. 引用的资源所在的目录未通过-i/--inputPath指定为输入路径。
1426
1427**处理步骤**
1428
14291. 检查报错的资源是否存在。
14302. 检查资源所在的`resources`的父目录是否通过-i/--inputPath指定为输入路径,如报错信息中的资源定义在`xxx/entry/src/main/resources/base/element/string.json`中,则需指定`xxx/entry/src/main`为输入路径。
1431
1432### 11211124 解析resources.index文件失败
1433
1434**错误信息**
1435
1436Failed to parse the resources.index file.
1437
1438**错误描述**
1439
1440解析resources.index失败。
1441
1442**可能原因**
1443
1444resources.index格式不正确,如内容为空或文件开头不存在128字节的版本信息。
1445
1446**处理步骤**
1447
1448检查resources.index文件的来源,确保该文件是由restool工具编译生成。
1449
1450### 11212001 解析HAP包错误
1451
1452**错误信息**
1453
1454Failed to parse the HAP.
1455
1456**错误描述**
1457
1458解析HAP包失败。
1459
1460**可能原因**
1461
1462HAP包格式不正确,如经过多次压缩导致解压失败。
1463
1464**处理步骤**
1465
1466检查HAP包格式,确保HAP包由SDK工具直接生成,无压缩解压等修改操作。