如何只使用一个库(多个相同的库)

时间:2017-03-01 11:01:31

标签: android module duplicates external

情况是我在我的项目中使用库A.我还导入外部库,它也有自己的库A.所以你可以假设,当我尝试编译时,我收到多个DEX文件定义错误,这意味着那里是重复。

但是,如果我从项目中删除我的库,我就无法使用其提供的方法。而且我找不到如何从模块中删除该库。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

你应该能够像这样排除它:

compile('library:1.0.0') {
exclude group: 'something', module: 'something'
}

所以在外部库上执行此操作,以查找导致问题的所有内容。

从这里开始:https://discuss.gradle.org/t/how-to-exclude-transitive-dependency/2119/2

答案 1 :(得分:0)

在build.gradle(app)中定义multiDexEnable True

defaultConfig {

    multiDexEnabled true
 }

并且还在相同的build.gradle(app)中依赖定义

    compile 'com.android.support:multidex:1.0.1'

答案 2 :(得分:0)

谢谢你们的建议。 我不想像Michael建议的那样做,因为我认为它有点无用(有多个库具有相同的目的)(已经知道这个技巧)。 我已经尝试过ЯдмЖцмдшдт的答案,但无法完全编译代码。我收到了各种错误。

最后我解决了自己的问题。我做了什么:

从我的主app libs文件夹中删除库。删除Android Studio中的依赖项(文件 - >项目结构 - >依赖项(在模块应用程序中) - >如果有关于您的库,请删除。 在Android Studio中清理项目(Build - > Clean Project)。 转到我的库A所在的模块。转到该模块build.gradle文件,并在依赖项集群中添加以下行

  

编译文件('libs / libraryA.jar')

同步代码并享受结果。

TLDR 我没有在我的外部模块中编译libraryA但是它让我犯了重复错误,这就是我感到困惑的地方。通过从我的主项目中删除它并将其添加到我的模块的编译列表解决了问题。