在下面的build.gradle中,我添加了配置部分以避免双重包含支持库。支持库用于主项目和依赖项目,如facebook sdk。没有配置部分,我得到了#34;意想不到的顶级异常"。添加该配置会使错误消失,应用程序一切正常。
现在,我正在尝试将RecyclerView添加到我的应用程序中,并且在对recyclerview进行充气时找不到RecyclerView类(尽管它构建正常)。如果我删除了facebook SDK和配置部分,则recyclerview工作正常。
问题:我可以对build.gradle进行哪些更改以使facebook SDK正常工作并且RecyclerView可以正常工作?换句话说,为什么配置部分不包括v7,只是它应该排除v4?
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'
}
答案 0 :(得分:13)
如果您与v4支持库存在依赖冲突,则可以通过gradle脚本将其从其中一个库中排除:
compile ('com.android.support:recyclerview-v7:+') {
exclude module: 'support-v4'
}
答案 1 :(得分:4)
找到了解决方案:
删除了排除support-v4
事实证明.aar
文件基本上是一个zip,因此从依赖.aar库中删除了support-v4 jar(使用7-zip)。
现在,我没有获得顶级异常,同时能够使用recyclerview-v7
。
如果您使用依赖项目而不是.aar文件,请尝试在编译之前删除依赖项目中的support-v4.jar文件。
gradle构建工具是否应该足够智能以排除重复的包而不是让用户通过这种解决方法和头痛?
答案 2 :(得分:4)
我修正了添加:
Set