本地库项目依赖

除了依赖编译好的文件如jar、so等,Android Studio也提供了库项目的依赖方法。

创建module

Android Studio与Eclipse一样,支持本地以源码方式依赖一个Android库项目。在Android Studio菜单栏依次选择File→New→New Module,创建一个新的Android库项目,如图4.26所示。

本地库项目依赖 - 图1 图4.26 New Module

在弹出的界面中选择Android Library,完成新module的创建(你也可以import一个本地已存在的module)如图4.27所示。

本地库项目依赖 - 图2 图4.27 创建Android Library

创建好的整个项目工程,如图4.28所示。

本地库项目依赖 - 图3 图4.28 新建库项目

这样就创建好了一个Android库项目,在这个库项目里面,你可以做任何类似Android主项目一样的操作。如果主项目需要引用这个本地Android库项目,那么还需要在Project Structure中配置主项目对库项目的依赖,使用快捷键“cmd+;”或者选择菜单栏中的Project Structure可以打开项目设置界面,如图4.29所示。

本地库项目依赖 - 图4 图4.29 添加库项目依赖

选择app module,再选择Dependencies标签,点击“+”,选择Module dependency,选择创建的testLibrary1库项目作为自己的依赖库。点击OK后,等待项目Sync成功。

依赖创建完毕后,打开app module的build.gradle文件,找到dependencies领域。

  1. dependencies {
  2. compile fileTree(include: ['*.jar'], dir: 'libs')
  3. testCompile 'junit:junit:4.12'
  4. compile 'com.android.support:appcompat-v7:23.1.1'
  5. compile files('libs/okhttp-2.4.0.jar')
  6. compile project(':testlibrary1')
  7. }

可以发现,这里添加了一行新的配置“compile project(':testlibrary1')”,这个就是本地依赖库的依赖方式。如果你熟练的话,直接配置这行代码也可以实现同样的效果。

配置依赖库完毕后,在主项目中就可以完成对库项目的代码调用。

解析Gradle依赖库

Android库项目与主项目module在项目中的结构,如图4.30所示。

本地库项目依赖 - 图5 图4.30 库项目结构

可以发现app module和library testLibrary1处于同一级目录,在testLibrary1目录下同样有一个build.gradle文件来管理库的编译。打开testLibrary1的build.gradle文件,如下所示。

  1. apply plugin: 'com.android.library'
  2.  
  3. android {
  4. compileSdkVersion 23
  5. buildToolsVersion "23.0.2"
  6.  
  7. defaultConfig {
  8. minSdkVersion 14
  9. targetSdkVersion 23
  10. versionCode 1
  11. versionName "1.0"
  12. }
  13. buildTypes {
  14. release {
  15. minifyEnabled false
  16. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  17. }
  18. }
  19. }
  20. dependencies {
  21. compile fileTree(dir: 'libs', include: ['*.jar'])
  22. testCompile 'junit:junit:4.12'
  23. compile 'com.android.support:appcompat-v7:23.1.1'
  24. }

testLibrary1项目的build.gradle文件与主项目的build.gradle文件几乎一模一样,只不过在第一行有所不同,库项目是“apply plugin:'com.android.library'”,而主项目是“apply plugin:'com.android.application'”,从命名就可以看出它们的区别。Gradle正是通过这种插件式的配置方式来判断谁是主项目,谁是库项目。那么Gradle又是如何组织这些项目的呢?这就需要使用到项目根目录下的settings.gradle文件了,在引用库项目之前,它的内容如下所示。

  1. include ':app'

通过include方法来引用app module,而当配置了库项目之后,它的内容如下所示。

  1. include ':app', ':testlibrary1'

Gradle正是通过这种方式来实现多项目的管理的。到此为止,在文章最前面提到的5个Gradle相关的编译文件就全部介绍了,总结如下。

  • build.gradle:控制每个module的编译过程。
  • gradle.properties:设置Gradle脚本中的参数。
  • local.properties:Gradle的SDK相关环境变量配置。
  • settings.gradle:配置Gradle的多项目管理。