假设android Library引用结构为
TopLibModule
|
SecondLibModule
|
MainAppModule
然后项目需要引用第三方(或者可以把一些相对固定的
Library编译为aar来优化编译)aar文件;
通常给相应的 Module 增加 aar引用就好了,
比如 TopLibModule 引用 one.aar
这时候给 给 TopLibModule 的build.gradle 增加
repositories {
flatDir {
dirs '../libs';
}
}
dependencies {
compile(name:'one', ext:'aar')
}
这里的 “../libs” 是相对的,SecondLibModule 和
MainAppModule 中显然没有 相应的 one.aar 所以
报错。
解决方案一:为one.aar 新建一个 aar module,引用之;
但这样一来 每次多一个aar就要多一个 module
解决方案二:在顶部的 library的 libs中放入aar,在项目的
build.gradle中修改
allprojects {
repositories {
jcenter()
flatDir {
dirs '../TopLibModule/libs';
}
}
}
需要用到 aar的Module 中加入对应的引用
compile(name:'one', ext:'aar')
dirs '../TopLibModule/libs';
这个只是一个相对路径,也可以新建一个目录,比如跟
TopLibModule同级别的 ExtendedAars 目录下放入多个aar
项目build.gradle 引用为 dirs '../ExtendedAars';
另 把 aar编译为 release的方法为:
aar module 的源码工程里 Open module setting , 把aar module 引入某个 module,
dependencies中找到aar module,最右侧列 Scope,选择对应的编译选项。