AndroidManifest.xml解析错误致构建任务失败,求解决方案实现无错构建
AndroidManifest.xml meta-data属性含<字符的构建错误解决
错误信息
- 核心错误:与元素类型“meta-data”关联的属性“android:value”的值不得包含 '<' 字符
- 失败任务:
:app:processDebugMainManifest - 异常详情:
com.android.manifmerger.ManifestMerger2$MergeFailureException: 解析D:\Skripsi\StoryAppFinal\app\src\main\AndroidManifest.xml时出错
已尝试操作
- 使用
--stacktrace选项获取堆栈跟踪 - 使用
--info/--debug选项查看详细日志 - 使用
--scan选项获取完整构建洞察
解决步骤
1. 转义XML特殊字符
XML属性值中不能直接使用<、>这类特殊字符,需要替换为对应的转义实体:
- 将
<替换为< - 将
>替换为>
示例:
原错误写法:
<meta-data android:name="api_config" android:value="<base-url>https://your-api-domain.com</base-url>" />
修正后:
<meta-data android:name="api_config" android:value="<base-url>https://your-api-domain.com</base-url>" />
2. 改用CDATA包裹(适用于复杂XML格式内容)
如果android:value需要存放XML结构的内容,可通过CDATA块包裹,注意在XML属性中需要转义CDATA的标签:
<meta-data android:name="api_config" android:value="<![CDATA[<base-url>https://your-api-domain.com</base-url>]]>" />
3. 迁移到资源文件(更优方案)
避免在Manifest中直接写复杂内容,将需要的字符串存入res/values/strings.xml:
<!-- strings.xml --> <string name="api_base_url"><![CDATA[<base-url>https://your-api-domain.com</base-url>]]></string>
然后在Manifest中引用:
<meta-data android:name="api_config" android:value="@string/api_base_url" />
完成以上修改后,重新执行Clean Project和Rebuild Project即可解决构建错误。
内容的提问来源于stack exchange,提问作者Farhan Adi Saputra
相关产品推荐
相关产品推荐

