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工具直接生成,无压缩解压等修改操作。