# restool工具
## 简介
restool是一种应用工程资源编译工具,通过编译资源文件创建资源索引、解析资源,开发者可以调用[资源管理接口](../reference/apis-localization-kit/js-apis-resource-manager.md)获取到对应资源。restool工具保存在sdk安装目录下的toolchains子目录。
## 参数说明
### restool支持的命令选项
| 选项 | 是否可缺省 | 是否存在入参 | 描述 |
| -------- | -------- | -------- | -------- |
| -i | 不可缺省 | 带参数 | 指定需要构建的资源目录或者资源中间件。
在资源目录中支持指定一个编译好的Hap资源目录(解压态),在此Hap的基础上完成叠加编译。
具体可参考如下[编译资源命令](#编译资源)。 |
| -j | 不可缺省 | 带参数 | 指定config.json或者module.json文件路径。 |
| -o | 不可缺省 | 带参数 | 指定已编译资源的输出路径。 |
| -p | 不可缺省 | 带参数 | 指定编译资源的bundle名称。 |
| -r | 不可缺省 | 带参数 | 指定资源的头文件路径,有三种格式:“.txt”、“.js”、“.h”。 |
| -e | 可缺省 | 带参数 | 指定生成资源的起始ID值,例如:0x01000000,范围[0x01000000, 0x06FFFFFF),[0x08000000, 0x41FFFFFF)。 |
| -f | 可缺省 | 不带参数 | 如果输出路径已经存在。强制删除,重新生成。 |
| -h | 可缺省 | 不带参数 | 查看工具帮助信息。 |
| -m | 可缺省 | 带参数 | 多模块联合编译时,指定多个模块名。用“,”连接。 |
| -x | 可缺省 | 带参数 | 指定生成中间文件的资源目录或单个资源路径。同一个命令可以多次指定。 |
| -z | 可缺省 | 不带参数 | 针对资源中间文件目录,生成编译结果。 |
| -v | 可缺省 | 不带参数 | 查看工具版本号。 |
| --ids | 可缺省 | 带参数 | 指定生成id_defined.json的输出目录。 |
| --defined-ids | 可缺省 | 带参数 | 指定id_defined.json文件路径,一般都是通过--ids生成。
id_defined.json包含资源类型、名称及其ID的列表。
开发者可以自定义id_defined.json中的资源ID。 |
| --icon-check | 可缺省 | 不带参数 | 开启icon和startWindowIcon的PNG图片校验功能。 |
| --thread | 可缺省 | 带参数 | 指定资源编译时开启的子线程数量。 |
| --target-config | 可缺省 | 带参数 | 与“-i”命令同时使用,支持选择编译。
具体可参考如下**target-config参数说明**。|
| --ignored-file | 可缺省 | 带参数 | 指定资源编译时文件和文件夹的忽略规则,格式为正则表达式,多个规则之间以“:”分隔。例如:“\\.git:\\.svn”表示忽略名称为“.git”、“.svn”的文件和文件夹。|
**target-config参数说明**
支持参数配置类型:MccMnc、Locale、Orientation、Device、ColorMode、Density。
参数格式说明:配置之间用“;”分割,配置中的值用“[]”封装,并使用“,”分割。
MccMnc匹配规则:Mcc(国家码)必须相同;Mnc(网络码)不存在时默认匹配,否则Mnc须相同才匹配。
Locale匹配规则:Locale匹配需满足以下三条规则。
1、语言须相同。
2、脚本(文字)不存在时默认匹配,否则必须相同。
3、国家或地区不存在时默认匹配,否则必须相同。
参数举例说明:Locale[zh_CN,en_US];Device[phone],该参数过滤其他语言,保留能匹配上zh_CN和en_US的语言;过滤其他设备,保留phone;其他参数(如MccMnc、Orientation等)配置不过滤均保留。
### restool支持的子命令
| 命令 | 描述 |
| --- | ---- |
| dump | 以json的格式输出hap包中resource的内容。 |
**dump命令**
```
restool dump [-h] [config] filePath
```
dump命令参数列表:
| 参数 | 是否可缺省 | 是否存在入参 | 描述 |
| --- | --------- | ---------- |------- |
| -h | 可缺省 | 不带参数 | 帮助信息。 |
| config | 可缺省 | 不带参数 | 只打印hap包中资源的限定词信息。 |
示例:
```sh
# 打印hap包中所有的资源信息
restool dump entry.hap
# 打印hap包中资源的限定词信息
restool dump config entry.hap
```
## 使用实例
例如,entry目录结构如下:
```
entry/src/main
| |----resource
| | |----base
| | | |----element
| | | |----media
| | | |----profile
| | |----rawfile
| | |----resfile
| |----config.json/module.json
```
### 编译资源
编译资源的方式有三种,分别是全量资源编译、增量资源编译和叠加资源编译。其中增量编译仅预览模式可用,用于预览开发阶段的组件效果;全量编译用于构建工程的资源文件;叠加编译支持将工程中的资源叠加进已有的Hap模板资源中,复用已编译的资源项。
1、全量资源编译,命令如下:
```
restool -i entry/src/main -j entry/src/main/module.json -p com.ohos.demo -o out -r out/ResourceTable.txt -f
```
2、增量资源编译,具体步骤如下:
步骤一:生成资源中间件,命令如下:
```
restool -x entry/src/main/resource -o out
```
步骤二:编译资源中间件,命令如下:
```
restool -i out1 -i out2 -o out -p com.ohos.demo -r out/ResourceTable.txt -j entry/src/main/module.json -f -z
```
3、叠加资源编译,命令如下:
```
# hapResource为解压后的Hap包路径
restool -i entry/src/main -i hapResource -j entry/src/main/module.json -p com.ohos.demo -o out -r out/ResourceTable.txt -f
```
### 固定资源ID
固定资源ID,具体步骤如下:
步骤一:创建id_defined.json文件。创建方式有两种,分别是通过命令行和自定义。
+ 方式一:通过命令行生成此文件,命令如下:
```
restool -i entry/src/main -j entry/src/main/module.json -p com.ohos.demo -o out -r out/ResourceTable.txt --ids out -f
```
+ 方式二:自定义文件,文件名必须是id_defined.json,文件内容如下:
```
{
"record" :
[
{
"id" : "0x01000000", // 资源需要固定的ID值
"name" : "app_name", // 资源名称
"type" : "string" // 资源类型
}
]
}
```
步骤二:完成资源ID固定。完成固定的方式有两种,通过命令一完成固定或者将自定义的id_defined.json放在resource/base/element/目录下后通过命令二完成固定。
+ 命令一:
```
restool -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
```
+ 命令二:
```
restool -i entry/src/main -j entry/src/main/module.json -p com.ohos.demo -o out1 -r out1/ResourceTable.txt -f
```
## restool工具错误码
### 11201001 加载依赖库失败
**错误信息**
Failed to load the library 'xxx.dll'.
**错误描述**
加载依赖库失败。
**可能原因**
1. 依赖库路径错误或路径无访问权限。
2. 三方依赖库未安装,或路径错误,或路径无访问权限。
3. 出现Windows系统报错,由于在用户环境变量和系统环境变量中,排在xxx.dll路径之前的路径文件无法被访问,导致加载依赖库时搜索环境变量错误。
**处理步骤**
1. 检查依赖库路径是否准确且有访问权限。
2. 按照错误信息提示安装缺失的三方依赖库,并保证三方依赖库路径准确且有访问权限。
3. 将SDK下的`xxx/openharmony/previewer/common/bin`路径及依赖库所在路径添加至环境变量Path的前两行,两者先后顺序无限制。
### 11203001 JSON文件打开失败
**错误信息**
Failed to open the JSON file 'xxx.json'.
**错误描述**
JSON文件打开失败。
**可能原因**
JSON文件路径错误,或无访问权限。
**处理步骤**
检查JSON文件路径是否准确且有访问权限。
### 11203002 JSON文件解析失败
**错误信息**
Failed to parse the JSON file: incorrect format.
**错误描述**
JSON文件格式错误,解析失败。
**可能原因**
JSON文件格式错误,如包含多余的逗号等。
**处理步骤**
检查JSON文件格式,可参考[JSON](https://www.json.org/json-zh.html)。
### 11203003 JSON节点的类型与预期不匹配
**错误信息**
The value type of node 'xxx' does not match. Expected type: xxx.
**错误描述**
JSON中`xxx`节点的类型错误。
**可能原因**
JSON中对应节点的类型错误,如预期类型是string,实际类型为number。
**处理步骤**
检查JSON中`xxx`节点的类型。
### 11203004 JSON中缺少必需节点
**错误信息**
The required node 'xxx' is missing.
**错误描述**
JSON中缺少必需的`xxx`节点。
**可能原因**
JSON中没有配置对应的必需节点,如`name`、`value`等。
**处理步骤**
检查JSON中是否缺少`xxx`节点。
### 11203005 JSON中存在空object或空数组
**错误信息**
The array or object node 'xxx' cannot be empty.
**错误描述**
JSON中`xxx`节点为空object或空数组。
**可能原因**
JSON中对应节点为空,如object配置为{},或数组配置为[]。
**处理步骤**
检查JSON中`xxx`节点是否为空。
### 11203006 JSON中包含多个子节点
**错误信息**
The node 'xxx' in the JSON file can have only one member.
**错误描述**
JSON中`xxx`节点仅能包含一个子节点。
**可能原因**
JSON中对应节点包含了多个子节点。
**处理步骤**
检查`xxx`节点是否仅包含一个子节点。
### 11203007 无效的JSON节点名称
**错误信息**
Invalid node name 'xxx'. Valid values: ["boolean","color","float","id","intarray","integer","pattern","plural","strarray","string","symbol","theme"].
**错误描述**
无效的JSON节点名称`xxx`。
**可能原因**
JSON中对应节点的名称错误,不在指定的名称["boolean","color","float","id","intarray","integer","pattern","plural","strarray","string","symbol","theme"]范围内。
**处理步骤**
检查JSON中`xxx`节点的名称是否在指定的范围内。
### 11204001 创建文件失败
**错误信息**
Failed to create the directory or file 'xxx'.
**错误描述**
创建文件失败。
**可能原因**
文件路径错误,或无访问权限。
**处理步骤**
检查文件路径是否准确且有访问权限。
### 11204003 删除文件失败
**错误信息**
Failed to delete the directory or file 'xxx'.
**错误描述**
删除文件失败。
**可能原因**
文件路径错误,或无访问权限。
**处理步骤**
检查文件路径是否准确且有访问权限。
### 11204004 拷贝文件失败
**错误信息**
Failed to copy the file from 'xxx' to 'xxx'.
**错误描述**
拷贝文件失败。
**可能原因**
文件路径错误,或无访问权限。
**处理步骤**
检查文件路径是否准确且有访问权限。
### 11204005 打开文件失败
**错误信息**
Failed to open the file 'xxx'.
**错误描述**
打开文件失败。
**可能原因**
文件路径错误,或无访问权限。
**处理步骤**
检查文件路径是否准确且有访问权限。
### 11204006 读取文件失败
**错误信息**
Failed to read the file 'xxx'.
**错误描述**
读取文件失败。
**可能原因**
1. 文件路径错误,或无访问权限。
2. 文件内容为空。
**处理步骤**
1. 检查文件路径是否准确且有访问权限。
2. 检查文件内容是否为空。
### 11210001 未知命令选项
**错误信息**
Unknown option 'xxx'.
**错误描述**
未知命令选项。
**可能原因**
不支持对应命令选项。
**处理步骤**
检查命令是否准确,可使用-h查看命令帮助信息,输入正确的命令选项和参数。
### 11210002 选项缺少必需参数
**错误信息**
Option 'xxx' requires an argument.
**错误描述**
选项缺少必需的参数。
**可能原因**
选项缺少必需的参数,如-i/--inputPath没有指定输入路径。
**处理步骤**
检查命令是否准确,可使用-h查看命令帮助信息,输入正确的命令选项和参数。
### 11210003 无效参数
**错误信息**
Invalid argument value 'xxx'.
**错误描述**
无效的参数。
**可能原因**
命令选项均需带有前缀短划线`-`,选项对应的参数无短划线,若输入选项时遗漏了短划线,该选项将被当作参数处理,无法生效,如输入`restool inputPath`。
**处理步骤**
检查命令是否准确,可使用-h查看命令帮助信息,输入正确的命令选项和参数。
### 11210004 无效的输入路径
**错误信息**
Invalid input path 'xxx'.
**错误描述**
无效的输入路径。
**可能原因**
-i/--inputPath选项指定的路径参数错误,或无访问权限。
**处理步骤**
检查路径参数是否准确且有访问权限。
### 11210005 重复的输入路径
**错误信息**
Duplicated input path 'xxx'.
**错误描述**
重复的输入路径。
**可能原因**
多个-i/--inputPath选项指定了相同的输入路径。
**处理步骤**
检查-i/--inputPath选项指定的路径是否重复。
### 11210006 包名存在冲突
**错误信息**
The package names 'xxx' and 'xxx' conflict.
**错误描述**
包名存在冲突。
**可能原因**
多次指定了-p/--packageName选项。
**处理步骤**
检查是否多次指定-p/--packageName选项。
### 11210007 无效的输出路径
**错误信息**
Invalid output path 'xxx'.
**错误描述**
无效的输出路径。
**可能原因**
-o/--outputPath指定的输出路径不存在,或无访问权限。
**处理步骤**
检查路径参数是否准确且有访问权限。
### 11210008 输出路径存在冲突
**错误信息**
The output paths 'xxx' and 'xxx' conflict.
**错误描述**
输出路径存在冲突。
**可能原因**
多次指定了-o/--outputPath选项。
**处理步骤**
检查是否多次指定-o/--outputPath选项。
### 11210009 重复的资源头文件路径
**错误信息**
Duplicated resource header path 'xxx'.
**错误描述**
重复的资源头文件路径。
**可能原因**
多个-r/--resHeader选项指定了相同的资源头文件路径。
**处理步骤**
检查-r/--resHeader选项指定的资源头文件路径是否重复。
### 11210010 模块名称存在冲突
**错误信息**
The module names 'xxx' and 'xxx' conflict.
**错误描述**
模块名称存在冲突。
**可能原因**
多次指定了-m/--modules选项。
**处理步骤**
检查是否多次指定-m/--modules选项。
### 11210011 重复的模块名称
**错误信息**
Duplicated module name 'xxx'.
**错误描述**
重复的模块名称。
**可能原因**
-m/--modules选项指定了重复的模块名称,如`-m entry,entry`。
**处理步骤**
检查-m/--modules选项指定的模块名称是否重复。
### 11210012 应用配置文件存在冲突
**错误信息**
The paths 'xxx' and 'xxx' of the module.json (in the stage model) or config.json (in the FA model) file conflict.
**错误描述**
应用配置文件[module.json(Stage模型)](../quick-start/module-configuration-file.md)或[config.json(FA模型)](../quick-start/application-configuration-file-overview-fa.md)的路径存在冲突。
**可能原因**
多次指定了-j/--json选项。
**处理步骤**
检查是否多次指定-j/--json选项。
### 11210013 无效的资源起始id
**错误信息**
Invalid start ID 'xxx'. It is out of range.
**错误描述**
无效的资源起始id。
**可能原因**
通过-e/--startId指定的资源起始id不在指定范围内。
**处理步骤**
检查资源起始id是否在[0x01000000, 0x06FFFFFF) 或 [0x08000000, 0xFFFFFFFF)的范围内。
### 11210014 重复的增量资源文件路径
**错误信息**
Duplicated append path 'xxx'.
**错误描述**
重复的增量资源文件路径。
**可能原因**
多个-x/--append选项指定了相同的增量资源文件路径。
**处理步骤**
检查-x/--append指定的增量资源文件路径是否重复。
### 11210015 target-config存在冲突
**错误信息**
The target configurations 'xxx' and 'xxx' conflict.
**错误描述**
多个target-config选项指定的参数存在冲突。
**可能原因**
多次指定了--target-config选项。
**处理步骤**
检查是否多次指定--target-config选项。
### 11210016 无效的target-config
**错误信息**
Invalid target configuration argument 'xxx'. The argument format for option --target-config should be like 'Locale[zh_CN,en_US];Device[phone]'.
**错误描述**
无效的target-config参数。
**可能原因**
--target-config选项指定的参数格式错误。
**处理步骤**
检查--target-config选项对应参数格式是否准确,如:`Locale[zh_CN,en_US];Device[phone]`,具体格式信息可以参考[restool支持的命令选项](#restool支持的命令选项)中关于target-config的说明。
### 11210017 无效的系统资源id_defined.json路径
**错误信息**
Invalid system id_defined.json path 'xxx'.
**错误描述**
无效的系统资源id_defined.json路径。
**可能原因**
通过--defined-sysids指定的系统资源的id_defined.json路径错误或无访问权限。
**处理步骤**
检查系统资源的id_defined.json路径是否准确且有访问权限。
### 11210018 重复的系统资源id_defined.json路径
**错误信息**
Duplicated system id_defined.json path 'xxx'.
**错误描述**
--defined-sysids选项指定的文件路径重复。
**可能原因**
多个--defined-sysids选项指定了相同的系统资源id_defined.json路径。
**处理步骤**
检查--defined-sysids选项指定的系统资源id_defined.json文件路径是否重复。
### 11210019 compressed-config存在冲突
**错误信息**
The compression JSON paths 'xxx' and 'xxx' conflict.
**错误描述**
多个--compressed-config选项指定的参数存在冲突。
**可能原因**
多次指定了--compressed-config选项。
**处理步骤**
检查是否多次指定--compressed-config选项。
### 11210020 参数非ASCII值
**错误信息**
The argument value 'xxx' is not an ASCII value.
**错误描述**
参数非ASCII值。
**可能原因**
输入、输出路径等参数中存在中文或其他非ASCII字符。
**处理步骤**
检查参数中是否存在中文或者其他非ASCII字符。
### 11210021 选项之间存在互斥
**错误信息**
Options 'xxx' and 'xxx' cannot be used together.
**错误描述**
不能同时指定两个互斥的选项。
**可能原因**
同时指定了两个互斥的选项,如`-x`和`--target-config`。
**处理步骤**
检查命令是否准确,避免指定互斥的选项,可以使用-h查看命令帮助信息,输入正确的命令选项和参数。
### 11210022 包名为空
**错误信息**
The package name is empty. It should be specified with option -p/--packageName.
**错误描述**
包名为空。
**可能原因**
未指定-p/--packageName选项。
**处理步骤**
检查是否通过-p/--packageName选项指定包名。
### 11210023 资源头文件路径为空
**错误信息**
The resource header path (for example, ./ResourceTable.js, ./ResourceTable.h) is empty. It should be specified with option -r/--resHeader.
**错误描述**
资源头文件的路径为空。
**可能原因**
未通过-r/--resHeader选项指定资源头文件路径。
**处理步骤**
检查是否通过-r/--resHeader选项指定资源头文件路径。
### 11210024 dump命令缺少HAP包路径
**错误信息**
The HAP path of the resource dump command is missing.
**错误描述**
dump命令缺少HAP包路径。
**可能原因**
dump命令未指定HAP包路径。
**处理步骤**
检查dump命令是否指定HAP包路径,如:`restool dump xxx/entry.hap`。
### 11210025 dump命令指定的HAP包路径无效
**错误信息**
Invalid HAP path 'xxx' in the resource dump command.
**错误描述**
dump命令指定HAP包路径无效。
**可能原因**
dump命令指定的HAP包路径错误或无访问权限。
**处理步骤**
检查dump命令指定的HAP包路径是否准确且有访问权限。
### 11210026 无效的子线程数量
**错误信息**
Invalid thread count 'xxx'. It should be an integer greater than 0.
**错误描述**
无效的子线程数量。
**可能原因**
--thread选项指定的子线程数量为负数或小数。
**处理步骤**
检查--thread选项的参数是否为大于0的整数。
### 11211001 输出路径已存在
**错误信息**
The output path exists. Specify option -f/--forceWrite to overwrite.
**错误描述**
输出路径已存在。
**可能原因**
通过-o/--output指定的输出路径下已存在文件,无法直接覆盖。
**处理步骤**
检查输出路径下是否已有文件,可手动删除或指定-f/--forceWrite选项强制覆盖。
### 11211002 缺少模块配置文件路径
**错误信息**
There 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.
**错误描述**
缺少应用配置文件[module.json(Stage模型)](../quick-start/module-configuration-file.md)或[config.json(FA模型)](../quick-start/application-configuration-file-overview-fa.md)的路径。
**可能原因**
当通过-i/--inputPath仅指定了单个输入路径时,restool默认从输入路径的父目录读取应用配置文件;当指定了多个输入路径时,如`restool -i xxx\AppScope -i xxx\entry\main`,需要通过-j/--json明确指定应用配置文件的路径。
**处理步骤**
检查是否通过-j/--json明确指定应用配置文件路径。
### 11211003 无效的模块类型
**错误信息**
Invalid module type 'xxx'. Valid values: ["entry", "har", "shared", "feature"].
**错误描述**
无效的模块类型。
**可能原因**
应用配置文件[module.json(Stage模型)](../quick-start/module-configuration-file.md)或[config.json(FA模型)](../quick-start/application-configuration-file-overview-fa.md)中指定的模块类型错误,取值不在["entry", "har", "shared", "feature"]范围内。
**处理步骤**
检查模块类型是否在指定的范围内。
### 11211004 资源起始id与id_defined.json存在冲突
**错误信息**
The start ID 'xxx' specified by option -e/--startId conflict with the IDs in the id_defined.json file.
**错误描述**
通过-e/--startId指定的资源起始id与id_defined.json文件存在冲突。
**可能原因**
默认情况下,资源起始id为`0x01000000`,编译时资源id依次递增,同时restool提供了两种方式自定义资源id:
1. 选项-e/--startId:可以在[0x01000000, 0x06FFFFFF) 或 [0x08000000, 0xFFFFFFFF)的范围内指定资源起始id。
2. [固定资源ID](#固定资源id):通过id_defined.json文件指定资源id。
若同时使用两种方式,可能导致同一个资源在两种方式下计算得到的资源id值不一致,存在冲突。
**处理步骤**
检查是否同时使用上述两种方式自定义资源id。
### 11211007 id_defined.json中的资源类型无效
**错误信息**
Invalid resource type 'xxx' in the id_defined.json file. Valid values: ["boolean","color","float","id","intarray","integer","pattern","plural","strarray","string","symbol","theme"].
**错误描述**
id_defined.json中的资源类型无效。
**可能原因**
id_defined.json中资源类型type的取值不在["boolean","color","float","id","intarray","integer","pattern","plural","strarray","string","symbol","theme"]范围内。
**处理步骤**
检查资源类型是否在指定范围内。
### 11211008 id_defined.json中的资源id无效
**错误信息**
Invalid 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].
**错误描述**
id_defined.json中资源id无效。
**可能原因**
1. id_defined.json中资源id非十六进制数。
2. id取值不在[0x01000000,0x06FFFFFF] 或 [0x08000000,0xFFFFFFFF]的范围内。
**处理步骤**
检查资源id是否为十六进制格式且取值在[0x01000000,0x06FFFFFF] 或 [0x08000000,0xFFFFFFFF]范围内。
### 11211010 id_defined.json中的资源顺序无效
**错误信息**
The order value 'xxx' in the id_defined.json file does not match the record element sequence 'xxx'. Expected value: xxx.
**错误描述**
id_defined.json中资源的order属性值与资源在`record`数组中的声明顺序不一致。
**可能原因**
id_defined.json中资源的order属性值错误,如下错误示例:
```
{
"startId": "0x07800000",
"record": [
{
"type": "color",
"name": "ohos_id_color_foreground",
"order": 0
},
{
"type": "color",
"name": "ohos_id_color_foreground_dark",
"order": 2
}
]
}
```
其中声明了两个资源,数组`record`的下标从0开始,第二个资源`ohos_id_color_foreground_dark`在数组中的下标为1,对应order的值也应该为1。
**处理步骤**
检查资源order属性值与资源在数组中的声明顺序是否一致。
### 11211012 id_defined.json定义了重复的id
**错误信息**
The names 'xxx' and 'xxx' in the id_defined.json file define the same ID.
**错误描述**
id_defined.json中两个资源定义了同一个资源id值。
**可能原因**
id_defined.json中两个资源定义了同一个资源id值。
**处理步骤**
检查id_defined.json中的资源id是否唯一且取值在[0x01000000,0x06FFFFFF] 或 [0x08000000,0xFFFFFFFF]范围内。
### 11211014 错误的模块名称
**错误信息**
The module name 'xxx' is not found in ["yyy","zzz"], which is specified by -m/--modules.
**错误描述**
应用配置文件中的模块名称不在-m/--modules指定的模块名称列表内。
**可能原因**
1. -m/--modules指定的模块名称列表错误。
2. 应用配置文件[module.json(Stage模型)](../quick-start/module-configuration-file.md)或[config.json(FA模型)](../quick-start/application-configuration-file-overview-fa.md)中name指定的模块名称错误。
**处理步骤**
检查-m/--modules指定的模块名称列表中是否包含应用配置文件中name指定的模块名称。
### 11211101 无效的资源文件
**错误信息**
Failed to scan resources: invalid path 'xxx'.
**错误描述**
扫描资源失败,无效的资源文件。
**可能原因**
资源文件不符合要求,比如:
1. rawfile应该是一个文件夹,实际是文件。
2. base/element下应该都是JSON文件,实际存在文件夹。
**处理步骤**
检查资源文件的类型是否正确,可参考[资源分类与访问-资源分类](../quick-start/resource-categories-and-access.md#资源分类)中关于各类资源文件的说明。
### 11211103 无效的限定词目录
**错误信息**
Invalid qualifier key 'xxx'. It should match the pattern of the qualifiers directory, for example zh_CN or en_US.
**错误描述**
无效的限定词目录。
**可能原因**
限定词目录名称错误。
**处理步骤**
检查限定词目录名称是否准确,限定词目录命名规则可参考[资源分类与访问-限定词目录](../quick-start/resource-categories-and-access.md#资源目录)。
### 11211104 无效的资源组目录
**错误信息**
Invalid resource directory name 'xxx'. Valid values: ["element","media","profile"].
**错误描述**
无效的资源组目录名称。
**可能原因**
限定词目录下的资源组目录名称错误,不在["element","media","profile"]范围内。
**处理步骤**
检查限定词目录下是否仅包含[资源组目录](../quick-start/resource-categories-and-access.md#资源组目录):`element`,`media`和`profile`。
### 11211106 无效的翻译状态
**错误信息**
Invalid translation priority value 'xxx'. Valid values: ["code","translate","LT","customer"].
**错误描述**
无效的翻译状态。
**可能原因**
字符串或[单复数](../../application-dev/internationalization/l10n-singular-plural.md)资源的可翻译属性attr下的翻译状态属性priority配置错误,不在["code","translate","LT","customer"]范围内。
**处理步骤**
检查翻译状态priority的值是否准确,可参考[资源可翻译特性](../quick-start/resource-categories-and-access.md#资源可翻译特性)中关于priority的说明。
### 11211107 不支持的element资源类型
**错误信息**
Unsupported element resource type 'xxx'. Valid values: ["integer","string","strarray","intarray","boolean","color","theme","plural","float","pattern","symbol"].
**错误描述**
不支持的element资源类型。
**可能原因**
element目录下json资源文件支持的资源类型为["integer","string","strarray","intarray","boolean","color","theme","plural","float","pattern","symbol"],不支持"id"。
**处理步骤**
检查element资源的类型是否准确,可参考[资源组目录](../quick-start/resource-categories-and-access.md#资源组目录)中关于element资源的说明。
### 11211108 无效的颜色值
**错误信息**
Invalid color value 'xxx' of the resource 'xxx'. It can only reference '$color:xxx' or be '#rgb', '#argb', '#rrggbb', or '#aarrggbb'.
**错误描述**
无效的颜色值。
**可能原因**
color资源只支持以下两种格式:
1. 引用其他color资源,如`$color:xxx`引用应用自身color资源,或`$ohos:color:xxx`引用系统color资源。
2. 以`#`开头的rgb颜色值格式,如`#rgb`,`#argb`,`#rrggbb`,`#aarrggbb`。
**处理步骤**
检查color资源是否为正确的引用格式或rgb格式。
### 11211109 无效的资源引用
**错误信息**
Invalid resource reference `$xxx:xxx`. Supported reference: `$(ohos:)?xxx:xxx`.
**错误描述**
无效的资源引用。
**可能原因**
资源引用只适用于同类型资源之间,如string.json中的字符串资源可以用`$string:xxx`引用应用自身的字符串资源,或使用`$ohos:string:xxx`引用系统字符串资源,但不能通过`$integer:xxx`引用整数资源。
**处理步骤**
检查资源引用方式是否正确。
### 11211110 theme资源的parent为空
**错误信息**
The parent value of resource 'xxx' is empty. It should be a valid resource name.
**错误描述**
theme资源的parent值为空。
**可能原因**
theme资源的parent属性是可选的,其值需配置为其他theme资源的名称,不能是空字符串。如下正确示例:
```
{
"theme": [
{
"name": "base",
"value": [
{
"name": "width",
"value": "wrap_content"
},
{
"name": "height",
"value": "wrap_content"
},
{
"name": "size",
"value": "25dp"
}
]
},
{
"name": "child",
"parent": "base",
"value": [
{
"name": "noTitle",
"value": "yes"
}
]
}
]
}
```
其中声明了两个theme资源`base`和`child`,`base`不包含parent属性,`child`的parent配置为"base"。
**处理步骤**
检查theme资源的parent是否为空,如无需parent属性,可以将其移除。
### 11211111 数组类型的资源超长
**错误信息**
The array resource 'xxx' is too large. The total length of the value of the array elements cannot exceed 65535.
**错误描述**
数组类型的资源超长。
**可能原因**
单个数组类型资源总长度超过了65535个字节。
**处理步骤**
检查数组类型资源是否超长,可以将其拆分为多个数组资源。
### 11211112 无效的单复数资源类别
**错误信息**
Invalid quantity 'xxx' of the plural resource 'xxx'. Valid values: ["zero","one","two","few","many","other"].
**错误描述**
无效的单复数资源类别。
**可能原因**
单复数资源的类别属性quantity配置错误,不在["zero","one","two","few","many","other"]范围内。
**处理步骤**
检查单复数的类别是否准确,可参考[支持单复数](../../application-dev/internationalization/l10n-singular-plural.md)中关于单复数类别的说明。
### 11211113 单复数资源的类别重复
**错误信息**
Duplicated quantity 'xxx' of the plural resource 'xxx'.
**错误描述**
单复数资源的类别重复。
**可能原因**
单复数资源中重复声明了相同的类别,如下错误示例中`eat_apple`重复声明了类别`one`:
```
{
"plural": [
{
"name": "eat_apple",
"value": [
{
"quantity": "one",
"value": "%d apple"
},
{
"quantity": "one",
"value": "%d apple"
},
{
"quantity": "other",
"value": "%d apples"
}
]
}
]
}
```
**处理步骤**
检查单复数资源声明的类别是否重复,可参考[支持单复数](../../application-dev/internationalization/l10n-singular-plural.md)中关于单复数类别的说明。
### 11211114 单复数资源缺少other类别
**错误信息**
The plural resource 'xxx' should contain the 'other' quantity.
**错误描述**
单复数资源应该包含other类别。
**可能原因**
单复数资源缺少other类别的声明。
**处理步骤**
检查单复数资源是否包含other类别的声明,可参考[支持单复数](../../application-dev/internationalization/l10n-singular-plural.md)中关于单复数类别的说明。
### 11211115 无效的symbol资源
**错误信息**
Invalid value 'xxx' of the symbol resource 'xxx'. It should be in the scope [0xF0000,0xFFFFF] or [0x100000,0x10FFFF].
**错误描述**
无效的symbol资源值。
**可能原因**
symbol资源的值不在[0xF0000,0xFFFFF] 或 [0x100000,0x10FFFF]范围内。
**处理步骤**
检查symbol资源的值是否在指定范围内。
### 11211116 无效的资源名称
**错误信息**
Invalid resource name 'xxx'. It should match the pattern [a-zA-Z0-9_].
**错误描述**
无效的资源名称。
**可能原因**
资源名称需要与规则[a-zA-Z0-9_]匹配,只能包含大小写字母、数字和下划线。
**处理步骤**
检查资源名称与规则[a-zA-Z0-9_]是否匹配。
### 11211117 资源重复定义
**错误信息**
Resource 'xxx' conflict. It is first declared at 'xxx' and declared again at 'xxx'.
**错误描述**
资源重复定义。
**可能原因**
在多处定义了同类型同名的资源,存在冲突。
**处理步骤**
检查资源是否重复定义,可以修改资源名称或删除重复资源。
### 11211118 资源id超过最大值
**错误信息**
The resource ID 'xxx' exceeds the maximum ID 'xxx'.
**错误描述**
资源id超过最大值。
**可能原因**
应用资源id的范围为[0x01000000,0x06FFFFFF] 或 [0x08000000,0xFFFFFFFF],资源过多,或指定了较大的资源起始id,可能导致id溢出超过最大值0x06FFFFFF 或 0xFFFFFFFF。
**处理步骤**
1. 删除无用资源。
2. 指定较小的资源起始id。
### 11211120 引用的资源未定义
**错误信息**
The resource reference '$xxx:xxx' is not defined.
**错误描述**
引用的资源未定义。
**可能原因**
1. 引用的资源不存在,如资源已被删除或重命名。
2. 引用的资源所在的目录未通过-i/--inputPath指定为输入路径。
**处理步骤**
1. 检查报错的资源是否存在。
2. 检查资源所在的`resources`的父目录是否通过-i/--inputPath指定为输入路径,如报错信息中的资源定义在`xxx/entry/src/main/resources/base/element/string.json`中,则需指定`xxx/entry/src/main`为输入路径。
### 11211124 解析resources.index文件失败
**错误信息**
Failed to parse the resources.index file.
**错误描述**
解析resources.index失败。
**可能原因**
resources.index格式不正确,如内容为空或文件开头不存在128字节的版本信息。
**处理步骤**
检查resources.index文件的来源,确保该文件是由restool工具编译生成。
### 11212001 解析HAP包错误
**错误信息**
Failed to parse the HAP.
**错误描述**
解析HAP包失败。
**可能原因**
HAP包格式不正确,如经过多次压缩导致解压失败。
**处理步骤**
检查HAP包格式,确保HAP包由SDK工具直接生成,无压缩解压等修改操作。