2015-10-06 109 views
0

问题科尔多瓦5.3.3调用“registerDevice”推送通知

我建设用科尔多瓦5.3.3(最新)的Android应用程序,并使用pushwoosh科尔多瓦插件推送通知的Android应用程序崩溃(https://github.com/Pushwoosh/pushwoosh-phonegap-3.0-plugin)。

该应用程序还使用了Facebook的连接插件(https://github.com/Wizcorp/phonegap-facebook-plugin

的pushwoosh插件似乎与Facebook的相冲突连接插件。当两个插件添加到一个新的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文件夹,下面以集结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 

据我了解,这似乎是崩溃背后的邮件理由:

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) 

我有点失落,我该如何从这里出发。任何帮助将不胜感激。

谢谢!

回答

2

经过辛苦的工作,我找到了问题的根源。我在这里发布它,希望它能对下一个面临同样问题的人有所帮助。

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

我切换到这一个,问题就解决了:https://github.com/jeduan/cordova-plugin-facebook4

+0

还是一样的问题。 – Mayur

相关问题