Unity Gradle构建processReleaseManifest失败 AndroidManifest属性冲突如何解决
Android Support与AndroidX清单属性冲突解决方案
错误根因
该报错由项目同时依赖旧版Android Support库、新版AndroidX库导致,两个库的清单文件均定义了appComponentFactory属性,Gradle合并清单时无法自动选择优先级。
推荐解决方案(Unity环境)
方案1:统一依赖规则(根本解决,优先尝试)
该方案无需手动修改清单文件,通过Gradle配置自动转换依赖格式消除冲突:
- 打开Unity编辑器,进入
Edit > Project Settings > Player面板,切换到Android平台配置标签 - 下拉找到Publishing Settings分类,勾选
Custom Gradle Properties Template选项,Unity会自动在Assets/Plugins/Android目录生成gradleTemplate.properties配置文件 - 打开该文件,在末尾追加两行配置:
android.useAndroidX=true android.enableJetifier=true
- 保存文件后重新执行构建,90%以上的同类冲突可直接解决
方案2:手动配置清单合并规则(方案1无效时使用)
如果存在特殊插件不支持Jetifier转换,再通过自定义清单指定属性优先级:
- 回到Player设置的Publishing Settings分类,勾选
Custom Main Manifest选项,Unity会生成主清单文件到Assets/Plugins/Android/AndroidManifest.xml,该文件是最终参与合并的配置入口,不要修改Temp目录下的临时生成文件 - 打开上述主清单文件,首先在根
<manifest>标签添加tools命名空间声明,示例如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的应用包名">
- 找到
<application>标签,添加两个属性指定冲突处理规则:
<application android:appComponentFactory="androidx.core.app.CoreComponentFactory" tools:replace="android:appComponentFactory" 其他原有属性...>
- 保存后重新构建即可
注意事项
- 所有自定义构建配置必须放在
Assets/Plugins/Android目录下,Temp目录的文件是构建时临时生成的,修改后会被覆盖 - 如果修改后仍有其他冲突,检查项目内第三方Android插件,优先替换为支持AndroidX的版本
内容的提问来源于stack exchange,提问作者Matt Orlando
相关产品推荐
相关产品推荐

