You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android构建mergeDebugResources报Illegal char <:>索引43异常问询

问题原因
  • 你全局搜索不到报错里提到的com.cmplay.tiles2.app-mergeDebugResources-6:/values/values.xml是正常的,这是资源合并阶段构建系统给中间资源块生成的虚拟路径,不是源码目录下存在的实体文件,直接搜索源码当然找不到。
  • 报错信息里的Illegal char <:>不是指源码里存在<:>这个字符串,尖括号只是报错用来包裹非法字符的格式标记,实际触发异常的字符是冒号:,这个冒号来自构建系统的虚拟路径,不是你手写在资源文件里的内容。

这个错误本质是Windows环境下资源编译器解析虚拟路径时抛出的异常,常见触发原因有两个:

  1. 资源文件数组标签使用错误:你贴出的arrays.xml中存储国家代码、文本内容时使用了裸<array>标签,这个标签对应的是TypedArray类型,资源编译器会尝试将标签内的item解析为资源引用、类型化数值,解析失败时会触发内部路径解析逻辑的bug,误将虚拟路径里的冒号判定为Windows路径的非法字符。
  2. 构建环境版本不兼容/路径不规范:如果你使用JDK17搭配7.0以下版本的Android Gradle插件(AGP),老版本AGP不兼容高版本JDK的路径解析逻辑,在Windows下会直接把虚拟资源路径里的冒号识别为非法字符;另外项目路径带空格、中文特殊字符(你当前路径中new one包含空格)也可能触发同类解析bug。
修复方案

按以下优先级操作,每一步做完都可以执行一次clean rebuild验证问题是否解决:

  • 修正资源数组标签:将arrays.xml中存储文本内容的<array name="CountryCodes">改为<string-array name="CountryCodes">,所有存储纯字符串内容的数组都不要使用裸<array>标签,存储整数值使用<integer-array>,只有需要存储混合类型资源引用时才用<array>。
  • 对齐构建版本:如果当前使用JDK17,将AGP版本升级到7.0及以上,确保AGP和Gradle版本匹配;如果暂时不想升级AGP,将Gradle依赖的JDK版本降到11即可。
  • 规范项目路径:将项目移动到无空格、无中文、无特殊字符的纯英文路径下,比如C:\dev\cmplay_tiles2这类目录,避免路径解析异常。
  • 清理损坏的构建缓存:关闭Android Studio后,删除项目根目录下的.gradle文件夹、app/build文件夹,再执行gradlew clean build --refresh-dependencies命令重新拉取依赖、构建项目,排除中间缓存损坏导致的异常。

内容的提问来源于stack exchange,提问作者Iron11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:24:21