Android Studio 單工程、多工程級聯依賴下的aar的引用
阿新 • • 發佈:2019-01-01
Android Studio 多工程級聯依賴下的aar的引用
背景:
application A 依賴 library B
library B 依賴 library C
library C 引用aar檔案 ,最終基於application A會構建出Apk釋出
第一種實現方式(這種方式對於單工程專案比較合適):
我在library C中的build.gradle下做如下配置:
apply plugin: 'com.android.library' repositories { flatDir{ dirs 'libs'; } } dependencies { compile fileTree(include: '*.jar', dir: 'libs') compile files('libs/org.apache.http.legacy.jar') compile(name:'dataReport1.0-release',ext:'aar') }
然後dataReport1.0-release.aar檔案放在了C的libs資料夾下,重新編譯,報錯
錯誤內容是 A 和 B都找不到這個aar檔案,原因是編譯時build.gradle檔案會合並,C 中build.gradle檔案的語句
compile(name:'dataReport1.0-release',ext:'aar')在A 、B編譯時都會生效,所以找不到,此時把aar檔案拷貝到
A和B的libs下問題解決,但是這種方式不可取。
推薦的解決方式:
第一步:aar檔案放在C工程下的libs目錄下
第二步:C中的build.gradle只在dependencies下新增一行compile編譯語句:
apply plugin: 'com.android.library'
dependencies {
compile fileTree(include: '*.jar', dir: 'libs')
compile files('libs/org.apache.http.legacy.jar')
compile(name:'dataReport1.0-release' ,ext:'aar')
}
第三步:在project的build.gradle中做如下配置,一定是在project的build.gradle
allprojects {
repositories {
jcenter()
mavenCentral()
flatDir{
dirs '../C/libs';
}
}
}
重點是flatDir下的配置,這樣可以讓A和B都去C下面的libs下找這個aar檔案!