android中的gradle依赖错误

Posted

技术标签:

【中文标题】android中的gradle依赖错误【英文标题】:gradle dependency error in android 【发布时间】:2014-10-18 17:59:47 【问题描述】:

在下面的 build.gradle 中,我添加了配置部分以避免双重包含支持库。支持库用于主项目和依赖项目,如 facebook sdk。如果没有配置部分,我会得到“UNEXPECTED TOP-LEVEL EXCEPTION”。添加该配置会使错误消失,应用程序一切正常。

现在,我正在尝试将 RecyclerView 添加到我的应用程序中,但在为 recyclerview 充气时找不到 RecyclerView 类(尽管它可以构建)。如果我删除 facebook SDK 和配置部分,recyclerview 工作得很好。

问题:我可以对 build.gradle 进行哪些更改以使 facebook SDK 和 RecyclerView 正常工作?换句话说,为什么配置部分只排除了v4,却排除了v7?


dependencies 
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-v4:+'
    compile 'com.android.support:support-v13:+'
    compile 'com.android.support:cardview-v7:+'
    compile 'com.android.support:recyclerview-v7:+'
    compile 'com.google.android.gms:play-services:4.4.52'
    compile project(':facebook-3.15')
    compile project(':parse-1.5.1')
    compile project(':viewpagerindicator-2.4.1')


configurations 
    // to avoid double inclusion of support libraries
    all*.exclude group: 'com.android.support', module: 'support-v4'

【问题讨论】:

【参考方案1】:

如果您与 v4 支持库存在依赖冲突,您可以通过 gradle 脚本将其从其中一个库中排除:

compile ('com.android.support:recyclerview-v7:+') 
    exclude module: 'support-v4'

【讨论】:

我试过了,但无法让 facebook SDK 和 recyclerview 都工作 您是否尝试过从 facebook SDK 依赖项中排除 support-v4?它们可能包含与其他支持库不同的版本。 我在我的项目中使用 facebook.aar 文件作为 facebook 库,所以刚刚从 facebook.aar 存档中删除了 support-v4 jar 文件。【参考方案2】:

我修正了添加:

compile ('com.facebook.android:facebook-android-sdk:3.22.0@aar')
    exclude module: 'support-v4'

【讨论】:

那为什么当我运行 gradle app:dependencies 时,我仍然看到:com.google.android.gms:play-services-gcm:9.4.0 | +--- com.google.android.gms:play-services-base:9.4.0 | | +--- com.google.android.gms:play-services-basement:9.4.0 | | | \--- com.android.support:support-v4:23.0.0 可能是另一个支持的库,请尝试删除所有其他库并保留您要排除应用程序兼容性的库并检查发生了什么【参考方案3】:

找到了解决办法:

    删除了 build.gradle 中排除 support-v4

    的配置部分

    原来.aar文件基本上是一个zip,所以从依赖.aar库中删除了support-v4 jar(使用7-zip)。 现在,我没有得到***异常,同时能够使用recyclerview-v7

如果您使用的是依赖项目而不是 .aar 文件,请在编译之前尝试删除依赖项目中的 support-v4.jar 文件。

gradle 构建工具不应该足够智能以排除重复的包,而不是让用户经历这种变通方法和头痛吗?

【讨论】:

嘿,这里有同样的错误,但仍然在您的帮助下无法修复它。你能详细说明一下吗?

以上是关于android中的gradle依赖错误的主要内容,如果未能解决你的问题,请参考以下文章

在最后一个 gradle 版本中无法解析 android studio 中的 jitpack 依赖项

Android 架构组件:依赖版本的 Gradle 同步错误

Gradle 错误:任务“:app:processDebugGoogleServices”执行失败

Android Gradle 插件Gradle 依赖管理 ② ( build.gradle 中的 dependencies 依赖配置 | DependencyHandler#add 方法介绍 )

当内部类依赖于R.java时,Gradle在Android Javadocs中排除R.java

android studio的 gradle 依赖同步错误解决方法