Android Studio多工程引用同一个library项目配置方法

在使用Android Studio 开发中,如遇到多个项目引用同一个library(源码)的情况时,会遇到在每个项目中都要有一套library的代码,对还在开发和维护中的library需要频繁的修改,这对同步就很麻烦了,下面提出以下方法供选择。当然最后会给出最合理的解决办法。

第一种方法是对library向每个引用的项目建立软连接。这样修改就会对每个引用同步修改.这种方法就是看起来会很臃肿,如果要引用多个library就很痛苦。

第二种就是maven 仓库的方式,将所有的library都上传到maven仓库,然后在各个工程中进行引用,当然这种是对稳定的library来说是最好的一种方式,但对于library需要开发和修改的就不太适合了。

第三种就是将所以的library作为一个工程使用,然后将所有的library都放入此工程中,然后在其他引用library的工程中,引入新建的工程,这样看起来和eclipse 引用library的结构就很像了,且可以放入多个library都不影响。下面就来看看这种解决方法,该如何实现。

  • 首先新建一个工程,注意是工程,不是Stuio里面的Module,起一个容易理解的工程名称CommonLibrary
  1. 将需添加的library添加进CommonLibrary中,记得每个library也是需要有build.gradle文件的,且配置项正确。
  2. 在需要引用的的工程中,需要在settings.gradle文件中添加引用代码如下:

    1
    
    include ':CommonLibrary'
    project (':CommonLibrary').projectDir = new File('../CommonLibrary/')
    include ':CommonLibrary:CommonsA'
    

    其中CommonsA为项目要使用的公共library名称
    然后在我们项目实际的model中修改build.gradle文件,需要在dependencies中添加下面的代码。CommonsA和CommonsB都是要要引用的项目。

    1
    
    compile project (':CommonLibrary:CommonsA')
    compile project (':CommonLibrary:CommonsB')
    

至此多个工程引用同一个lib的方法就基本完成,配置玩后sync下,然后build,看是否成功。


转自:http://www.wxtlife.com/2015/12/17/Android-studio-quote-same-lib/?utm_source=tuicool&utm_medium=referral


本文将会在原文上做一些扩展,解释一些基本概念,帮助刚接触Android Studio(以下简称AS)的朋友更好的理解。

本文所描述的是在本地共享,使用SVN,git,maven这些同样可以实现,不在本文讨论范围。

如描述有误,请多多指正!

Project


AS对Project的概念进行了重定义,概括起来讲就是:APP以及它的依赖。

举个例子:

你在Eclipse中创建了一个Project叫MyAPP,同时它依赖于另外两个Library Project:Library1和Library2,在Eclipse中这是三个Project;当你把代码迁移到AS后(迁移过程省略10000字),它们合起来才是一个Project,叫作MyApp,这个Project下面有三个Module:library1,library2以及myApp.

好了现在你已经把代码迁移到了AS,这时你发现Library1是被原先多个项目所共享的,按照上面的做法,原先的N个项目独立成N个工作空间,每个工作空间里都有一份Library的代码。没有人会愿意去维护这同样的N份代码对不对?即便修改了之后只是Ctrl+C,Ctrl+V.

New Library Module


先说下共享Library的思路:把所有的Library都作为Module放到一个Project里,然后让APP去引用这个Library Project.

这里先简单说下怎么在AS里创建一个Library Module。

这里新建了一个叫SharedLibrary的项目,默认情况下该项目包含一个Module叫作"app"。把项目呈现方式切换成"Android"。


Android视角

在Gradle Scripts目录下有两个build.gradle文件,一个是整个Project的构建文件,一个是Module app的。打开Module app的构建文件。


默认应该是这个样子的

现在要把"app"这个Module变成一个Library:

第一步,把第一行改成apply plugin:'com.android.library'

第二步,删掉applicationId "com.test.qsjh"这一行。

Import Library Module


通过AS左上角File->New->Import Module导入你已经拥有的Library,在这里我导入androidLibrary和androidUIStyle两个Library.


3个Module分别有自己的build.gradle文件

现在已经准备好Library Project了,接下来是怎么引用它。

这里新建了一个Project叫作FirstApp,同样先切换到Android视角。

第一步:打开Gradle Scripts目录下的settings.gradle,应该只有一行include':app',加上下面这些


SharedLibrary是Project的名字,androidLibrary和androidUIStyle是Module的名字

第二步:打开Gradle Scripts下Module app的build.gradle文件,在dependencies{}中添加两行


表示需要对它们进行编译

第三步:点击AS上方菜单栏的Build->Clean Project,完成之后你会发现你的工作空间中多了两个Module.


突然降临的androidLibrary和androidUIStyle

我们把视角切回Project


可以看到,FirstApp和SharedLibrary是在不同的物理路径的

至此,我们就解决了在不维护多份代码的情况下共享Library。



文/QSJH(简书作者)
原文链接:http://www.jianshu.com/p/f664ebc03d93
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

转自:http://www.jianshu.com/p/f664ebc03d93

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值