Expo裸工作流构建Android失败:compileSdkVersion未识别+‘release’属性获取失败
Expo裸工作流构建Android失败:compileSdkVersion未识别+‘release’属性获取失败
嘿,我之前迁移Expo裸工作流项目到新电脑时,也碰到过几乎一模一样的Gradle报错,太懂这种明明配置了却不生效的憋屈感了!结合你的情况,我来拆解这两个问题的原因和实际解决办法:
问题1:明明定义了compileSdkVersion却提示未指定
这种情况大概率是Gradle脚本执行顺序或变量继承出了问题,试试这几个方向:
- 调整ext变量的定义位置:你现在把ext块放在
buildscript内部,但Expo的自动链接脚本可能在这个变量加载前就执行了。把ext块移到buildscript外面,变成全局变量:// 项目根目录的build.gradle ext { buildToolsVersion = findProperty('android.buildToolsVersion') ?: '34.0.0' minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '23') compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '34') targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '34') kotlinVersion = findProperty('android.kotlinVersion') ?: '1.8.10' ndkVersion = "25.1.8937393" } buildscript { // 原来的buildscript内容(比如dependencies、repositories) } - 让Expo自动注入配置:在
app.json里明确指定Android的SDK版本,然后重新执行expo prebuild,让Expo帮你同步所有模块的配置:{ "expo": { "android": { "compileSdkVersion": 34, "targetSdkVersion": 34, "minSdkVersion": 23 } } } - 补全local.properties配置:新电脑的
android/local.properties可能缺失相关属性,手动加一行:android.compileSdkVersion=34,Gradle会优先读取这个文件的配置。
问题2:Could not get unknown property 'release' for SoftwareComponentContainer
这个错误基本和Android Gradle插件(AGP)与Gradle版本不兼容,或者依赖模块未正确应用Gradle插件有关:
- 对齐AGP和Gradle版本:React Native 0.73.6推荐搭配AGP 7.4.2和Gradle 7.5,你可以调整这两个版本:
// 根目录build.gradle的buildscript依赖 classpath("com.android.tools.build:gradle:7.4.2")// gradle/wrapper/gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip - 重新安装依赖:新电脑上的依赖可能安装不完整,导致某些模块(比如expo-application)没正确应用
com.android.library插件。删除node_modules、package-lock.json(或yarn.lock),然后重新执行npm install。 - 调整自动链接脚本的执行时机:你自定义了settings.gradle,可能
useExpoModules()的调用太早了。把apply from: new File(...)和useExpoModules()移到settings.gradle的末尾,确保所有依赖解析配置完成后再加载Expo的自动链接脚本。
额外排查小技巧
- 执行
./gradlew cleanBuildCache彻底清理Gradle缓存,再重新构建。 - 确认新电脑的Android SDK Manager里已经安装了compileSdkVersion 34的SDK包。
- 检查Firebase版本是否和当前React Native/Expo版本兼容,你用的21.14.0是没问题的,但可以试试升级到最新兼容版。
希望这些方法能帮你顺利解决问题!
内容来源于stack exchange




