Urban-airship + Facebook cordova插件android-support-v4冲突

时间:2015-08-18 16:34:19

标签: android cordova urbanairship.com dex phonegap-facebook-plugin

我想使用Urban-airship cordova插件(phonegap-ua-push)和Facebook插件(phonegap-facebook-plugin)但是我遇到了这个错误:

  

多个dex文件定义Landroid / support / annotation / AnimRes

这似乎是由于facebook android-support-v4和phonegap-ua-push之间存在冲突,因为它使用不同的support-v4版本进行编译。

dependencies {
 compile 'com.android.support:cardview-v7:22.2.0'
 compile 'com.android.support:support-v4:22.2.0'
 compile 'com.google.android.gms:play-services-location:7.5.0'
 compile 'com.google.android.gms:play-services-gcm:7.5.0'
 compile 'com.urbanairship.android:urbanairship-sdk:6.1.3'
}

我尝试更新phonegap-ua-push的依赖项,并排除它依赖的support-v4,希望它能够与Facebook一起工作。 我是这样做的:

dependencies {
  compile ('com.android.support:cardview-v7:22.2.0') {       
    exclude module: 'support-v4'
  }
  compile ('com.google.android.gms:play-services-location:7.5.0') {       
    exclude module: 'support-v4'
  }
  compile ('com.google.android.gms:play-services-gcm:7.5.0') {       
    exclude module: 'support-v4'
  }
  compile ('com.urbanairship.android:urbanairship-sdk:6.1.3') {       
    exclude module: 'support-v4'
  }
}

但是当应用收到推送通知时,应用程序崩溃了.. 以下是logcat的例外:

  

E / AndroidRuntime(24095):java.lang.NoSuchMethodError:没有虚方法setColor(I)Landroid / support / v4 / app / NotificationCompat $ Builder;在类Landroid / support / v4 / app / NotificationCompat $ Builder;或其超级类('android.support.v4.app.NotificationCompat $ Builder'的声明出现在/ data / app / com。****。**** - 1 / base.apk)

有人已经实现了使用facebook和urbanairship插件,以及如何使用?

修改 正如ralepinski所说,我试图从平台/ android / FacebookLib / libs /文件夹中删除android-support-v4.jar,当我这样做时,我得到了以下错误:

  

FacebookLib / src / com / facebook / AppEventsLogger.java:24:错误:包   android.support.v4.content不存在导入   android.support.v4.content.LocalBroadcastManager; ...

我认为告诉我他找不到android-support-v4

这对我来说没有意义,因为FacebookLib的build.gradle如下所示:

dependencies {
    compile 'com.android.support:support-v4:[20,21)'
    compile 'com.parse.bolts:bolts-android:1.1.2'
}

因此应该能够理解需要android-support-v4。我可能在这里想念一些东西......

我也尝试用phonegap-ua-push,android-support-v4-22.2.0使用的替换android-support-v4,但似乎有一些缺失的符号:

  

错误:找不到符号       FragmentManagerImpl mFragmentManager;

     

错误:找不到符号       FragmentManagerImpl mChildFragmentManager;

2 个答案:

答案 0 :(得分:3)

我终于解决了我的问题,使用Facebook插件的这个分叉https://github.com/jeduan/cordova-plugin-facebook4,它使用了最后一个Facebook sdk。

答案 1 :(得分:1)

您使用的Facebook插件附带了支持库的过时版本。我会向他们提出问题。看起来他们可能正在使用gradle,所以他们只需要删除支持库。

由于看起来你必须克隆Facebook插件,你可以尝试从插件中删除支持库 - https://github.com/Wizcorp/phonegap-facebook-plugin/blob/master/platforms/android/FacebookLib/libs/android-support-v4.jar,看看它是否适合你。如果没有,请尝试使用较新版本更新支持库,并保持您的gradle排除。