繁体   English   中英

任务“:app:transformDexArchiveWithDexMergerForDebug”执行失败。 - 反应本机

[英]Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'. - React Native

我有用 react-native 编写的应用程序,它以前工作得很好但是当我安装RN async-storage时。 我不更改本机 android 代码中的任何内容

运行应用程序时出现错误。

我正在尝试删除它并重建我的应用程序,但问题仍然存在,我不知道为什么!

我试图运行这些命令

rm -rf node_modules 
npm install

然后

cd android && gradlew clean

并且它正在成功构建而没有任何错误

但在运行react-native run-android之后

我有

出了什么问题:任务 ':app:transformDexArchiveWithDexMergerForDebug' 执行失败。 com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: The number of method references in a.dex 文件不能超过 64K。 https://developer.android.com/tools/building/multidex.html了解如何解决此问题

那么我该如何解决呢?

所以这是解决方案。

首先,让我们解决 multiDex 问题。在您的myapp/android/app/build.gradle文件中,查找 android 和 defaultConfig 中的代码块,然后添加multiDexEnabled true行,如下所示:

android {
    ...

    compileOptions {
        ...
    }

    defaultConfig {
        applicationId "com.myapp"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
        multiDexEnabled true //ADD THIS LINE 'multiDexEnabled true' Inside the defaultConfig code block
    }

}

其次,清除 npm 的有效方法是先删除 node_modules 文件夹,然后运行命令npm i然后npm start --reset-cache

第三,使 gradlew 干净的有效方法是运行此命令cd android然后gradlew clean

运行这些步骤后,您应该可以开始了。 祝一切顺利。

卸载 npm 包的正确方法是

npm uninstall <name> --save

如果你简单地删除node_modules ,它不会从package.json文件中删除,当你再次执行 npm install 时,如果没有从package.json文件中删除,将安装包moe detail here在错误日志的最后一行中提到它

.dex 文件中的方法引用数不能超过 64K。 了解如何解决此问题以修复此错误您可能需要启用此处提到的 multidex

可能是 minSdkVersion 的问题。 在目录中尝试 minSdkVersion = 21。 安卓/build.gradle。

按照这个答案-

https://stackoverflow.com/a/61341015/10638877

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM