依赖分为公共mavn库依赖,私有maven库依赖,本地仓库依赖,aar依赖,module直接依赖。
方案1:
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name:'cards', ext:'aar')
}
方案2:新建一个jar/aar Module,选择aar 文件,然后新建的Module 目录下,就会多了个build.gradle 和xxx.aar。
configurations.maybeCreate("default")
artifacts.add("default", file('mylibrary-debug.aar'))
方案3:批量引用
设置脚本,在project根目录下buildsystem/util.gradle
/**
* 是否是module依赖方式
* @return
*/
def isDepModule()
{
return "1".equals(DEPENDENCIES_MODULE);
}
/**
* 设置aar库的path
* @param project
*/
def setAARDirs(Project project)
{
project.repositories {
flatDir {
dirs 'libs','libs/aars','libs/aars/default' //dirs 'libs','libs/aars','libs/aars/default'
}
}
}
/**
* 添加aar依赖库
* @param dh
* @param ft
* @param isDepModule
* @return
*/
def addAARLibs(Project project, boolean isDepModule = false)
{
DependencyHandler dh = project.dependencies;
ConfigurableFileTree ft = project.fileTree(dir: 'libs', include: '**/*.aar');
ft.each { File f ->
//default目录下的aar是一直要依赖的,aars目录下的aar是替代module的
if(f.parentFile.name.equals('default') || !isDepModule && f.parentFile.name.equals('aars'))
{
dh.add("compile", [name: f.name.lastIndexOf('.').with { it != -1 ? f.name[0..
}
}
}
ext{
isDepModule = this.&isDepModule //是否是module依赖方式
setAARDirs = this.&setAARDirs //设置aar库的path
addAARLibs = this.&addAARLibs //添加aar依赖库
}
在project的根目录下的buidl.gralde顶部引入util.gralde
apply from: 'buildsystem/util.gradle'
在需要的引用aar的modul的build.gradle中设置aar路径,级联依赖时,在依赖链上的每个module中都要添加路径,不然找不到。
//在android节点中或者在最外层都可以
repositories {
rootProject.ext.setAARDirs(project);
}
在dependencies中引入
rootProject.ext.addAARLibs(project, false);