Expo 50/51版本Android构建失败求助:依赖兼容性排查
解决Expo 50/51 Android构建Gradle错误:
useDefaultAndroidSdkVersions()找不到及release属性获取失败 问题原因分析
你遇到的两个Gradle错误均源于Expo 50/51版本对Gradle 8.x的适配变化,以及依赖版本不匹配:
useDefaultAndroidSdkVersions()方法找不到:该方法是旧版Expo Modules的API,在Expo 50+适配Gradle 8.x时已被废弃,替换为直接声明SDK版本的方式。- 无法获取软件组件容器的'release'属性:通常是由于
expo-modules-core或其他Expo模块版本与当前SDK版本不兼容,导致插件逻辑无法适配新的Gradle组件模型。
解决方案步骤
1. 对齐所有Expo依赖版本
确保项目中所有expo-*包、expo和expo-modules-core的版本与你使用的Expo SDK(50/51)完全一致:
- 执行命令自动修复依赖:
npx expo install --fix - 手动检查
package.json,比如Expo 51的依赖应类似:{ "expo": "~51.0.0", "expo-file-system": "~17.0.0", "expo-modules-core": "~1.12.0" }
2. 修复expo-file-system的Gradle配置(仅Ejected项目)
如果是已 eject 的项目,找到android/expo-file-system/build.gradle,删除第10行的useDefaultAndroidSdkVersions(),替换为直接指定SDK版本:
android { compileSdkVersion findProperty('android.compileSdkVersion') ?: 34 targetSdkVersion findProperty('android.targetSdkVersion') ?: 34 minSdkVersion findProperty('android.minSdkVersion') ?: 24 }
3. 升级Gradle相关配置
- 打开
android/build.gradle,确保Gradle插件版本适配Expo 50+:buildscript { dependencies { classpath 'com.android.tools.build:gradle:8.2.2' // Expo 50+推荐版本 } } - 检查
gradle/wrapper/gradle-wrapper.properties,确认Gradle版本为8.6(与日志中下载的版本一致):distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip
4. 清理构建缓存
- 清理Android构建缓存:
cd android && ./gradlew clean - 如果是Managed项目,重新生成原生文件:
npx expo prebuild --clean
5. 排查废弃/不兼容依赖
- 运行
npx expo doctor扫描项目,它会自动检测并列出与当前Expo SDK不兼容的依赖:npx expo doctor - 根据提示升级或替换不兼容的第三方库,重点关注未适配Gradle 8.x的旧版插件。
验证修复
执行以下命令重新构建:
npx expo prebuild # 仅Managed项目 cd android && ./gradlew bundleRelease
内容的提问来源于stack exchange,提问作者Makhlouf Aymen
相关产品推荐
相关产品推荐

