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