【问题标题】:Can gradle resolve dependencies from just a Android .aar file?gradle 可以仅从 Android .aar 文件中解析依赖项吗?
【发布时间】:2015-07-18 13:14:04
【问题描述】:

我正在开发一个内部库(我们称之为“banana_lib”),它将包含在 Android 应用项目中。我想以 .aar 文件的形式将此库提供给客户。

我的库依赖于另一个库(比如说 Gson)。如果可以的话,我想避免将这个依赖的类捆绑到我的库中(“fat jar”、“uber jar”方法)。

我知道我可以要求我的库的用户在应用程序的 build.gradle 文件中包含依赖项:

dependencies {
    compile 'com.google.code.gson:gson:2.2.4'
    compile files('libs/banana_lib.aar')

}

但我不想让库的用户在应用程序的 build.gradle 文件中包含我的库的依赖项来增加负担。

问题: 有没有办法让 gradle 自动解析/包含 .aar 文件的依赖项?有什么方法可以让 .aar 库的用户付出最少的努力?我需要提供一对 .aar 和 .pom 文件吗?我的主要目标是减少这个库的用户必须做的事情。我觉得一个库应该理想地定义它的所有依赖项,而 gradle 应该只是在后台解决它们。

以稍微不同的方式:有没有办法允许客户/用户包含一个(内部!)库(具有外部依赖项),只需: 1.) 将 .aar 文件添加到构建中。 2.) 将其包含在 build.gradle 中。

如果有其他解决方案可以将库的用户/包含者必须做的工作量保持在最低限度,那么这也会很有趣:)

非常感谢!

【问题讨论】:

    标签: android gradle build aar


    【解决方案1】:

    但我不想让库的用户在应用程序的 build.gradle 文件中包含我的库的依赖项来增加负担。

    然后在工件存储库中发布 AAR 和 POM,POM 会在其中说明依赖关系。

    我觉得一个库应该理想地定义它的所有依赖项,而 gradle 应该只是在后台解决它们。

    这不是 JAR 和 AAR 的工作方式。 JAR 或 AAR 中都没有依赖关系信息。两者都依赖于 POM 或其他依赖信息、版本信息等的外部声明。

    有没有办法让客户/用户通过以下方式包含(内部!)库(具有外部依赖项):1.)将 .aar 文件添加到构建中。 2.) 将其包含在 build.gradle 中。

    在工件存储库中发布 AAR 和 POM,POM 会在其中说明依赖关系。

    请注意,“工件存储库”并不一定意味着 Maven Central 或 JCenter。工件存储库可以只是一个目录树,尤其是在通过本地文件系统访问时。例如,您的开发机器上已经有两个本地存储库,很可能是:Android 存储库和 Google 存储库。如果您希望将存储库托管在网站上(例如,内部 Web 服务器),这是可能的,但您需要在目录树的每一级添加目录样式的 index.html 文件。或者,据我了解,Sonatype 和 Bintray 销售专用的工件存储库服务器。

    【讨论】:

    • 所以,听起来我可以通过提供一对 AAR 和 POM 文件来最接近我想要的,并像这样包含它们:repositories { flatDir { dirs repositoryPath } } ...
    • @treesAreEverywhere:我没有尝试过flatDir,所以我不知道这是否可以在这里工作。我只使用过常规的 Maven 风格的存储库 (repositories { maven { url '...' }}),然后只用于 Web 托管的存储库(就像我用于 CWAC 库的那个)。
    • 跟进:如果我将 aar+pom 复制到磁盘上的 google maven 存储库中,我可以使用 .aar+.pom 组合。我无法弄清楚如何使用 flatDirs 进行这项工作。似乎在使用 flatDirs 时,它只期望并支持 .aar 文件,没有 .pom 文件。 gradle 在找不到依赖项时打印的文件位置列表也暗示了这一点。
    • 更多相关讨论在以下链接,但遗憾的是没有解决方案:(stackoverflow.com/questions/22795455/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 2014-05-04
    • 2014-04-01
    相关资源
    最近更新 更多