在使用Android Studio 开发中,如遇到多个项目引用同一个library(源码)的情况时,会遇到在每个项目中都要有一套library的代码,对还在开发和维护中的library需要频繁的修改,这对同步就很麻烦了,下面提出以下方法供选择。
一、最好的方法:
将所以的library作为一个工程使用,然后将所有的library都放入此工程中,然后在其他引用library的工程中,引入新建的工程,这样看起来和eclipse 引用library的结构就很像了,且可以放入多个library都不影响。下面就来看看这种解决方法,该如何实现。
- 首先新建一个工程,注意是工程,不是Stuio里面的Module,起一个容易理解的工程名称
CommonLibrary
。 - 将需添加的library添加进CommonLibrary中,记得每个library也是需要有
build.gradle
文件的,且配置项正确。 -
在需要引用的的工程中,需要在
settings.gradle
文件中添加引用代码如下:include ':CommonLibrary' project (':CommonLibrary').projectDir = new File('../CommonLibrary/') include ':CommonLibrary:CommonsA'
其中CommonsA为项目要使用的公共library名称
上面三行代码也可以写作:
include ':CommonsA' project(':CommonsA').projectDir = new File('../CommonLibrary/CommonsA/')
然后在我们项目实际的model中修改build.gradle
文件,需要在dependencies
中添加下面的代码。CommonsA和CommonsB都是要要引用的项目。compile project (':CommonLibrary:CommonsA') compile project (':CommonLibrary:CommonsB')
至此多个工程引用同一个lib的方法就基本完成,配置玩后sync下,然后build,看是否成功。
二、这个方法也可以,缺点是会产生'..'的空project
在需要引用library的工程的settings.gradle文件添加引用代码如下:
// added this
include ':..:CommonLibrary:CommonsA'
然后在我们项目实际的model中修改
build.gradle
文件,需要在
dependencies
中添加下面的代码:
dependencies
{
...
compile proejct(':..:MySharedLibrary')
}
三、对library向每个引用的项目建立软连接。这样修改就会对每个引用同步修改.这种方法就是看起来会很臃肿,如果要引用多个library就很痛苦。
四、maven 仓库的方式,将所有的library都上传到maven仓库,然后在各个工程中进行引用,当然这种是对稳定的library来说是最好的一种方式,但对于library需要开发和修改的就不太适合了。