构建失败::app:compileDebugKotlin任务执行失败,添加Sceneform依赖后问题仍存
嘿,咱们来拆解下你遇到的这个问题——哪怕更新了Kotlin标准库,添加sceneform-ux:1.0.0还是报错,核心原因主要有这几点:
Kotlin版本兼容性冲突:Sceneform 1.0.0是2018年发布的老版本,它默认依赖的是Kotlin 1.2.x系列,而你当前配置的
kotlin_version大概率是1.3及以上的新版本。新旧Kotlin版本的标准库API、字节码结构存在差异,导致依赖合并时出现类重复定义或找不到的问题(从你提供的报错图来看,应该是类似Program type already present: kotlin.jvm.internal.Intrinsics这类冲突)。Android支持库与AndroidX的冲突:Sceneform 1.0.0依赖的是传统的Android支持库(比如
com.android.support系列),如果你的项目已经迁移到了AndroidX,这两套库的类会出现命名空间冲突,Gradle无法处理这种混合依赖的情况,进而触发报错。传递依赖的版本不一致:当你引入
sceneform-ux:1.0.0时,它会自动拉取自身依赖的旧版Kotlin标准库和支持库,这和你手动添加的kotlin-stdlib-jdk7:$kotlin_version以及项目中的AndroidX依赖产生了冲突,Gradle在合并依赖时无法调和这些版本差异,最终抛出错误。
快速验证方法
你可以执行这条Gradle命令查看完整的依赖树,确认冲突的具体依赖项:
./gradlew app:dependencies
在输出里搜索kotlin-stdlib,就能看到是否存在多个版本的依赖;同时检查是否有com.android.support和androidx开头的库共存。
可行的解决方向
如果必须使用Sceneform 1.0.0,可以试试这几个方案:
- 把你的
kotlin_version降级到1.2.71(这是Sceneform 1.0.0官方兼容的Kotlin版本) - 如果项目还没迁移到AndroidX,保持使用传统支持库,不要混合AndroidX
- 用Gradle的强制依赖策略统一Kotlin版本:
configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.71" } }
不过更推荐的是升级到Sceneform的新版本(比如1.17.1),这些版本已经适配了AndroidX和较新的Kotlin版本,能从根源上解决这类兼容性问题。
内容的提问来源于stack exchange,提问作者Srikanth104

