如何将依赖项包含到 .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
,而不是provided
。 provided
依赖项的一个示例是 Android SDK 本身。如果您使用的是 gradle,Android 插件会在编译时处理使其可用,但您无需显式调用它。
【讨论】:
以上是关于如何将依赖项包含到 .aar 库中?的主要内容,如果未能解决你的问题,请参考以下文章
如何将本地 aar 依赖项添加到 bintray 发布的库中?