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

使用EAS构建Expo应用时,如何修复Guava ListenableFuture依赖冲突?

解决EAS构建Expo应用时react-native-usb-serialport的Guava依赖冲突问题

方法1:通过Expo配置注入Gradle依赖规则

在Expo项目的app.config.js或app.json中,利用android.gradleExtra字段直接注入Gradle配置,强制统一Guava版本或排除冲突模块:

export default {
  expo: {
    // 其他项目配置
    android: {
      gradleExtra: `
        configurations.all {
          resolutionStrategy {
            // 强制所有依赖使用指定版本的Guava,避免版本不一致导致的冲突
            force 'com.google.guava:guava:27.1-android'
            // 或者排除重复的listenablefuture模块
            // exclude group: 'com.google.guava', module: 'listenablefuture'
          }
        }
      `
    }
  }
};

提交配置后重新触发EAS构建即可,该方式无需修改第三方库源码,适配Expo/EAS的无本地Gradle文件场景。

方法2:修改fork库的依赖配置(优化版)

如果仍想使用自己fork的react-native-usb-serialport库,不要直接移除Guava依赖,而是在库的android/build.gradle中排除冲突的子模块:

dependencies {
  // 保留原Guava依赖,但排除冲突的listenablefuture模块
  implementation('com.google.guava:guava:20.0') {
    exclude module: 'listenablefuture'
  }
  // 其他原有依赖...
}

修改后重新发布fork的库到npm,在项目中安装该自定义版本即可解决依赖缺失和冲突问题。

方法3:用patch-package临时修复依赖

无需fork库,直接修改node_modules中的库配置并生成补丁,EAS构建时会自动应用:

  1. 安装依赖:npm install patch-package --save-dev
  2. 打开node_modules/react-native-usb-serialport/android/build.gradle,添加方法2中的依赖排除配置
  3. 生成补丁:npx patch-package react-native-usb-serialport
  4. 将生成的patches目录提交到Git仓库

后续EAS构建时会自动执行补丁,覆盖原库的Gradle配置。

内容的提问来源于stack exchange,提问作者AntPraxis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:02:29