我从昨天开始遇到麻烦。在我的实习中,我遇到了以下构建错误,但我无法理解原因:
$ 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
的输出,我没有看到支持-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
答案 0 :(得分:148)
您很可能正在使用新发布的cordova-android@6.3.0
,其中现在包含BuildHelper.java(如您的错误消息中所述)和PermissionHelper.java,但您仍然使用了已弃用的cordova-plugin-compat在您的项目中导致构建失败,因为它also contains these classes。
要解决此问题,请从项目中删除cordova-plugin-compat
以从cordova-android
平台项目中卸载这些Java文件::
cordova plugin rm cordova-plugin-compat --force
<强>更新强>
要保留此更改,请添加cordova-plugin-compat@1.2
,其中包含engine constraint,以防止将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 :(得分:41)
要加上我的2美分,因为没有一个解决方案适合我。 只有对我有用的东西:
cordova plugin rm cordova-plugin-compat --force
cordova platform rm android
cordova platform add android@6.3.0
答案 2 :(得分:19)
我必须这样做:
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这样的插件依赖于它。
答案 3 :(得分:9)
一种解决方案:降级cordova android platform @6.2.3
$ cordova platform remove android && cordova platform add android@6.2.3
答案 4 :(得分:9)
我知道问题已经回答,但我想添加官方发行说明的链接:
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 强>
因此,请确保将所有列出的插件更新为发行说明中发布的版本。
答案 5 :(得分:4)
通过我的Ionic 3项目,它足以运行:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Note: Focus out see text getting change.
<div class="original-form">
Enter text here: <input type="text" class="inp_name" placeholder="enter your name" />
</div>
<div class="original-output">
Entered name: <span class="name_text">Entered Name</span>
</div>
<div class="copied-output">
</div>
然后再次运行构建。无需删除和添加平台。
答案 6 :(得分:3)
我正在使用Ionic 3
项目,我必须这样做:
ionic cordova plugin rm cordova-plugin-compat --force
ionic cordova plugin add cordova-plugin-compat@1.2
ionic cordova platform rm android
ionic cordova platform add android@6.3.0
它为我工作。
答案 7 :(得分:2)
我有同样的错误,我的插件中没有compat插件,我只是运行该代码,然后我建立,它工作正常
$ cordova platform remove android && cordova platform add android@6.2.3
答案 8 :(得分:1)
这是解决方案:
cordova plugin rm cordova-plugin-compat --force
答案 9 :(得分:1)
cordova插件rm cordova-plugin-compat --force
cordova platform rm android
cordova平台添加android@6.3.0
cordova插件添加cordova-plugin-compat@1.2
按此顺序,对我有用!!非常感谢
答案 10 :(得分:0)
我在更新其他插件的依赖关系后删除了Compat插件;像相机到新版本,它的工作。 例: cordova插件rm cordova-plugin-camera --save cordova插件添加cordova-plugin-camera @ latest --save 发布新插件后,旧版本2.3.0被替换为4.0.2 for Camera插件。
这一步之后。我只是删除插件“Compat” cordova插件rm cordova-plugin-compat --force
答案 11 :(得分:0)
简历。这意味着插件相机与最新版本的android oreo不兼容
答案 12 :(得分:0)
我确认DaveAlden的答案有效!!
但是在cordova-plugin-compat里面的plugin.xml中,我的语法错误少于符号&#39;&lt;&#;;因为它在xml中是非法的。
此问题出现在visual studio中,您无法使用配置管理器安装插件,因为它在插件资源上的xml中检测到此语法错误。
您必须使用命令行安装,如DaveAlden所说。
忽略错误,安装后替换:
var comparisionDate = '2017/11/13 15:02';
var todaysDate = new Date(); // current date
// further i don't know to compare
if(comparisionDate == todaysDate ){
//send notifications
}else{
// don't show notification
}
通过
<engine name="cordova-android" version="<6.3.0"/>
编译结束! :)
答案 13 :(得分:0)
我正在使用Ionic 4,这为我解决了它(只需要几秒钟即可运行):
cordova clean
答案 14 :(得分:0)
android版本中的插件可能不匹配。因此,最好运行2条命令以成功构建
cordova platform rm android
cordova platform add android
浪费了两天之后,这似乎对我来说只是解决方案。
答案 15 :(得分:0)
强行删除插件cordova-plugin-compat 6.3.0或更高版本的android sdk,因为它已与cordova android集成。
cordova插件rm cordova-plugin-compat --force
作为下面的参考
https://cordova.apache.org/announcements/2017/09/27/android-release.html
答案 16 :(得分:0)
以上解决方案均不适用于我。对我来说,解决方案是升级gradle。我正在使用gradle 5.6.2。更新到5.6.4,然后删除并添加我的android平台和插件即可解决问题。
brew upgrade gradle
Install / upgrade gradle on Mac OS X
rm -rf plugins/*
cordova platform rm android
cordova platform add android