如何将依赖项包含到 .aar 库中?

Posted

技术标签:

【中文标题】如何将依赖项包含到 .aar 库中?【英文标题】:How to include dependencies into .aar library? 【发布时间】:2016-01-06 16:26:29 【问题描述】:

我使用的是 android Studio 1.4

我的项目中有一个模块,它在 build.gradle 中有下一个依赖项:

dependencies 
    provided fileTree(dir: 'libs', include: ['*.jar'])
    provided 'junit:junit:4.12'
    apply plugin: 'com.google.gms.google-services'
    provided 'org.apache.directory.studio:org.apache.commons.io:2.4'
    provided 'com.google.android.gms:play-services:8.1.0'
    provided 'com.fasterxml.jackson.core:jackson-databind:2.2.0'
    provided 'com.fasterxml.jackson.core:jackson-core:2.2.0'
    provided 'com.fasterxml.jackson.core:jackson-annotations:2.2.0'

在构建 projectn 并同步 gradle 之后,我在我的 module/build/ouputs/aar 文件夹中获得了 lib-release.aar。比我尝试 File>New Module>Import JAR\AAR 它。然后,添加后

compile project(':mylib-release')

在“外部库”树中,我只获得了没有声明依赖关系的包。如何仅通过编译我的库来启用这些包的自动安装?

【问题讨论】:

为什么在依赖闭包中有apply插件调用? 【参考方案1】:

使用

compile fileTree(dir: 'libs', include: ['*.jar'])

而不是

provided fileTree(dir: 'libs', include: ['*.jar'])

【讨论】:

【参考方案2】:

provided 表示您将针对依赖项进行编译,但在运行时,系统将通过类加载器提供这些依赖项(它们不会捆绑在您的 APK 中)。

通常您希望使用compile,而不是providedprovided 依赖项的一个示例是 Android SDK 本身。如果您使用的是 gradle,Android 插件会在编译时处理使其可用,但您无需显式调用它。

【讨论】:

以上是关于如何将依赖项包含到 .aar 库中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将本地 aar 依赖项添加到 bintray 发布的库中?

如何将 Google 视觉依赖项添加到我的 .aar?

如何在 aar 库中指定依赖项?

如何发布带有远程依赖项 (gradle) 的 Android 库 (aar)?

创建一个包含所有颤振库和依赖项的 aar

Gradle:下载包含的 aar 库的依赖项