expo run:android报错compileSdkVersion未指定问题求助
问题根因
这个报错的核心不是你没在顶层build.gradle配置compileSdkVersion,是当前项目的构建配置和Expo模块的构建要求不匹配:
- 你当前配置的
compileSdkVersion = 29版本过低,新版本Expo SDK最低要求compileSdkVersion >=33 - 你使用的Android Gradle Plugin 4.1.0版本过旧,和新版Expo的构建逻辑不兼容,导致
:expo子项目无法读取到根项目ext中定义的Sdk版本参数 - 你当前安装的Java 8版本不满足高版本AGP的运行要求,会导致构建配置阶段的参数读取逻辑异常
- 你之前只清理了全局Gradle缓存,没有清理项目本地的构建缓存,旧的异常构建缓存会干扰配置读取
解决步骤
按顺序执行以下操作即可修复:
- 替换顶层build.gradle中ext块的Sdk版本配置,将版本升级到符合Expo要求的数值:
ext { buildToolsVersion = "33.0.0" minSdkVersion = 21 compileSdkVersion = 33 targetSdkVersion = 33 }
- 升级Android Gradle Plugin版本,把buildscript.dependencies下的classpath配置替换为:
classpath("com.android.tools.build:gradle:7.4.2")
- 替换本地Java环境:卸载当前的Java 8,安装JDK 11并配置好JAVA_HOME环境变量,终端执行
java -version确认输出为11.x版本后再进行后续操作。 - 全量清理构建缓存,依次执行以下命令:
- 进入项目根目录,删除安卓项目本地构建缓存:
rm -rf android/.gradle android/build android/app/build - 清理全局Gradle缓存:
rm -rf ~/.gradle/caches - 重装项目依赖避免原生链路配置异常:
rm -rf node_modules && npm install
- 进入项目根目录,删除安卓项目本地构建缓存:
- 如果你的android目录是通过expo prebuild自动生成的,先执行
expo prebuild --clean重新生成原生安卓目录,避免手动修改的配置被Expo的构建逻辑覆盖。 - 最后重新执行
expo run:android命令即可正常构建。
注意:如果你的项目是Expo托管项目(原生目录为自动生成),不要长期手动修改build.gradle文件,推荐安装
expo-build-properties插件统一配置原生构建参数,避免下次执行prebuild时手动修改的配置被覆盖。
内容的提问来源于stack exchange,提问作者PetrTrok
相关产品推荐
相关产品推荐

