java - 如何使一个android库项目依赖于另一个库而不发生冲突?

标签 java android android-gradle-plugin build.gradle

我正在构建一个库,并希望使用 Volley 来实现它的网络方面。我可以打包 Volley jar 并发布 .aar,将源代码复制到我的项目中并发布 .jar(废话),或者使用 Gradle 执行一些依赖项魔法。

无论哪种方式,我猜如果任何尝试使用我的库的应用程序也有 Volley 依赖项(通过 .jar 或 gradle),我都会发生冲突。

正确的做法是什么?

我宁愿不只是要求用户删除自己对 Volley 的依赖关系,以避免多个事物定义它的 dexException,因为这似乎是这些错误的最常见解决方案。

谢谢

最佳答案

如果您与传递依赖项发生冲突,您可以将其排除或不在项目中定义它并使用库项目中的依赖项。

Gradle

dependencies {
    compile("org.gradle.test.excludes:api:1.0") {
        exclude module: 'shared'
    }
}

Maven

  <dependencies>
    <dependency>
      <groupId>sample.ProjectA</groupId>
      <artifactId>Project-A</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>  <!-- declare the exclusion here -->
          <groupId>sample.ProjectB</groupId>
          <artifactId>Project-B</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
  </dependencies>

引用:

Gradle http://www.gradle.org/docs/current/userguide/dependency_management.html

Maven http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

关于java - 如何使一个android库项目依赖于另一个库而不发生冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27913200/

相关文章:

java - 我们没有任何 Java 内置方法来查找数字数组的平均值吗?

java - 为什么不能执行 Set <Object> = new TreeSet <String>

android - 在移动设备上加载和显示高分辨率图像

android - 将 gradle 更新到 7.0.3 后 buildConfigField 不起作用

java - 如何将一个人移动过的所有坐标保存到一个二维数组中?

java - 获取迭代器的计数/长度/大小的最佳方法是什么?

android - 导入高分辨率照片 android 应用程序无法正常工作

带有搜索栏的android通知

android - 自更新到 android Gradle 3.4.0 后出现 Gradle 错误

android-studio - 无法正确编译 libgdx 的播放服务