Android Studio中build.gradle.kts调用sceneform.asset()报错的解决方法
解决build.gradle.kts中调用sceneform.asset()报Unresolved reference的问题
核心原因
Groovy和Kotlin DSL(.kts)的Gradle语法存在差异,直接照搬Groovy的写法在KTS中会无法识别,需要调整插件引入和方法调用的语法。
解决步骤
1. 项目级build.gradle.kts配置插件仓库与插件
确保项目级的build.gradle.kts中正确添加SceneForm插件的仓库和插件依赖:
plugins { id("com.android.application") version "7.4.2" apply false id("com.android.library") version "7.4.2" apply false // 添加SceneForm插件,版本请与你的Groovy配置保持一致 id("com.google.ar.sceneform.plugin") version "1.17.1" apply false } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() // 如果使用第三方SceneForm分支,添加对应仓库 // maven { url = uri("https://maven.google.com/") } } }
2. 模块级build.gradle.kts配置插件与asset调用
在模块(通常是app模块)的build.gradle.kts中,先引入插件,再用KTS语法调用sceneform.asset():
plugins { id("com.android.application") id("com.google.ar.sceneform.plugin") } android { // 你的Android基础配置 compileSdk = 33 defaultConfig { applicationId = "com.your.app.id" minSdk = 24 targetSdk = 33 // 其他配置... } } // KTS语法下的sceneform资源配置 sceneform { assets { // 示例:导入glb模型,生成对应的SceneForm资源文件 asset("sampledata/model.glb", "src/main/assets/model.sfa", "src/main/assets/model.sfb") } } dependencies { // 添加SceneForm依赖,版本与插件保持一致 implementation("com.google.ar.sceneform.ux:sceneform-ux:1.17.1") implementation("com.google.ar:core:1.32.0") }
3. 关键语法差异说明
- Groovy中直接调用
sceneform.asset(...),KTS中需要嵌套在sceneform { assets { ... } }代码块内 - 插件引入方式从Groovy的
apply plugin: 'com.google.ar.sceneform.plugin'改为KTS的id("com.google.ar.sceneform.plugin")
4. 后续验证
同步Gradle项目后,若仍有错误:
- 确认SceneForm插件版本为1.17.0及以上(该版本开始支持Kotlin DSL)
- 清理项目缓存(
File -> Invalidate Caches... -> Invalidate and Restart) - 检查模型文件路径是否正确,确保资源目录或sampledata目录存在对应文件
内容的提问来源于stack exchange,提问作者Leonid Ivankin
相关产品推荐
相关产品推荐

