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

Unity构建Android插件时Gradle重复类错误求助

解决Unity构建时Android模块与unity-classes.jar重复类冲突问题

问题根源

你的testingmodule-runtime模块把Unity核心类(像com.unity3d.player.UnityPlayer这类)打包进了aar里,而Unity自带的unity-classes.jar已经包含这些类,构建时自然会触发重复类报错。

具体解决办法

1. 修改Android库的依赖配置(最稳妥)

打开生成aar的Android库项目的build.gradle,把Unity相关依赖从implementation改成compileOnly——这样编译时会用到这些类,但不会把它们打包进最终的aar:

dependencies {
    // 把原来的implementation换成compileOnly
    compileOnly files('libs/unity-classes.jar')
    // 其他依赖不动,比如Health Connect的依赖
    implementation 'androidx.core:core-ktx:1.12.0'
}

如果用的是Android Studio新的libs.versions.toml依赖管理,就这么改:

[libraries]
unity-classes = { files = ["libs/unity-classes.jar"], configuration = "compileOnly" }

2. 手动清理aar里的重复类

要是没法修改原Android库项目,就直接动手改aar:

  1. 把aar文件重命名成zip,解压到临时文件夹
  2. 找到解压后的classes.jar,用jar命令删掉重复的类:
jar uf classes.jar -M com/unity3d/player/UnityPlayer.class
# 所有冲突类都这么删,或者干脆直接删掉整个com/unity3d/player目录
  1. 把修改后的文件重新打包成zip,再改回.aar后缀就行

3. 让Unity构建时排除重复类

在Unity项目的Assets/Plugins/Android/mainTemplate.gradle里加个打包规则,排除掉重复的类:

android {
    packagingOptions {
        exclude 'com/unity3d/player/**'
    }
}

⚠️ 注意:这个方法可能导致运行时找不到类,只有确定aar里的重复类完全由Unity提供时再用。

额外提醒

  • 生成aar前一定要检查:你的Android库只放自己的业务代码和Health Connect相关依赖,别把Unity的核心类也塞进去
  • 先跑Debug版本验证,Debug模式下重复类检查没那么严格,能更快排查问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:55:53