【问题标题】:Urban-airship + Facebook cordova plugin android-support-v4 conflictUrban-airship + Facebook cordova 插件 android-support-v4 冲突
【发布时间】:2015-08-18 16:34:19
【问题描述】:

我正在尝试将 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 所说,我试图从 platforms/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。我可能在这里误解了一些东西..

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

错误:找不到符号 FragmentManagerImpl mFragmentManager;

错误:找不到符号 FragmentManagerImpl mChildFragmentManager;

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 感谢@ralepinski 的回答,不幸的是它对我不起作用。我已经编辑了我的问题。你能让这两个插件一起工作吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      相关资源
      最近更新 更多