Cordova 5.3.3 Android应用程序在呼叫时崩溃';注册设备&x27;用于推送通知

Cordova 5.3.3 Android应用程序在呼叫时崩溃';注册设备&x27;用于推送通知,android,cordova,push-notification,pushwoosh,cordova-5.0.0,Android,Cordova,Push Notification,Pushwoosh,Cordova 5.0.0,问题 我正在使用Cordova 5.3.3(最新版本)构建一个Android应用程序,并使用pushwoosh Cordova插件进行推送通知() 该应用程序还使用facebook connect插件() pushwoosh插件似乎与facebook connect插件冲突。将这两个插件添加到新的cordova项目时,应用程序构建开始失败。这是一条信息: :compileDebugJava :preDexDebug :dexDebug UNEXPECTED TOP-LEVEL EXCEPTIO

问题

我正在使用Cordova 5.3.3(最新版本)构建一个Android应用程序,并使用pushwoosh Cordova插件进行推送通知()

该应用程序还使用facebook connect插件()

pushwoosh插件似乎与facebook connect插件冲突。将这两个插件添加到新的cordova项目时,应用程序构建开始失败。这是一条信息:

:compileDebugJava
:preDexDebug
:dexDebug

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at com.android.dx.command.dexer.Main.main(Main.java:215)
    at com.android.dx.command.Main.main(Main.java:106)

:dexDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /Users/shishir.srivastava/Development/android-sdk-macosx/build-tools/22.0.1/dx --dex --no-optimize --output /Users/shishir.srivastava/Shishir/MallMate/Code/MallMateCordova-temp/platforms/android/build/intermediates/dex/debug --input-list=/Users/shishir.srivastava/Shishir/MallMate/Code/MallMateCordova-temp/platforms/android/build/intermediates/tmp/dex/debug/inputList.txt
  Error Code:
    2
  Output:

    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
        at com.android.dx.command.dexer.Main.run(Main.java:246)
        at com.android.dx.command.dexer.Main.main(Main.java:215)
        at com.android.dx.command.Main.main(Main.java:106)



* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

修复

为了解决上述问题,我在android文件夹中的build extras.gradle文件中添加了以下内容

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
} 
这使得应用程序可以在没有任何问题的情况下构建。但是,现在,当调用
pushNotification.registerDevice()
时,应用程序崩溃

我使用adb shell logcat检查错误日志,并看到以下内容:

D/PushNotifications( 4751): Plugin Called
D/Pushwoosh( 4751): broadcastPush = true
I/Pushwoosh( 4751): Log level: NOISE
V/Pushwoosh( 4751): [RegistrationPrefs] Saving regId on app version 178
I/Pushwoosh( 4751): [PushManager] App ID: #####-#####
I/Pushwoosh( 4751): [PushManager] Project ID: 1088448295557
I/Pushwoosh( 4751): [PushManager] This is android device
W/ActivityManager(  943): Unable to start service Intent { cmp=com.shishir/com.pushwoosh.inapp.InAppRetrieverService } U=0: not found
V/Pushwoosh( 4751): [PushRegistrarGCM] number of receivers for com.shishir: 3
V/Pushwoosh( 4751): [PushRegistrarGCM] Found 1 receivers for action com.google.android.c2dm.intent.RECEIVE
W/Pushwoosh( 4751): [RequestManager] Try To sent: registerUser
W/PluginManager( 4751): THREAD WARNING: exec() call to PushNotification.onDeviceReady blocked the main thread for 61ms. Plugin should use CordovaInterface.getThreadPool().
I/chromium( 4751): [INFO:CONSOLE(1)] "pushwoosh initialized", source: file:///android_asset/www/app.js (1)
D/PushNotifications( 4751): Plugin Called
W/Pushwoosh( 4751): [RequestManager] Pushwoosh Request: {"request":{"v":"3.1.8.563","device_type":3,"application":"#####-#####","hwid":"###","userId":"###"}}
W/Pushwoosh( 4751): [RequestManager] Pushwoosh Request To: https://cp.pushwoosh.com/json/1.3/registerUser
V/Pushwoosh( 4751): [com.pushwoosh.GCMRegistrationService] Intent action = com.pushwoosh.gcm.intent.REGISTER
I/chromium( 4751): [INFO:CONSOLE(1)] "pushwoosh: post registration", source: file:///android_asset/www/app.js (1)
W/cr.BindingManager( 4751): Cannot call determinedVisibility() - never saw a connection for the pid: 4751
I/chromium( 4751): [INFO:CONSOLE(1)] "[object Object]", source: file:///android_asset/www/app.js (1)
E/AndroidRuntime( 4751): FATAL EXCEPTION: IntentService[com.pushwoosh.GCMRegistrationService]
E/AndroidRuntime( 4751): Process: com.shishir, PID: 4751
E/AndroidRuntime( 4751): java.lang.NoSuchMethodError: No virtual method getNoBackupFilesDir(Landroid/content/Context;)Ljava/io/File; in class Landroid/support/v4/content/ContextCompat; or its super classes (declaration of 'android.support.v4.content.ContextCompat' appears in /data/app/com.shishir-1/base.apk)
E/AndroidRuntime( 4751):    at com.google.android.gms.iid.zzd.zzdo(Unknown Source)
E/AndroidRuntime( 4751):    at com.google.android.gms.iid.zzd.<init>(Unknown Source)
E/AndroidRuntime( 4751):    at com.google.android.gms.iid.zzd.<init>(Unknown Source)
E/AndroidRuntime( 4751):    at com.google.android.gms.iid.InstanceID.zza(Unknown Source)
E/AndroidRuntime( 4751):    at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source)
E/AndroidRuntime( 4751):    at com.pushwoosh.GCMRegistrationService.register(Unknown Source)
E/AndroidRuntime( 4751):    at com.pushwoosh.GCMRegistrationService.onHandleIntent(Unknown Source)
E/AndroidRuntime( 4751):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
E/AndroidRuntime( 4751):    at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 4751):    at android.os.Looper.loop(Looper.java:211)
E/AndroidRuntime( 4751):    at android.os.HandlerThread.run(HandlerThread.java:61)
D/ActivityManager(  943): New dropbox entry: com.shishir, data_app_crash, ####
W/ActivityManager(  943):   Force finishing activity 1 com.shishir/.MainActivity
我有点不知所措,不知该如何从这里开始。任何帮助都将不胜感激


谢谢大家!

经过大量的努力,我终于找到了问题的根源。我把它贴在这里,希望它能对下一个面临同样问题的人有所帮助

我意识到我使用的facebook connect插件使用的是FB SDK的过时版本

我切换到这个,问题就解决了:

java.lang.NoSuchMethodError: No virtual method getNoBackupFilesDir(Landroid/content/Context;)Ljava/io/File; in class Landroid/support/v4/content/ContextCompat; or its super classes (declaration of 'android.support.v4.content.ContextCompat' appears in /data/app/com.shishir-1/base.apk)