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

React Native Gradle构建报错:已声明compileSdkVersion却提示未指定

问题排查与解决方案

你在顶层build.gradle的ext块中定义的是全局公共变量,需要确保模块级配置和子依赖兼容,按以下顺序排查即可:

1. 检查app模块级build.gradle配置

打开路径为android/app/build.gradle的模块配置文件,找到android配置块,确认已正确引用顶层定义的全局变量:

android {
    // 必须关联顶层ext定义的变量,不要漏写rootProject.ext前缀
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        applicationId "你的应用包名"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        // 其余原有配置保留即可
    }
    // 其余原有配置保留即可
}

如果此处漏写compileSdkVersion配置,或没有加rootProject.ext.前缀直接写变量名,就会触发报错。

2. 统一子模块的Sdk版本配置

部分老旧的第三方RN依赖没有适配全局变量规则,会自行指定Sdk版本导致冲突,可在顶层build.gradle的allprojects块末尾追加全局强制配置:

allprojects {
    repositories {
        // 你原有仓库配置全部保留不变
        mavenCentral()
        mavenLocal()
        maven {
            url("$rootDir/../node_modules/react-native/android")
        }
        maven {
            url("$rootDir/../node_modules/jsc-android/dist")
        }
        google()
        jcenter()
        maven { url 'https://www.jitpack.io' }
    }
    // 新增以下配置,强制所有子模块使用统一的Sdk版本
    afterEvaluate { project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
            }
        }
    }
}

3. 清理缓存后重新构建

修改配置后执行对应命令清理构建缓存,避免旧缓存影响结果:

  • Windows系统执行:
cd android && gradlew clean && cd ..
  • Mac/Linux系统执行:
cd android && ./gradlew clean && cd ..

清理完成后重新执行构建命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:36:01