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

Expo 50/51版本Android构建失败求助:依赖兼容性排查

解决Expo 50/51 Android构建Gradle错误:useDefaultAndroidSdkVersions()找不到及release属性获取失败

问题原因分析

你遇到的两个Gradle错误均源于Expo 50/51版本对Gradle 8.x的适配变化,以及依赖版本不匹配:

  1. useDefaultAndroidSdkVersions()方法找不到:该方法是旧版Expo Modules的API,在Expo 50+适配Gradle 8.x时已被废弃,替换为直接声明SDK版本的方式。
  2. 无法获取软件组件容器的'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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:35:07