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

基于ARCore与Sceneform的Android土地面积测量项目依赖问题咨询

ARCore与Sceneform依赖冲突解决方案(Kotlin Android项目)

问题背景

使用Kotlin开发具备土地面积测量功能的Android应用,集成ARCore与Sceneform时遭遇依赖冲突,当前build.gradle依赖配置如下:

implementation(libs.androidx.core.ktx) {
    exclude(group = "com.android.support")
}
implementation(libs.androidx.appcompat) {
    exclude(group = "com.android.support")
}
implementation(libs.material) {
    exclude(group = "com.android.support")
}
implementation("com.google.ar.sceneform.ux:sceneform-ux:1.17.1") {
    exclude(group = "com.android.support")
}
implementation("com.google.ar.sceneform:core:1.17.1") {
    exclude(group = "com.android.support")
}
implementation("com.google.ar:core:1.41.0")

implementation("androidx.core:core:1.12.0")
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.appcompat:appcompat:1.6.1")

尝试默认依赖集成后无法正常运行,需解决以下问题:

  1. 避免ARCore与Sceneform版本冲突的正确依赖树是什么?
  2. 这些依赖在Kotlin项目中应如何构建?
  3. 是否存在已知的适配良好的版本组合?

1. 避免版本冲突的正确依赖树

冲突核心原因有两点:Sceneform与ARCore版本不匹配(Sceneform对ARCore版本有严格绑定);重复声明AndroidX依赖(同时使用libs.xxx和直接坐标导致版本不一致)。

正确的依赖树需满足:

  • Sceneform核心与UX组件版本完全一致
  • ARCore版本与Sceneform版本严格适配
  • 仅保留一套AndroidX依赖声明(推荐用libs.toml统一管理)

结构示例:

├── AndroidX Core KTX(统一版本)
├── AndroidX AppCompat(统一版本)
├── Material Components(统一版本)
├── Sceneform Core(指定版本)
├── Sceneform UX(与Core同版本)
└── ARCore(与Sceneform适配的版本)

2. Kotlin项目中的依赖构建方式

步骤1:用libs.toml统一版本管理

在gradle/libs.versions.toml中配置所有依赖版本,消除重复声明:

[versions]
androidxCoreKtx = "1.12.0"
androidxAppCompat = "1.6.1"
material = "1.11.0"
sceneform = "1.17.1"
arcore = "1.28.0" # 与Sceneform 1.17.1适配的版本

[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidxCoreKtx" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxAppCompat" }
material = { group = "com.google.android.material", name = "material", version.ref = "material" }
sceneform-core = { group = "com.google.ar.sceneform", name = "core", version.ref = "sceneform" }
sceneform-ux = { group = "com.google.ar.sceneform.ux", name = "sceneform-ux", version.ref = "sceneform" }
arcore = { group = "com.google.ar", name = "core", version.ref = "arcore" }

步骤2:在模块build.gradle.kts中引入依赖

移除重复的AndroidX声明,保留统一引用并处理com.android.support冲突:

dependencies {
    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.appcompat)
    implementation(libs.material)
    
    implementation(libs.sceneform.core) {
        exclude(group = "com.android.support")
    }
    implementation(libs.sceneform.ux) {
        exclude(group = "com.android.support")
    }
    implementation(libs.arcore)
}

步骤3:配置Java 8支持

Sceneform依赖Java 8特性,需在模块build.gradle.kts中添加:

android {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

3. 已知适配良好的版本组合

由于Google官方已停止维护Sceneform(最后稳定版为1.17.1),以下是经过验证的稳定组合:

  • 最稳定组合:Sceneform 1.17.1 + ARCore 1.28.0 + AndroidX Core KTX 1.12.0 + AppCompat 1.6.1
  • 兼容较新AndroidX组合:Sceneform 1.17.1 + ARCore 1.28.0 + AndroidX Core KTX 1.13.1 + AppCompat 1.7.0

若需更现代的AR功能,建议迁移至ARCore Extensions(Google官方替代Sceneform的方案),但需注意其API与Sceneform差异较大。


内容的提问来源于stack exchange,提问作者Akila Lochana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:48:15