热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

多个dex文件定义Lorg/apache/cordova/BuildHelper

如何解决《多个dex文件定义Lorg/apache/cordova/BuildHelper》经验,为你挑选了5个好方法。

我从昨天开始遇到麻烦了.在我的实习中,我遇到了以下构建错误,但我无法理解为什么:

$ cordova build android

[...]

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lorg/apache/cordova/BuildHelper;

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 3.379 secs
Error: /home/thor/Projects/App_CDP/platforms/android/gradlew: Command failed with exit code 1 Error output:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lorg/apache/cordova/BuildHelper;

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

这是输出cordova plugins list,我没有support-v4/v13冲突,你可以看到:

$ cordova plugin list
com.googlemaps.ios 2.2.0-fixed "Google Maps SDK for iOS"
com.moust.cordova.videoplayer 1.0.1 "Video Player"
cordova-plugin-camera 2.4.1 "Camera"
cordova-plugin-compat 1.1.0 "Compat"
cordova-plugin-console 1.0.5 "Console"
cordova-plugin-device 1.1.4 "Device"
cordova-plugin-facebook4 1.9.1 "Facebook Connect"
cordova-plugin-file 4.0.0 "File"
cordova-plugin-file-transfer 1.6.3 "File Transfer"
cordova-plugin-geolocation 2.4.3 "Geolocation"
cordova-plugin-googlemaps 1.4.0 "phonegap-googlemaps-plugin"
cordova-plugin-inappbrowser 1.7.1 "InAppBrowser"
cordova-plugin-splashscreen 4.0.3 "Splashscreen"
cordova-plugin-statusbar 2.2.2 "StatusBar"
cordova-plugin-whitelist 1.3.1 "Whitelist"
ionic-plugin-keyboard 2.2.1 "Keyboard"
{}

这里还有一些更多的信息:

$ cordova -v
7.0.1

$ ionic -v
2.1.4

DaveAlden.. 158

很可能你正在使用新发布的cordova-android@6.3.0,现在包括BuildHelper.java(如你的错误消息中所述)和PermissionHelper.java,但你的项目中仍然有不推荐使用的cordova-plugin-compat导致构建失败,因为它还包含这些类.

要解决此问题,请cordova-plugin-compat从项目中删除以从cordova-android平台项目中卸载这些Java文件::

cordova plugin rm cordova-plugin-compat --force

更新

要保留此更改,请添加cordova-plugin-compat@1.2包含引擎约束的内容,以防止将Java文件重新安装到cordova-android@6.3+平台中:

cordova plugin add cordova-plugin-compat@1.2

另一个更新(从评论中复制)

删除并添加cordova-plugin-compat@1.2后,您只能从文件夹平台/ android中删除文件BuildHelper.java和PermissionHelper.java,而不是删除和添加整个Android平台



1> DaveAlden..:

很可能你正在使用新发布的cordova-android@6.3.0,现在包括BuildHelper.java(如你的错误消息中所述)和PermissionHelper.java,但你的项目中仍然有不推荐使用的cordova-plugin-compat导致构建失败,因为它还包含这些类.

要解决此问题,请cordova-plugin-compat从项目中删除以从cordova-android平台项目中卸载这些Java文件::

cordova plugin rm cordova-plugin-compat --force

更新

要保留此更改,请添加cordova-plugin-compat@1.2包含引擎约束的内容,以防止将Java文件重新安装到cordova-android@6.3+平台中:

cordova plugin add cordova-plugin-compat@1.2

另一个更新(从评论中复制)

删除并添加cordova-plugin-compat@1.2后,您只能从文件夹平台/ android中删除文件BuildHelper.java和PermissionHelper.java,而不是删除和添加整个Android平台


删除并添加cordova-plugin-compat@1.2后,您只能从文件夹平台/ android/src/org/apache/cordova中删除文件BuildHelper.java和PermissionHelper.java,而不是删除和添加整个Android平台.
如果您更喜欢坚持使用`cordova-android @ 6.2.3`,请确保项目文件夹中的`package.json`和`config.xml`使用`"6.2.3"`不是`"^ 6.2.3 "`,然后删除`platforms/android`文件夹,重新运行`cordova prepare android`,`cordova build android`应该没有错误.

2> Eric..:

因为没有一个解决方案适合我,所以要加2美分.只有对我有用的东西:

cordova plugin rm cordova-plugin-compat --force
cordova platform rm android
cordova platform add android@6.3.0


谢谢,它的工作原理.我花了好几个小时来解决这个问题,最后降落在这里.

3> 小智..:

我必须做:

cordova plugin rm cordova-plugin-compat --force
cordova plugin add cordova-plugin-compat@1.2
cordova platform rm android
cordova platform add android@6.3.0

考虑到你不能简单地删除cordova-plugin-compat,因为像cordova-plugin-file这样的插件依赖于它.



4> Alexander S...:

我知道问题已经回答了,但我想添加官方发行说明的链接:

https://cordova.apache.org/news/2017/11/10/plugins-release.html

在我们上一次发布的插件中,我们弃用了cordova-plugin-compat,因为它已集成到cordova-android@6.3.0中.因此,对于此发布周期,我们已经从依赖它的插件中删除了依赖项,并为插件提供了一个主要的版本跳转.以下插件已经删除了cordova-plugin-compat:cordova-plugin-camera,cordova-plugin-contacts,cordova-plugin-file,cordova-plugin-geolocation,cordova-plugin-media和cordova-plugin-media-capture.

因此,请确保将所有列出的插件更新为发行说明中发布的版本.


这是最佳答案应标记为的内容!干杯亚历山大!就像许多人建议的那样,我不得不降级到6.3.0并没有让我感觉很好-必须有更好的方法。

5> Made in Moon..:

一个解决方案:降级 cordova android platform @6.2.3

$ cordova platform remove android && cordova platform add android@6.2.3


推荐阅读
author-avatar
zy7ume
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有