天天看點

android aar管理,android 庫依賴管理之一aar依賴

依賴分為公共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

def isDepModule()

{

return "1".equals(DEPENDENCIES_MODULE);

}

def setAARDirs(Project project)

{

project.repositories {

flatDir {

dirs 'libs','libs/aars','libs/aars/default' //dirs 'libs','libs/aars','libs/aars/default'

}

}

}

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);