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

Expo集成react-native-stripe-terminal后Android构建失败:mergeReleaseJavaResource任务出现文件路径冲突

Expo集成react-native-stripe-terminal后Android构建失败:mergeReleaseJavaResource任务出现文件路径冲突

我之前也碰到过这个一模一样的问题!确实是react-native-stripe-terminal依赖的com.stripe:stripeterminal-taptopay:4.5.1和项目里的org.bouncycastle:bcprov-jdk15to18:1.78.1两个库,同时包含了路径为org/bouncycastle/pqc/crypto/picnic/lowmcL5.bin.properties的文件,导致Android构建时的merge任务报错。

你之前尝试的exclude: ["org/bouncycastle/*"]之所以没用,是因为这个配置会把整个BouncyCastle相关文件都排除掉,但Stripe终端库本身需要依赖其中的部分文件,直接排除会导致功能异常。正确的做法是精准处理冲突的单个文件,而不是一刀切排除整个目录。

下面是两种经过验证的解决方案:

方案一:通过expo-build-properties配置pickFirst规则

修改你的app.json(或app.config.js)里的expo-build-properties插件配置,针对冲突的具体文件添加pickFirst规则,告诉构建工具遇到重复文件时优先选择其中一个:

"plugins": [
  [
    "expo-build-properties",
    {
      "android": {
        "minSdkVersion": 26,
        "packagingOptions": {
          "pickFirst": [
            "org/bouncycastle/pqc/crypto/picnic/lowmcL5.bin.properties",
            "META-INF/NOTICE.md",
            "META-INF/LICENSE.md"
          ]
        }
      }
    }
  ]
]

方案二:统一BouncyCastle依赖版本

另一种思路是强制所有依赖使用同一个版本的BouncyCastle库,避免版本和文件冲突:

  • 如果你用的是npm 8+,在package.json里添加overrides:
"overrides": {
  "org.bouncycastle:bcprov-jdk15to18": "1.78.1"
}
  • 如果你用的是Yarn,在package.json里添加resolutions:
"resolutions": {
  "org.bouncycastle:bcprov-jdk15to18": "1.78.1"
}

最后别忘了清除缓存

修改配置后,一定要先清除构建缓存,避免旧配置影响:

# 清除Expo预构建缓存
npx expo prebuild --clean

# 或者如果已经预构建过Android项目,直接清除Gradle缓存
cd android && ./gradlew clean && cd ..

之后再重新运行Android构建命令(比如eas build --platform android或npx expo run:android --variant release),应该就能顺利通过mergeReleaseJavaResource任务了。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 13:25:28