本地库项目依赖
除了依赖编译好的文件如jar、so等,Android Studio也提供了库项目的依赖方法。
创建module
Android Studio与Eclipse一样,支持本地以源码方式依赖一个Android库项目。在Android Studio菜单栏依次选择File→New→New Module,创建一个新的Android库项目,如图4.26所示。
图4.26 New Module
在弹出的界面中选择Android Library,完成新module的创建(你也可以import一个本地已存在的module)如图4.27所示。
图4.27 创建Android Library
创建好的整个项目工程,如图4.28所示。
图4.28 新建库项目
这样就创建好了一个Android库项目,在这个库项目里面,你可以做任何类似Android主项目一样的操作。如果主项目需要引用这个本地Android库项目,那么还需要在Project Structure中配置主项目对库项目的依赖,使用快捷键“cmd+;”或者选择菜单栏中的Project Structure可以打开项目设置界面,如图4.29所示。
图4.29 添加库项目依赖
选择app module,再选择Dependencies标签,点击“+”,选择Module dependency,选择创建的testLibrary1库项目作为自己的依赖库。点击OK后,等待项目Sync成功。
依赖创建完毕后,打开app module的build.gradle文件,找到dependencies领域。
- dependencies {
- compile fileTree(include: ['*.jar'], dir: 'libs')
- testCompile 'junit:junit:4.12'
- compile 'com.android.support:appcompat-v7:23.1.1'
- compile files('libs/okhttp-2.4.0.jar')
- compile project(':testlibrary1')
- }
可以发现,这里添加了一行新的配置“compile project(':testlibrary1')”,这个就是本地依赖库的依赖方式。如果你熟练的话,直接配置这行代码也可以实现同样的效果。
配置依赖库完毕后,在主项目中就可以完成对库项目的代码调用。
解析Gradle依赖库
Android库项目与主项目module在项目中的结构,如图4.30所示。
图4.30 库项目结构
可以发现app module和library testLibrary1处于同一级目录,在testLibrary1目录下同样有一个build.gradle文件来管理库的编译。打开testLibrary1的build.gradle文件,如下所示。
- apply plugin: 'com.android.library'
- android {
- compileSdkVersion 23
- buildToolsVersion "23.0.2"
- defaultConfig {
- minSdkVersion 14
- targetSdkVersion 23
- versionCode 1
- versionName "1.0"
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
- }
- dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- testCompile 'junit:junit:4.12'
- compile 'com.android.support:appcompat-v7:23.1.1'
- }
testLibrary1项目的build.gradle文件与主项目的build.gradle文件几乎一模一样,只不过在第一行有所不同,库项目是“apply plugin:'com.android.library'”,而主项目是“apply plugin:'com.android.application'”,从命名就可以看出它们的区别。Gradle正是通过这种插件式的配置方式来判断谁是主项目,谁是库项目。那么Gradle又是如何组织这些项目的呢?这就需要使用到项目根目录下的settings.gradle文件了,在引用库项目之前,它的内容如下所示。
- include ':app'
通过include方法来引用app module,而当配置了库项目之后,它的内容如下所示。
- include ':app', ':testlibrary1'
Gradle正是通过这种方式来实现多项目的管理的。到此为止,在文章最前面提到的5个Gradle相关的编译文件就全部介绍了,总结如下。
- build.gradle:控制每个module的编译过程。
- gradle.properties:设置Gradle脚本中的参数。
- local.properties:Gradle的SDK相关环境变量配置。
- settings.gradle:配置Gradle的多项目管理。
