2014-09-01 86 views
5

有人可以解释下面引用的这段短文中Android工具团队的含义吗?解释Android构建系统文档中描述的传递依赖策略

具体来说: 什么是“somelib.jar”?

他们建议,我创建一个只有依赖性的新子项目,称之为“projectA”,然后让项目发布“projectA.jar”? (使用artifacts.add(“默认”,文件('projectA.jar'))

我想要发布“projectA.jar”及其依赖项,而不会导致任何“多个dex文件定义”错误

http://tools.android.com/tech-docs/new-build-system/tips#TOC-Handling-transitive-dependencies-for-local-artifacts-jars-and-aar-

报价:

如果您有想要更多 不止一个项目中使用当地的罐子或AAR库,你不能直接引用它作为一个本地 依赖关系。这是因为如果在项目及其所有 依赖关系中找到相同的jar文件两次,则android插件会投诉。 (请注意,即使您仅引用一次,您现在也无法真正使用本地文件)。

解决此问题的一种方法是将工件部署到存储库中。虽然 有可能,但由于管理这样的存储库的开销 可能不方便。

另一种方法是创建一个新的Gradle子项目,并使该012xx项目的已发布工件成为您想要 重用的jar或aar文件。然后,您可以简单地让其他Gradle子项目依赖 这个新的子项目。

在这个新的子项目,只需创建与 一个的build.gradle如下:

configurations.create( “默认”)

artifacts.add( “默认”,文件(“somelib .jar'))

回答

0

在我看来,这主要用于库模块。

如果一个库模块依赖于somelib.jar,依赖库模块的另一个应用程序模块也依赖于somelib.jar,那么可能会出现“多个dex文件定义”错误。

由于“提示”说,这个问题是可以解决的通过创建一个简单的模块,这是无法发布*.jar*.aar仅用于被其它模块可以依靠,只有依赖*.jar秒。有了这个,库模块的*.aar输出将不包括somelib.jar