Android Studio多项目共享Library

2017-07-23  本文已影响591人  LeonXtp
需求背景

有时候多个项目同步开发,它们共用同一些library,但是 android studio默认的方式是新建module或者从外部导入module,导入之后其实已经是原module的拷贝了,这时候如果一个项目中更新了这个library,另一个项目也要同步更新,工作量重复。

有没有什么办法像Eclipse中那样,依赖的库是独立在开发项目之外的?当然有。
网上找到一些相关的,但没发现可以直接走通的,或者由于编译环境导致过时,参考了一些资料,总结一下。

实现方式

本实现方式测试于android studio 2.3.3, gradle 3.3,gradle build tools 2.3.1,其他版本应该兼容但不保证。


下面从0开始。

apply plugin: 'com.android.application'

apply plugin: 'com.android.library'
 android {
   defaultConfig {

   }

里的 applicationId

include ':app', ':MyLibProjs'
project(':MyLibProjs').projectDir = new File('../MyLibProjs/')
include ':MyLibProjs:liba'
include ':MyLibProjs:lib2'

其中

'../MyLibProjs/'

表示跟MyMainProj目录同级下的MyLibProjs
我MyLibProjs中有3个库,但我这个实际项目中只需要引用liba和lib2,因此include这两个就好了,这中方式比eclipse下更加灵活

 /MyMainProj
    + app/
    ...

变成了这样:

/MyLibProjs
    + liba/
    + lib2/
    + libt/
    ...
 /MyMainProj
    + app/
    ...

这时可以看到MyLibProjs中liba和lib2的文字颜色是深黑色,而libt是浅色
这样就成功地引入了库项目。
但是这时候还不能在代码里调用这个库工程的module中的方法。
下一步:

compile project (':MyLibProjs:liba')
compile project (':MyLibProjs:lib2')

大功告成!这时已经成功地引入了库项目中的两个module,这时可以调用liba中的代码了。

不过如果要在MyLibProjs中再添加module的话,最好还是在as中打开MyLibProjs这个项目添加。

代码混淆注意

这时候就不能照原来的方式在库项目里对代码使用proguard了,修改方式如下:
修改库项目的module中的build.gradle文件

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
    }
    debug {
        minifyEnabled false
    }
}

为:

buildTypes {
    release {
        consumerProguardFiles 'proguard-project.txt'
    }
}

现在,工作量要节省很多了!

参考:
https://stackoverflow.com/questions/22243269/how-to-share-a-single-library-source-across-multiple-projects
http://www.wxtlife.com/2015/12/17/Android-studio-quote-same-lib/?utm_source=tuicool&utm_medium=referral

上一篇下一篇

猜你喜欢

热点阅读