作者:zy7ume | 来源:互联网 | 2023-01-15 15:22
我从昨天开始遇到麻烦了.在我的实习中,我遇到了以下构建错误,但我无法理解为什么:
$ 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