天天看點

android studio library 子產品中正确引用aar

今天對接一個海康監控的sdk,其中sdk 是以aar的形式提供的,并且我需要用到此aar的子產品是個library。是以按照正常的在application子產品中引入aar的方式一緻報錯,首先提示要關閉offline ,然後關閉了還是會提示錯誤。想了很久不明白。最終通過公司前輩的指導,正确的引入了aar。

1.除了和正常的aar的引入方式外,我們還需要在application所在子產品的build.gradle檔案中加入如下一段:

repositories {
    flatDir {
        dirs 'libs', '../子產品名/libs'
    }
}
           

在application的build中也要加入檔案的指向,可加入各個子產品,其中用逗号隔開,子產品名就是你的modlename。

然後在你自己子產品中還要正确引入:

repositories {
    flatDir {
        dirs 'libs'
    }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile(name: 'aar名字', ext: 'aar')
}
           

到此aar的引入就完成了。

————————————–更新于 2018-01-03———————————–

最好使用遠端依賴的方式,這種方式可以有效解決,多層級依賴,導緻相同的庫檔案重複的問題。

遠端依賴的規則是不傳遞依賴,這樣本子產品依賴的再引用的子產品是不可見的:

子產品A,B,C

如果B依賴C并且是遠端依賴,那麼A依賴B的時候,C對于A是不可見的。

如果我們需要A中使用C,那麼可以在A中依賴C。

另一種解決方式:

那麼我們在library中依賴aar的時候就可以考略将此aar上傳到maven倉庫或者其他的遠端位址,這樣在依賴的時候就不會出現編譯不通過或者運作不了的問題。