【问题标题】:Android facebook lib conflicts, how to exclude conflicting?Android facebook lib冲突,如何排除冲突?
【发布时间】:2018-01-09 11:30:26
【问题描述】:

官方 facebook sdk lib 与 android sdk 冲突,尤其是: 'com.android.support:animated-vector-drawables:27.0.1'

Gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "re.tryout123"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}



repositories {
    maven { url "https://jitpack.io" }
    maven { url 'https://maven.fabric.io/public' }
    maven {
        url 'https://maven.google.com/'
        name 'Google'
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

    compile 'com.android.support:design:26.0.1'
    compile 'com.android.support:appcompat-v7:26.0.1'
    compile 'com.android.support:recyclerview-v7:26.0.1'


    compile ('com.facebook.android:facebook-android-sdk:4.+') {
        //Tryin to exlude the conflicting lib... 
        exclude group: 'com.android.support', module: 'animated-vector-drawable'
    }


    compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
        transitive = true;
    }
}

冲突:

错误文字:

所有 com.android.support 库必须使用准确的 sasme 版本 规范(混合版本可能导致运行时崩溃)。成立 版本 27.0.1、26.0.1。示例包括 com.android.support:animated-vector-drawable:27.0.1 和 com android.support:design:26.0.1

如果我删除 facebook 导入,冲突就消失了,所以我的问题是如何从 facebook 的库中排除动画矢量绘图?

你可以看到我在 gradle 文件中是如何尝试的,但现在已经成功了。

提前致谢。

【问题讨论】:

    标签: android facebook android-gradle-plugin android-facebook


    【解决方案1】:

    首先在终端中为您的应用执行./gradlew app:dependencies,然后您将获得

    +--- com.android.support:design:26.0.1
    |    +--- com.android.support:support-v4:26.0.1 -> 27.0.1
    |    |    +--- com.android.support:support-compat:27.0.1
    |    |    |    +--- com.android.support:support-annotations:27.0.1
    |    |    |    \--- android.arch.lifecycle:runtime:1.0.0
    |    |    |         +--- android.arch.lifecycle:common:1.0.0
    |    |    |         \--- android.arch.core:common:1.0.0
    |    |    +--- com.android.support:support-media-compat:27.0.1
    |    |    |    +--- com.android.support:support-annotations:27.0.1
    |    |    |    \--- com.android.support:support-compat:27.0.1 (*)
    |    |    +--- com.android.support:support-core-utils:27.0.1
    |    |    |    +--- com.android.support:support-annotations:27.0.1
    |    |    |    \--- com.android.support:support-compat:27.0.1 (*)
    |    |    +--- com.android.support:support-core-ui:27.0.1
    |    |    |    +--- com.android.support:support-annotations:27.0.1
    |    |    |    \--- com.android.support:support-compat:27.0.1 (*)
    |    |    \--- com.android.support:support-fragment:27.0.1
    |    |         +--- com.android.support:support-compat:27.0.1 (*)
    |    |         +--- com.android.support:support-core-ui:27.0.1 (*)
    |    |         +--- com.android.support:support-core-utils:27.0.1 (*)
    |    |         \--- com.android.support:support-annotations:27.0.1
    |    +--- com.android.support:appcompat-v7:26.0.1 -> 27.0.1
    |    |    +--- com.android.support:support-annotations:27.0.1
    |    |    +--- com.android.support:support-core-utils:27.0.1 (*)
    |    |    +--- com.android.support:support-fragment:27.0.1 (*)
    |    |    +--- com.android.support:support-vector-drawable:27.0.1
    |    |    |    +--- com.android.support:support-annotations:27.0.1
    |    |    |    \--- com.android.support:support-compat:27.0.1 (*)
    |    |    \--- com.android.support:animated-vector-drawable:27.0.1
    |    |         +--- com.android.support:support-vector-drawable:27.0.1 (*)
    |    |         \--- com.android.support:support-core-ui:27.0.1 (*)
    |    +--- com.android.support:recyclerview-v7:26.0.1
    |    |    +--- com.android.support:support-annotations:26.0.1 -> 27.0.1
    |    |    +--- com.android.support:support-compat:26.0.1 -> 27.0.1 (*)
    |    |    \--- com.android.support:support-core-ui:26.0.1 -> 27.0.1 (*)
    |    \--- com.android.support:transition:26.0.1
    |         +--- com.android.support:support-annotations:26.0.1 -> 27.0.1
    |         \--- com.android.support:support-v4:26.0.1 -> 27.0.1 (*)
    +--- com.android.support:appcompat-v7:26.0.1 -> 27.0.1 (*)
    +--- com.android.support:recyclerview-v7:26.0.1 (*)
    +--- com.facebook.android:facebook-android-sdk:4.+ -> 4.29.0
    |    +--- com.facebook.android:facebook-core:4.29.0
    |    |    +--- com.parse.bolts:bolts-android:1.4.0
    |    |    |    +--- com.parse.bolts:bolts-tasks:1.4.0
    |    |    |    \--- com.parse.bolts:bolts-applinks:1.4.0
    |    |    |         \--- com.parse.bolts:bolts-tasks:1.4.0
    |    |    +--- com.android.support:support-annotations:27.0.1
    |    |    \--- com.android.support:support-core-utils:27.0.1 (*)
    |    +--- com.facebook.android:facebook-common:4.29.0
    |    |    +--- com.facebook.android:facebook-core:4.29.0 (*)
    |    |    +--- com.android.support:appcompat-v7:27.0.1 (*)
    |    |    +--- com.android.support:cardview-v7:27.0.1
    |    |    |    \--- com.android.support:support-annotations:27.0.1
    |    |    +--- com.android.support:customtabs:27.0.1
    |    |    |    +--- com.android.support:support-compat:27.0.1 (*)
    |    |    |    \--- com.android.support:support-annotations:27.0.1
    |    |    +--- com.android.support:support-v4:27.0.1 (*)
    |    |    \--- com.google.zxing:core:3.3.0
    |    +--- com.facebook.android:facebook-login:4.29.0
    |    |    +--- com.facebook.android:facebook-core:4.29.0 (*)
    |    |    \--- com.facebook.android:facebook-common:4.29.0 (*)
    |    +--- com.facebook.android:facebook-share:4.29.0
    |    |    +--- com.facebook.android:facebook-core:4.29.0 (*)
    |    |    \--- com.facebook.android:facebook-common:4.29.0 (*)
    |    +--- com.facebook.android:facebook-places:4.29.0
    |    |    \--- com.facebook.android:facebook-core:4.29.0 (*)
    |    +--- com.facebook.android:facebook-applinks:4.29.0
    |    |    \--- com.facebook.android:facebook-core:4.29.0 (*)
    |    \--- com.facebook.android:facebook-messenger:4.29.0
    |         \--- com.facebook.android:facebook-core:4.29.0 (*)
    \--- com.crashlytics.sdk.android:crashlytics:2.6.8
         +--- com.crashlytics.sdk.android:beta:1.2.5
         |    \--- io.fabric.sdk.android:fabric:1.3.17
         +--- io.fabric.sdk.android:fabric:1.3.17
         +--- com.crashlytics.sdk.android:crashlytics-core:2.3.17
         |    +--- io.fabric.sdk.android:fabric:1.3.17
         |    \--- com.crashlytics.sdk.android:answers:1.3.13
         |         \--- io.fabric.sdk.android:fabric:1.3.17
         \--- com.crashlytics.sdk.android:answers:1.3.13 (*)
    

    通过com.android.support搜索你可以看到有很多地方使用它有两个版本27.0.126.0.1。这就是你有警告的原因。修复它

    第一种方式:通过排除 all com.android.support... 27.0.1 of facebook like

    让您的应用仅使用 26.0.1
    compile ('com.facebook.android:facebook-android-sdk:4.+') {
      exclude  group:'com.android.support', module:'support-annotations'
      exclude  group:'com.android.support', module:'support-core-utils'
      exclude  group:'com.android.support', module:'appcompat-v7'
      exclude  group:'com.android.support', module:'customtabs'
      exclude  group:'com.android.support', module:'support-v4'
      exclude  group: 'com.android.support', module:'cardview-v7'
    }
    

    Exclude 工作得很好但有一个问题:cardview-v7customtabs 丢失(因为目前没有库提供 cardview-v7customtabs)。所以你需要编译

    compile 'com.android.support:cardview-v7:26.0.1'
    compile 'com.android.support:customtabs:26.0.1'
    

    第二种方式:让你的应用只使用27.0.1by

    • compileSdkVersion 从 26 升级到 27

    • 将下面的所有编译从26.0.1更新为27.0.1

    compile 'com.android.support:design:26.0.1' compile 'com.android.support:appcompat-v7:26.0.1' compile 'com.android.support:recyclerview-v7:26.0.1'

    您可以通过流程解决类似问题here。 希望对你有帮助

    【讨论】:

      【解决方案2】:

      我的建议:不要从 facebook sdk 中排除库,而是强制 gradle 使用特定的库版本:

      configurations.all {
      resolutionStrategy.force 'com.android.support:cardview-v7:26.0.1'
      resolutionStrategy.force 'com.android.support:customtabs:26.0.1'
      

      }

      同时删除exclude group 部分:

      compile 'com.android.support:design:26.0.1'
      compile 'com.android.support:appcompat-v7:26.0.1'
      compile 'com.android.support:recyclerview-v7:26.0.1'
      
      compile('com.facebook.android:facebook-android-sdk:4.28.0')
      

      来源http://www.vogella.com/tutorials/Gradle/article.html#forcing-a-specific-version-of-a-transitive-dependency

      我是如何找到这两个库的?通过 Android Studio 项目视图中的外部库

      提示:我绝对推荐使用 + 登录依赖项(即使对于次要版本)。使用 plus 时,您无法在签出特定提交时重新创建应用程序的状态。

      【讨论】:

        【解决方案3】:

        尝试使用 Facebook SDK 4.28.0 版

         compile 'com.facebook.android:facebook-android-sdk:4.28.0'
        

        【讨论】:

        • 我为什么要这样做?我需要排除冲突的库,我该怎么做?
        • @adam-varhegyi 这只是一个临时解决方法。我遇到了这个错误并向 Facebook 报告。
        【解决方案4】:

        尝试移除对design的依赖:

        compile 'com.android.support:design:26.0.1'
        

        看看它是否可以编译,因为它是内部包含的。

        【讨论】:

        • 我也用appcompat,那个也和Facebook SDK冲突。我可以从 Facebook SDK 中排除冲突的包吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-13
        • 2018-02-23
        • 1970-01-01
        • 2020-06-08
        • 1970-01-01
        • 1970-01-01
        • 2021-02-24
        相关资源
        最近更新 更多