升级旧项目至API35用Compose时遇compileSdkVersion未指定错误求助
旧项目升级API 35+Compose时compileSdkVersion异常的排查与解决
问题描述
将旧项目升级到API 35以适配Jetpack Compose时,触发异常:
com.android.builder.errors.EvalIssueException: compileSdkVersion is not specified. Please add it to build.gradle
但compileSdkVersion在Gradle插件8.x+版本中已被废弃,官方推荐使用compileSdk。且已尝试多种配置仍无效,同步Gradle时还出现两个重复警告:
Namespace not specified(已在模块级声明命名空间)compileSdkVersion is not specified(各种配置组合都试过)
已尝试的无效方案
- 在模块级
build.gradle的defaultConfig内外添加compileSdkVersion - 在模块级
build.gradle的defaultConfig内外添加compileSdk - 同时配置
compileSdk和compileSdkVersion - 清除Android Studio缓存并重启
- 删除项目根目录下的
.gradle文件夹
当前环境配置
- Android Studio 2024.2.2
- Gradle Plugin 8.10.2
- Kotlin 2.0.20
- Android Plugin 8.8.0
核心排查与修复方案
你的怀疑是对的——问题大概率出在项目级build.gradle未配置统一参数。Gradle插件8.x+支持在项目级统一声明compileSdk、namespace等核心配置,模块级会自动继承;若项目级缺失这些配置,模块级的单独声明可能被忽略,导致虚假警告和异常。
步骤1:配置项目级build.gradle
打开项目根目录的build.gradle,添加统一的Android配置块:
plugins { id 'com.android.application' version '8.10.2' apply false id 'org.jetbrains.kotlin.android' version '2.0.20' apply false } // 新增统一配置 android { compileSdk 35 defaultConfig { minSdk 21 // 根据项目实际需求调整 targetSdk 35 } // 项目基础命名空间,模块可在此基础上扩展 namespace 'com.your.base.package' }
步骤2:简化模块级build.gradle
模块级只需保留特有配置,无需重复声明继承自项目级的参数:
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' } android { defaultConfig { // 模块完整包名,若与项目级一致可省略 applicationId "com.your.base.package.main" versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } // 启用Compose支持 buildFeatures { compose true } // 适配Kotlin 2.0.20的Compose编译器版本 composeOptions { kotlinCompilerExtensionVersion '1.5.11' } } dependencies { implementation "androidx.compose.ui:ui:1.6.8" implementation "androidx.compose.material3:material3:1.2.1" // 其他依赖... }
步骤3:收尾检查
- 点击Sync Now同步Gradle配置
- 若仍有问题,检查模块级build.gradle是否存在语法错误(如括号不匹配、逗号遗漏)
- 执行
Build > Clean Project后重新同步
内容的提问来源于stack exchange,提问作者UnaDeKalamares
相关产品推荐
相关产品推荐

