一、先来看一下最外层build.gradle(Project:Test)的内容。
>repositories闭包中声明的jcenter()是一个代码托管仓库,声明这行配置,可以轻松引用任何jcenter上的开源项目。
>dependencies闭包通过classpath声明了一个Gradle插件,因为不仅仅Android项目,Java、C++等很多项目都可以使用Gradle工具来构建,所以想要指定Gradle构建Android项目,需要声明这个插件。
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.2' } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }二、现在来看一下里层的build.gradle(Module:app)文件。
>第一行应用了一个插件,有两种可选值,com.android.application或com.android.library。第一种说明这是一个应用程序模块,第二种说明这是一个库模块。
>android大闭包:里有配置项目构建的各种属性。
>compileSdkVersion:项目编译版本,25是使用Android7.1.1系统的sdk编译。
>buildToolsVersion:项目构建工具的版本。
>defaulConfig闭包:更为细节的配置。
>applicationId:指定项目的包名,想要更改项目包名的,在这里更改。
>minSdkVersion:项目最低兼容的Android系统版本,14表示最低兼容Android4.0
>targetSdkVersion:项目目标Android系统版本,25是Android7.1.1,Android7.1.1包括的特性都会被启用,比如6.0的运行时权限。
>versionCode:项目的版本号。
>versionName:项目的版本名。
>minifyEnabled:是否对项目进行代码混淆。
>proguardFiles:混淆时使用的规则文件,proguard-android.txt是Android SDK目录下通用混淆规则,proguard-rules.pro是当前项目根目录下的规则,可以自行编写。
>dependencies闭包:用于指定当前项目的所有依赖关系。Android项目通常有三种依赖方式:本地依赖、库依赖和远程依赖。
>本地依赖:对本地的Jar包或者目录添加依赖关系。
>库依赖:对项目中的库模块添加依赖关系。比如有个库叫helper,添加格式为:compile project(':helper')
>远程依赖:对jcenter库上的开源项目添加依赖关系。
>compile fileTree:本地依赖,将libs目录下的所有.jar后缀的文件都添加到项目的构建路径当中。
>compile:远程依赖,com.android.support是域名(与其他公司的库作区分),appcompat-v7是组名(与本公司的库作区分),25.1.0是版本号(与同一个库的不同版本作区分),Gradle构建项目时会先查询本地缓存是否存在这个库,没有联网下载,再添加到项目的构建路径当中。
>testCompile:声明测试用例库。
apply plugin: 'com.android.application' android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { applicationId "com.example.firsttest" minSdkVersion 14 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.1.0' testCompile 'junit:junit:4.12' }