如何知道重复的库是模块还是组?

时间:2017-04-24 07:33:48

标签: android performance android-layout android-fragments android-gradle

我在Gradle上遇到重复的库错误,我在项目中添加的aar文件之一已经提供了http-client-library库。

enter image description here

现在我需要从这个SDK library文件中删除这个库,因为其他一些库也在使用它。

我试过了。

 compile(name: 'SDK-app-1.0.0', ext: 'aar'){
        exclude module: 'httpclient'
    } 

但它没有影响它,我仍然可以在httpclient库的子模块中看到SDK-app库。

我无法理解我需要在这里添加什么?它是模块还是库,还是应该设置transitive=true以从aar文件中删除此库。

当我尝试在我的项目中添加此库时

  

重复的zip条目   [Android的异步-HTTP-1.4.9.jar:COM /循环J /机器人/ HTTP / AsyncHttpClient $ 1.class])

1 个答案:

答案 0 :(得分:4)

如果您知道compile声明

解决这个问题的最简单方法是获取通常会将依赖项添加到项目中的compile语句。

然后你可以把它拆开来获得groupmodule。像这样:

  1. 识别第一个冒号
  2. 识别第二个冒号
  3. 从开头到第一个冒号的所有内容都是group
  4. 第一个和第二个冒号之间的所有内容都是module
  5. taking apart compile statement

    排除依赖关系会很简单:

    compile 'some.imaginary:library:4.8.15', {
        exclude group: 'com.google.dagger', module: 'dagger'
    }
    

    如果您不了解compile声明

    如果您没有compile声明,事情会变得更复杂(但并不多)。你可以:

    1. 尝试找出modulegroup在线查找工件。例如在Maven repository search engine中。如果查看Maven依赖关系,您可以看到代表groupId的{​​{1}}标记和代表group的{​​{1}}代码。

      maven dependency

    2. 或者您可以在本地使用gradle:

      1. 在Android Studio中打开artifactId窗格:
      2. terminal

        1. 输入:module
        2. 找到与您尝试排除和拆分的库相关的行,与第一个示例中的行相同:
        3. androidDependencies