【问题标题】:Warning about an Android Library project gradle dependencies关于 Android 库项目 gradle 依赖项的警告
【发布时间】:2015-05-12 22:46:23
【问题描述】:

我正在使用 Android Studio 构建一个 Android 库项目。模块的类型是 gradle.build 文件中的 'com.android.library'。这个模块有很多依赖:

dependencies {    
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.squareup.okhttp:okhttp:2.3.0'
}

模块生成结果为 .aar 文件。我希望 .aar 文件的用户收到有关 .aar 依赖项的通知/警告,因此在他的项目中设置这些依赖项之前,他的项目不会成功构建。有没有办法做到这一点?

【问题讨论】:

    标签: android android-studio gradle android-gradle-plugin build.gradle


    【解决方案1】:

    我希望 .aar 文件的用户收到有关 .aar 依赖项的通知/警告,以便在他的项目中设置这些依赖项之前,他的项目不会成功构建。

    嗯,在某种程度上,这会自动发生,因为它们的编译会失败。

    如果您将此 AAR 作为工件分发到存储库中,则存储库元数据(例如,Maven 存储库的 POM 文件)可以包含有关这些依赖项的信息。当开发人员使用您的工件时,许多构建系统(Gradle、Maven 等)将使用它来根据需要自动下载这些依赖项。

    如果您选择通过其他方式分发此 AAR(例如,小山大小的 QR 码),您需要告诉开发人员他们需要通过某种文档包含这些依赖项。

    期待后续问题...

    我应该能够通过 Maven 存储库发布 .aar 闭源工件?

    当然。虽然 Maven Central 和 JCenter 是为开源量身定制的,但您当然可以拥有自己的存储库。它只是一个包含某些内容的目录。例如,我的开源库有自己的存储库,虽然我的库是开源的,但存储库并没有要求存储库保存开源代码。

    【讨论】:

    • 你能指出一个全面的教程/指南吗?
    • @2cupsOfTech: blog.blundell-apps.com/… 该博客文章概述了发布到本地 Maven 存储库的内容,该存储库只是本地可访问文件系统上的一个目录。如果库的使用者都是本地的(例如,具有共享文件服务器的团队),那么这可能就是您所需要的。如果您希望在线发布此内容,您可以使用官方 repo 服务器(Sonatype、Bintray 等),也可以使用静态主机(我使用 Amazon S3)。
    • @2cupsOfTech:后一种方式唯一的限制是HTTPGET目录请求需要返回目录内容。这可能由您的 Web 主机为您提供。 S3 没有,所以我使用 bash 脚本预先生成了 HTML,我发现该脚本位于 Internet 的某个地方。然后我使用 AWS 命令​​行工具 (aws) 将我的本地存储库同步到 S3 (aws s3 sync) 以使用生成的目录列表发布存储库。
    • @2cupsOfTech:在 GitHub 上有托管 repo 的方法,虽然我没有亲自尝试过。
    • 顺便说一句,编译不会失败,它只会导致运行时异常。如果编译失败,那我的工作就完成了
    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多