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

React Native签名Release打包失败:mergeDexRelease任务报错

我之前打包React Native Release版本时也碰到过一模一样的问题!这个错误本质是重复的类定义导致Dex合并失败,具体就是com.BV.LinearGradient.BuildConfig这个类在两个不同的Dex文件里都存在了——一个来自react-native-linear-gradient库的构建产物,另一个是你项目自身打包时生成的外部依赖Dex。下面是我亲测有效的解决步骤:

1. 优先用PackagingOptions排除重复类

直接告诉Gradle遇到重复的BuildConfig类时只保留第一个,修改android/app/build.gradle文件:

android {
    // 保留你原本的buildTools、compileSdk等配置
    packagingOptions {
        pickFirst 'com/BV/LinearGradient/BuildConfig.class'
    }
}

这个方法最简单,通常能直接解决问题,因为它避免了Gradle在合并Dex时因为重复类报错。

2. 清理构建缓存,消除残留冲突

有时候旧的构建缓存会残留重复文件,执行以下命令彻底清理:

# 进入android目录
cd android
# 清理gradle构建缓存
./gradlew clean
# 返回根目录
cd ..
# 删除node_modules和锁文件
rm -rf node_modules
rm package-lock.json # 如果用yarn就删yarn.lock
# 重新安装依赖
npm install # 或者 yarn install

清理完后再尝试打包Release版本,很多时候缓存问题会导致各种奇怪的依赖冲突。

3. 启用MultiDex(如果前两种方法无效)

你的minSdkVersion是21,理论上Android 5.0+默认支持MultiDex,但显式开启有时候能解决类重复导致的Dex合并问题:

  1. 在android/app/build.gradle的defaultConfig里添加multiDexEnabled true:
android {
    defaultConfig {
        minSdkVersion 21
        // 其他配置...
        multiDexEnabled true
    }
}
  1. 添加MultiDex依赖:
dependencies {
    // 其他依赖...
    implementation 'com.android.support:multidex:28.0.0'
}
  1. 修改MainApplication.java(如果你的App没有继承MultiDexApplication):
import android.content.Context;
import androidx.multidex.MultiDex;

public class MainApplication extends Application implements ReactApplication {
    // 原本的代码...
    
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}

做完这些步骤后,再运行./gradlew assembleRelease试试,应该就能成功打包了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 22:52:48