Android Studio中多项目共享Library

我有两个项目都在使用Android Studio,一个是server项目,另一个是client项目,同时我有一个library在两个项目中都要使用。
一直以来,在两个项目中我都有一份library代码,在一个项目中改动library代码后,都需要手动拷贝到另一个项目。

今天我要创建一个共享的library项目,在两个Android Studio项目都能同时使用。

调整后的目录结构如下:

src/android/ServerProject  
src/android/ClientProject
src/android/MySahredLibrary

创建共享library项目

在src/android/MySharedLibrary下创建Library项目

目录结构如下:

MySharedLibrary/src/main/java/...  
/build.gradle

其中build.gradle文件内容如下:

apply plugin: 'com.android.library'

android {
compileSdkVersion 20
buildToolsVersion "20.0.0"

defaultConfig {
applicationId "com.tinkermode.mylibrary"
minSdkVersion 15
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar']
}

这跟一般Android library项目差不多,唯一的区别是移除了项目最外层的build.gradle,
本来在最外层的build.gradle中需要定义的buildscript等由包含这个library的父项目提供(比如ServerProject)。

在其他项目中使用library项目

  • 首先,我需要在父项目的settings.gradle中引用library项目

    // original line
    include ':app'
    // added this
    include ':..:MySharedLibrary'
  • 然后在使用library的module中,修改 build.gradle,加入如下行:

    dependencies {  
    ...
    compile proejct(':..:MySharedLibrary')
    }

这样调整后,我们就可以在两个项目中共享library了,还是挺简单的。

本文译自:Share code between projects in Android Studio