如何修复Ionic中无法合并dex的问题?

3

在进行安卓构建时,我遇到了以下问题:

执行任务“:app:transformDexArchiveWithExternalLibsDexMergerForDebug”失败

任务:CordovaLib:compileDebugShaders 为最新状态 任务:CordovaLib:generateDebugAssets 为最新状态 任务:CordovaLib:packageDebugAssets 为最新状态 任务:app:mergeDebugAssets 任务:app:validateSigningDebug 为最新状态 任务:app:signingConfigWriterDebug 为最新状态 任务:app:transformClassesWithDexBuilderForDebug 为最新状态

任务:app:transformDexArchiveWithExternalLibsDexMergerForDebug 失败 D8: 程序类型已存在:android.support.v4.os.ResultReceiver$MyResultReceiver

失败:构建过程中出现异常。

  • 出错原因: 执行任务“:app:transformDexArchiveWithExternalLibsDexMergerForDebug”失败。

    com.android.builder.dexing.DexArchiveMergerException: 合并dex归档文件时出错: 了解如何解决问题,请访问https://developer.android.com/studio/build/dependencies#duplicate_classes。 程序类型已存在:android.support.v4.os.ResultReceiver$MyResultReceiver

  • 尝试: 使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获取完整的洞察力。

  • 获取更多帮助,请访问https://help.gradle.org

22秒内构建失败 35个可操作任务:3个已执行,32个最新状态 /Users/panmoh/Documents/mobile-app/platforms/android/gradlew:命令以退出代码1失败 错误输出: D8:程序类型已存在:android.support.v4.os.ResultReceiver$MyResultReceiver

错误:构建失败。

  • 出现了什么问题: 执行任务':app:transformDexArchiveWithExternalLibsDexMergerForDebug'失败。

    com.android.builder.dexing.DexArchiveMergerException: 合并dex归档时出错: 学习如何解决问题,请参阅https://developer.android.com/studio/build/dependencies#duplicate_classes。 程序类型已存在:android.support.v4.os.ResultReceiver$MyResultReceiver

  • 尝试: 使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获取完整的洞察力。

  • 获取更多帮助,请访问https://help.gradle.org

构建失败,用时22秒 [ERROR] 运行子进程cordova时发生错误。

    cordova build android exited with exit code 1.

    Re-running this command with the --verbose flag may provide more information.

注意:我尝试了 cordova clean android,还移除并添加了 Android 平台。
3个回答

6

针对使用Phonegap/Cordova的用户解决此问题:

  • 安装“cordova-plugin-androidx”插件

    cordova plugin add cordova-plugin-androidx

  • 安装“cordova-plugin-androidx-adapter”插件

    cordova plugin add cordova-plugin-androidx-adapter

  • 在您的gradle.properties中添加以下行:

    android.useAndroidX=true android.enableJetifier=true

之后,进行构建:cordova -d build android 并检查结果。


1

我在我的项目中没有使用cordova-plugin-androidx。 - Mohanraj
@Mohanraj,我认为如果你添加这个插件,就可以解决你的问题。在我的情况下,它解决了所有版本冲突和构建错误。 - MR Gharibeh

0

这里接受的解决方案是真正的解决方案。我为此问题苦苦挣扎了一个星期,然后在上个周末决定无论发生什么,我都要找到解决方案。

所有的功劳归于这位名叫(ProdoElmit)的人,在这里回答了它。

附上上述解决方案的截图,以便更容易跟踪: gradlew.bat tasks --all

gradlew.bat yourproject:dependencies 这里我的项目名称是 app

在我的情况下,是 FCM 使用 androidx 导致了这个问题。希望这能帮助其他人解决他们的问题。 enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接