Module build.gradle
Android Studio自动创建的module默认生成了build.gradle文件。
- apply plugin: 'com.android.application'
- android {
- compileSdkVersion 23
- buildToolsVersion "23.0.2"
- defaultConfig {
- applicationId "com.xys.gradletest"
- 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'
- }
这里的信息就比项目全局的build.gradle文件复杂多了。但前面提到了,Gradle使用的是DSL语言,即领域特定语言。它是针对某个领域所设计出来的特定的语言,因为有了领域的限制,要解决的问题就被划定了范围。因此在理解的时候,只需要针对每个特定的领域进行分析即可。
apply plugin领域
apply plugin这块领域描述了Gradle所引入的插件。
- apply plugin: 'com.android.application'
表示该module是一个Android Application。这个插件里面包含了Android项目相关的所有工具。
android领域
android{……}这块领域描述了该Android module构建过程中所用到的所有参数。默认情况下,IDE自动创建了compileSdkVersion、buildToolsVersion两个参数,分别对应编译的SDK版本和Android build tools版本。而在android领域内,系统还默认创建了两个领域——defaultConfig和buildTypes,这两个领域后面会再进行具体解释。
dependencies领域
dependencies{……}这块领域描述了该Android module构建过程中所依赖的所有库,库可以是以jar的形式进行依赖,或者是使用Android推荐的aar形式进行依赖。aar相对于jar具有不可比拟的优势,不仅配置依赖更为简单,而且可以将图片的资源文件放入aar中供主项目依赖,几乎等于依赖了源码。Gradle对于依赖关系的处理,就是向调用者屏蔽所有的依赖关系,主项目只需要依赖该aar库项目,而不需要知道aar项目对于其他库的依赖,这正是Gradle的设计哲学之一。
如何进一步了解这些领域
初学者看见这么多的脚本语法,可能已经很头疼了。的确这么多的配置、语法,绝不是一朝一夕可以记住的。这时候文档的作用就体现出来了,借助Android Gradle DSL的文档(地址为http://google.github.io/android-gradle-dsl/current/index.html),开发者就可以随时查找文档,找到相关的信息,通过这些文档API来编写自己的功能。例如前面笔者提到的这些领域都可以在文档中找到其所有的参数,如图4.2所示。
图4.2 Gradle文档
再比如,要查看BuildType的相关API,如图4.3所示。
图4.3 Gradle API
这个才是开发者了解Gradle的最佳方式。不管是哪个领域、里面有哪些配置、有什么作用,全部可以找到,而且是官方的文档。
