—— 既然庸庸碌碌也难逃一死,何不奋起一搏? ——荷马史诗
如果用过Eclipse写过Java项目的同学一定还记得,当一个项目需要依赖第三方库的时侯,我们需要先去下载.jar文件,然后再Build Path,或者直接打开Build Path设置,再Add Jar文件进去,这两种操作都绕不开的就是都需要把第三方依赖库.Jar文件”引入”到项目中,我们程序中才能Load到 .Jar文件中的 .Class类文件。
而在Android Studio中这一切都是通过Gradle去完成的。
Gradle是什么
Gradle是一个项目自动化构建工具。它可以帮你管理项目中的第三方包依赖关系,项目编译,项目打包,项目部署等,也通过编辑build.gradle来定义自己需要的构建逻辑。
我们回到上一篇文章中的第4小点Gradle Scripts文件夹。与gradle有关的有4个文件:
我们将项目结构切换成Project模式能更直观的看到这4个文件在项目中的路径:
我们先来看第①个文件工程目录下的build.gradle,这个文件的作用是对工程整体gradle的配置,比如配置gradle的版本为4.0.1、配置依赖库的仓库URL为mave 'https://maven.aliyun.com/repository/public/'仓库 、'https://maven.aliyun.com/repository/google'仓库、google仓库、jcenter仓库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:4.0.1' } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } |
接着看第②个文件工程目录下的gradle.properties
1
2
3
|
org.gradle.jvmargs=-Xmx1536m android.useAndroidX= true android.enableJetifier= true |
分别表示CPU分配1536m的内存给gradle的JVM、项目使用AndroidX依赖库而非Support依赖库、Android插件会通过重写其二进制文件来自动迁移现有的第三方库,以使用AndroidX依赖项
第③个文件gradle文件夹下的gradle-wrapper.properties
1
2
3
4
5
|
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\: //services.gradle.org/distributions/gradle-6.1.1-all.zip |
这个比较好理解了,就是设置gradle的版本为6.1.1-all
第④个文件app文件夹下的build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
apply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { applicationId "com.example.myapplication" minSdkVersion 16 targetSdkVersion 28 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt' ), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs' , include: [ '*.jar' ]) implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.recyclerview:recyclerview:1.1.0' } |
这个文件是我们平常开发中最经常会修改的gradle文件。下面采用注释的方式来一行一行的解释每行的意思:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
// com.android.application 表示这是一个应用程序模块,可直接运行 apply plugin: 'com.android.application' android { // 使用android sdk API28,也就是Android 9.0来编译你的项目 compileSdkVersion 28 defaultConfig { // 应用程序的包名 applicationId "com.example.myapplication" // 你的项目只能运行在API 16以上,也就是Android 4.1以上 minSdkVersion 16 // 目标版本API 28,即你的项目已在Android 9.0上做过充分测试,并且兼容Android 9.0以下版本 targetSdkVersion 28 // 项目版本号 versionCode 1 // 项目版本名 versionName "1.0" } buildTypes { release { // 项目打包为release版本时不开启代码混淆 minifyEnabled false // 代码混淆规则文件 proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt' ), 'proguard-rules.pro' } } } // 第三方依赖库及版本 dependencies { implementation fileTree(dir: 'libs' , include: [ '*.jar' ]) implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.recyclerview:recyclerview:1.1.0' } |
Gradle有什么用
从上面4个文件可以看出,我们可以自由配置Gradle版本号、Gradle仓库地址、Gradle Build版本号,可以配置项目打包的一些配置如applicationId项目包名、targetSdkVersion 版本号、是否开启代码混淆、混淆文件路径、第三方依赖库及版本等。
相比Eclipse来说Android Studio的Gradle构建工具真是香啊。