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

您好我昨天在我的实习遇到麻烦,我有以下build立错误,但我不明白为什么:

$ 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 

谢谢阅读

Solutions Collecting From Web of "多个dex文件定义了Lorg / apache / cordova / BuildHelper"

最有可能的是你正在使用新发布的cordova-android@6.3.0 ,它现在包括BuildHelper.java (如你的错误信息中所述)和PermissionHelper.java ,但是你的项目中仍然有不赞成使用的cordova-plugin-compat导致构build失败,因为它也包含这些类 。

要解决这个问题,从你的项目中删除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 

去添加我的2美分,因为没有解决scheme为我工作。 只有对我有用的东西:

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

我必须做:

 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这样的插件依赖于它。

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

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

我的Ionic 3项目足以运行:

 ionic cordova plugin rm cordova-plugin-compat --force ionic cordova plugin add cordova-plugin-compat@1.2 

然后再次运行一个构build。 无需删除和添加平台。

我确认答案DaveAlden作品!

但是在cordova-plugin-compat里面的plugin.xml文件中,我有一个语法错误,其中小于号“<”,因为它在xml中是非法的。

这个问题出现在Visual Studio中,你不能使用configurationpipe理器来安装插件,因为它在插件资源的xml中检测到这个语法错误。

你必须像DaveAlden说的那样用命令行安装。

忽略错误,并且在安装之后replace:

 <engine name="cordova-android" version="<6.3.0"/> 

通过

 <engine name="cordova-android" version="&lt;6.3.0"/> 

编译运行结束! 🙂

cordova插件rm cordova-plugin-compat –force

cordova平台rm android

cordova平台添加android@6.3.0

cordova插件添加cordova-plugin-compat@1.2

按照这个顺序,为我工作! 非常感谢

这是解决scheme:

 cordova plugin rm cordova-plugin-compat --force 

我知道这个问题已经回答了,但是我想添加正式版本说明的链接:

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

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

我用于离子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 

这对我有用。