我正在建立一个图书馆,并希望将Volley用于它的网络方面。我可以打包Volley jar并释放.aar,将源复制到我的项目中并释放.jar(blah),或者使用Gradle做一些依赖魔法。
无论哪种方式,我猜我会发生冲突,如果任何试图使用我的库的应用程序也有通过.jar或gradle的Volley依赖。
这样做的正确方法是什么?
我更愿意不仅要求用户删除他们自己的Volley依赖项,以避免多个事物定义它的dexexception,因为这似乎是这些错误的最常见解决方案。
由于
答案 0 :(得分:3)
如果您与传递依赖项发生冲突,可以将其排除,或者不在项目中定义它并使用库项目中的那个。
摇篮
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
答案 1 :(得分:1)
provided
依赖项。这将根据Volley代码编译您的源代码,但不会将Volley代码与您的AAR打包。它看起来像这样:
dependencies {
//If you have source
provided project(':volley')
//If you have a jar
provided files('path/to/volley.jar')
}
这并不理想,因为它会要求使用你的库的人声明一个Volley依赖。由于没有官方工件,他们所拥有的Volley版本可能与您编译的内容不兼容。