将Unity项目集成到已有Android Studio项目时出现BuildConfig重复错误
解决Unity集成Android Studio时的
Program type already present: com.unity3d.player.BuildConfig错误 嘿,我之前把Unity项目嵌入现有Android Studio工程时,也踩过这个一模一样的坑!本质原因就是重复类定义冲突——Unity导出的模块和你的主工程(或者其他依赖模块)都生成了com.unity3d.player.BuildConfig这个类,打包编译时就撞车了。下面是几个亲测有效的解决办法,你可以挨个试试:
方法一:修改Unity模块的BuildConfig包名
- 打开Unity导出的Android模块(一般叫
UnityLibrary)中的build.gradle文件 - 在
android节点下添加或修改namespace配置,把它改成一个自定义的包名,比如:
android { namespace "com.yourteam.customunity.player" // 其他原有配置... }
- 这样Unity模块的
BuildConfig就会生成在这个新包下,不会和原有的com.unity3d.player下的类冲突 - 同步gradle后,执行
Build -> Clean Project再重新编译
方法二:排除Unity模块中的BuildConfig类
- 如果不想修改包名,可以在主工程的
build.gradle(或者依赖Unity模块的那个模块的build.gradle)里,对Unity模块的依赖做排除配置:
implementation(project(":UnityLibrary")) { exclude group: 'com.unity3d.player', module: 'BuildConfig' }
- 注意把
:UnityLibrary替换成你实际的Unity模块名称 - 同步gradle后清理缓存重新编译即可
方法三:关闭Unity模块的BuildConfig生成(Gradle 7.0+适用)
- 打开Unity模块的
build.gradle文件,在android节点下添加如下配置:
android { buildFeatures { buildConfig = false } // 其他原有配置... }
- 这个配置会让Unity模块不再生成
BuildConfig类,从根源上避免冲突
额外注意事项
- 如果你用的是较旧的Unity版本,导出的Gradle配置可能用
android.defaultConfig.applicationId代替namespace,记得对应调整配置项 - 每次修改gradle配置后,一定要点击Android Studio顶部的
Sync Project with Gradle Files按钮同步配置,再清理构建缓存重新编译
内容的提问来源于stack exchange,提问作者Shesha Shankar
相关产品推荐
相关产品推荐

