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
相关产品推荐
相关产品推荐

