簡體   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