繁体   English   中英

当我尝试安装pushwoosh并编译为android时,始终会收到错误消息:Cordova

[英]Keep getting error when I try install pushwoosh and compile to android: Cordova

这是当我安装woosh时发生的情况

:transformClassesWithDexForDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/iid/MessengerCompat$1;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
    at com.android.dx.command.dexer.Main.run(Main.java:277)
    at com.android.dx.command.dexer.Main.main(Main.java:245)
    at com.android.dx.command.Main.main(Main.java:106)


 FAILED

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: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2

* 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: 1 mins 1.862 secs
Error: Error code 1 for command: /Users/apple/usd/platforms/android/gradlew with args: cdvBuildDebug,-b,/Users/apple/usd/platforms/android/build.gradle,-PcdvBuildArch=arm,-Dorg.gradle.daemon=true,-Pandroid.useDeprecatedNdk=true

根据要求构建Gradle依赖项

 dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
    }

当我卸载pushwoosh插件时,该应用程序可以正常运行

如果您在项目中使用自定义Application类,则应从android.support.multidex.MultiDexApplication继承它,以使multidex工作。

您可能达到或未达到dex方法计数限制。 签出此线程,其中列出了几个选项来解决此问题: Java完成,退出值2为非零-Android Gradle

多重指数

如果您在编译应用程序时遇到问题,并且收到与此类似的错误(com.android.dex.DexException:定义了多个dex文件):

异常最高级别异常:com.android.dex.DexException:多个dex文件定义了Landroid / support / annotation / AnimRes; 在com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)在com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)在com.android.dx.merge.DexMerger.mergeClassDefs (DexMerger.java:535)在com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)在com.android.dx.merge.DexMerger.merge(DexMerger.java:189)在com.android。 com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)位于com.android.dx.command.dexer.Main处的dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)。然后在com.android.dx.command.Main.main(Main.java:106)处运行com.android.dx.command.dexer.Main.main(Main.java:245)处的(Main.java:277)然后您安装的至少一个其他插件正在使用一种过时的方式声明依赖项,例如android-support或play-services-gcm。 这会导致gradle失败,您需要确定是哪个插件导致了问题,并要求对插件作者进行更新,以便它使用正确的方法来声明cordova的依赖关系。 请参阅此以获取关于cordova插件规范的参考,在创建问题或请求更新该插件时将其提及会很有用。

受过时的依赖关系管理影响的常见插件是与Facebook,google +,通知,人行横道和google地图相关的插件。

此错误意味着在链接(dexer)阶段中,您有两个具有相同名称的类。

Multiple dex files define Lcom/google/android/gms/iid/MessengerCompat$1;

看来其他插件直接引用了Google Play服务库。

在Cordova上引用它的正确方法是通过gradle(如Pushwoosh插件所做的那样):
https://github.com/Pushwoosh/pushwoosh-phonegap-plugin/blob/master/plugin.xml#L102

找到另一个引用google-play-services.jar或类似文件的插件,然后从那里删除(只是删除)此库。

类似问题:
https://github.com/Pushwoosh/pushwoosh-phonegap-plugin/issues/179#issuecomment-222638452

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM