【问题标题】:Understanding "repositories" tags了解“存储库”标签
【发布时间】:2019-07-22 18:55:17
【问题描述】:

我很困惑为什么在 Android 项目的多个地方都需要相同的 repositories 标签。为什么我们不在一个标签下拥有所有存储库,编译器会从那里搜索所有内容。

我的特殊情况是:

我创建了一个库模块并将其添加到项目中。在我的库 gradle 文件中,我有:

implementation 'com.github.jkwiecien:EasyImage:1.3.1'

为此,我在库的 gradle 文件中的 repositories 标记中添加了 maven { url "https://jitpack.io" }。我只想要库中的 EasyImage,而不是项目中的 EasyImage。但是直到我在 Project 的 app/build.gradle 文件中添加了相同的 jetpack.io 之后,它才会编译。为什么我们需要这样做?

我想分发我的库,并且我不希望用户添加已经添加到我的库中并且他们的项目不需要的东西。

【问题讨论】:

  • 我已经更改了答案,如果我理解正确,请告诉我。

标签: android android-studio tags


【解决方案1】:

编辑: 如果您将 jitpack 存储库 url 放在项目级别 build.gradle 而不是应用级别 build.gradle 中,它将适用于两者。当您将库上传到 JitPack 时,它会自动为您“构建”您的库,但在您的情况下,您的库是在本地构建的,因此它需要每个构建文件中的存储库 url 来单独构建它们。但是,您应该将存储库 url 保留在您的库中,因为最终您将分发它,并且如果您在项目 build.gradle 文件而不是存储库中有 url,JitPack 将无法构建您的库模块。

上一个答案: 据我了解: 您在库中使用 EasyImage,当您将库添加到项目时,您希望使用加载到库中的相同 EasyImage 库,而不是将其添加到项目中。

如果您像这样使用“实现”加载您的库:

implementation 'com.github.you:yourlibrary'

您将无法访问“您的图书馆”使用的依赖项。但是如果你使用'api'加载它

api 'com.github.you:yourlibrary'

现在您可以从此库中访问 EasyImage,而无需再次添加。

这是在 Gradle 3.0 中添加的,它的工作方式与以前的 'compile' 关键字相同(现在已弃用)。详细说明请查看this article

为什么会有这种行为?
通过使用imepentation, 如果 EasyImage 中的任何实现发生更改,Gradle 只需重新编译 EasyImage 和您的库,因为任何其他不直接导入您的库的类都不能使用它的任何实现。

但是如果你使用 api 加载库,如果在 EasyImage 内部实现了任何更改,gradle 需要重新编译 EasyImage、你的库和所有其他导入你的库的模块,因为任何其他模块可能使用 EasyImage 的实现(比如你的应用程序) .

【讨论】:

  • 你告诉我我已经知道的。同样,在我的问题中,当我的项目没有实现 EasyImage 时,为什么我需要在我的项目模块中添加 JitPack。我的库实现了 EasyImage,我已经将 JitPack 添加到库 gradle 中。
  • @M. Usman Khan 好的,所以您想说的是您将 EasyImage 导入到您的库中,所以现在您想在您的应用程序中从您的库中使用它而不是再次加载它?
  • 没有。我只需要在我的库中使用 EasyImage。但是如果没有在“存储库”中添加 JitPack 到项目 gradle 和库 gradle,它不会编译。
  • 没有兄弟。我的库使用托管在 jitpack 上的 EasyImage 库
  • @M.UsmanKhan 如果您不通过 JitPack 发布,这意味着您正在本地添加库。如果您将 jitpack 存储库放在 Project level build.gradle 而不是 app level build.gradle 中,则两者都适用。当您将库上传到 JitPack 时,它会自动为您“构建”您的库,但在您的情况下,您的库是在本地构建的,因此它需要存储库 url。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 2017-05-10
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
相关资源
最近更新 更多