我正在尝试使用 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;