在android中创建一个带依赖项的库

时间:2016-05-06 07:04:17

标签: android android-studio gradle dependencies android-gradle

我创建了一个图书馆' LibA'它依赖于许多第三方库,如RecyclerView,EventBus等。当我试图将它作为aar包含在另一个项目中时,Library被成功包含在内,但是依赖性并没有出现。

Q1 如何在LibA中包含依赖项,以便当其他项目包含此库时,它不应该担心我的库的内部依赖性。

Q2 gradle如何管理库的依赖关系,是一次性下载所有依赖项,还是先检查主项目中已有的依赖项?

Q3 当某人包含来自jcenter的库时,是否会带来所有依赖项?

任何帮助都将非常感谢。 :)

2 个答案:

答案 0 :(得分:9)

aar 文件不包含嵌套(或transitive)依赖项,并且没有pom文件描述库使用的依赖项。

这意味着,如果您使用flatDir repo导入aar文件,则还必须在项目中指定依赖项。

  

Q1如何在LibA中包含依赖项,以便当其他项目包含此库时,它不应该担心我的库的内部依赖性。

您应该使用 maven存储库(您必须在私人或公共maven仓库中发布库),您将不会遇到同样的问题。
在这种情况下,gradle使用pom文件下载依赖项,该文件将包含依赖项列表。

  

Q2 Gradle如何管理库的依赖关系,它是一次性下载所有依赖项,还是首先检查主项目中已有的?

Gradle为您处理依赖项。它没有两次或更多次添加相同的依赖。

  

Q3当某人包含来自jcenter的库时,是否会带来所有依赖关系?

如前所述,在这种情况下,依赖项有一个pom文件,它描述了所有嵌套的依赖项。 Gradle自动下载。

答案 1 :(得分:0)

<块引用>

Q1 如何在LibA中包含依赖,以便其他项目包含此库时,不必担心我的库的内部依赖。

你应该使用一些依赖管理器。例如 Maven Central,它具有 .pom 文件,该文件定义了应该使用的所有附加依赖项

<块引用>

Q2 gradle 如何管理库的依赖,是一次性下载所有依赖,还是先检查主项目中已经存在的依赖?

gradle 下载所有必需的依赖项。它为依赖关系创建一个图表,尝试解决冲突并下载它们

<块引用>

Q3 当有人包含来自 jcenter 的库时,是否会带来所有依赖项?

如果在 pom 文件中没有定义额外的依赖项,它们将不会被下载,只会下载库