Gradle文件方法调用错误导致编译失败求助
解决Room教程中build.gradle编译错误问题
错误根源
项目级build.gradle的plugins {}代码块仅允许放置插件声明语句(如id 'xxx' version 'xxx'),你将ext.kotlin_version = '1.5.31'放在了这个块内,违反了Gradle的语法规则,导致编译失败。后续错误是因为错误地将变量定义当成插件声明,自然找不到对应的插件。
修复步骤
- 迁移变量定义:将项目级
build.gradle中plugins {}内的ext.kotlin_version = '1.5.31'移动到外部的ext {}代码块中。 - 统一版本号(可选但推荐):当前项目级Kotlin插件版本是
1.7.20,但kotlin_version是1.5.31,版本不一致可能引发兼容问题,建议统一为同一版本(比如1.7.20)。 - 修正应用级依赖引用:应用级
build.gradle中依赖项的$kotlin_version需改为$rootProject.kotlin_version,确保能正确读取根项目定义的变量。
修改后的代码示例
项目级build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { id 'com.android.application' version '7.3.1' apply false id 'com.android.library' version '7.3.1' apply false id 'org.jetbrains.kotlin.android' version '1.7.20' apply false } ext { kotlin_version = '1.7.20' // 移到此处,并和插件版本统一 activityVersion = '1.4.0' appCompatVersion = '1.4.0' constraintLayoutVersion = '2.1.2' coreTestingVersion = '2.1.0' coroutines = '1.5.2' lifecycleVersion = '2.4.0' materialVersion = '1.4.0' roomVersion = '2.3.0' // testing junitVersion = '4.13.2' espressoVersion = '3.4.0' androidxJunitVersion = '1.1.3' }
应用级build.gradle(仅修改依赖部分)
// ... 其他代码不变 ... dependencies { // ... 其他依赖不变 ... // Kotlin components implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$rootProject.kotlin_version" // 修正引用路径 api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$rootProject.coroutines" api "org.jetbrains.kotlinx:kotlinx-coroutines-android:$rootProject.coroutines" // ... 其他依赖不变 ... }
完成上述修改后,同步Gradle项目即可解决编译错误。
内容的提问来源于stack exchange,提问作者Suraj
相关产品推荐
相关产品推荐

