【问题标题】:How do I include dependencies in my android library如何在我的 android 库中包含依赖项
【发布时间】:2014-09-02 09:46:24
【问题描述】:

我正在编写一个 android sdk,我现在想分发它,但我遇到了它的依赖关系问题。我正在使用 gradle 和 android studio。

我的 sdk 依赖于 volley 和 gson,我将它们作为 jars 添加到我的 sdk 中。每当我尝试创建要在单独的客户端应用程序中使用的 aar 或 jar 时,当我的 sdk 尝试引用 volley 因为它没有包含在 aar 或 jar 中时,我总是会崩溃。 关于我应该如何做到这一点的任何想法?我曾研究过制作肥罐,但没有取得多大成功。

我也尝试过使用如下所示的远程依赖项,但即使在客户端应用程序中构建了 gradle 之后,仍然不包括 volley 和 gson。 这是我目前在我的 sdk build.gradle 中所拥有的

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'com.google.code.gson:gson:2.3'
}

然后在客户端构建 gradle 中我有

repositories {
    flatDir {
        dirs 'libs'
    }
}


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name:'mysdk-1.0.0', ext:'aar')
}

我正在使用./gradlew clean build 构建我的sdk 的aar 和jar 谁能告诉我在我自己的库中包含依赖项的正确方法?

【问题讨论】:

  • 这是一个非常简洁明了的问题。它准确地捕捉到了我想问的问题,但没必要,因为我找到了你的!荣誉。
  • 你是怎么解决的?接受的答案对我不起作用。

标签: java android android-gradle-plugin


【解决方案1】:

如果您希望在客户端应用程序中包含库的传递依赖项,则需要创建一个包含 pom.xml 的适当的 maven 兼容包。这个 pom 将描述你的 lib 的依赖关系,以便客户端可以在它们包含你的 lib 时传递这些 deps。

查看本教程:http://blog.blundell-apps.com/locally-release-an-android-library-for-jcenter-or-maven-central-inclusion/

您不必在开发期间在任何地方上传工件,只需使用本地 maven 存储库作为目标,并将 mavenLocal() 作为客户端应用程序的存储库。 这样,您就可以使用
compile 'com.mysdk:mysdk:1.0.0'

将您的 lib 作为标准 maven 依赖项引用
【解决方案2】:

在您的客户端中,像这样更改您的依赖项块:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name:'mysdk-1.0.0', ext:'aar') {
        transitive = true
    }
}

这也应该引入你的传递依赖。

【讨论】:

  • 我在哪里调用这个编译(名称:分机:)?我正在尝试在我的客户的 build.gradle 中调用它,它在 mysdk-1.0.0 上给出了错误。我认为 mysdk-1.0.0 只是一个标签,它将被赋予生成的 jar/aar。我该怎么办?
  • 这对我不起作用。 AAR 文件中是否包含依赖信息?不需要POM文件吗?
猜你喜欢
  • 2014-04-24
  • 2015-11-11
  • 2018-04-02
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 2020-03-15
  • 1970-01-01
  • 2014-04-04
相关资源
最近更新 更多