Gradle/Android/Android Studio/android gradle plugin
在本文中AS代表Android Studio,gradle插件代表android gradle plugin。
Gradle是一个基于JVM的项目自动化构建开源工具,它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,面向Java应用为主。
什么是构建工具?
构建工具是一个把源代码(java)生成可执行应用程序(apk)的过程自动化的程序。构建包括编译、连接跟把代码打包成可用的或可执行的形式。
为什么要使用构建工具或构建自动化
将源代码生成应用程序的大致过程如下:
此过程手动操作相当繁琐,而且在编写源码的过程中,经常会需要将源代码生成可执行文件并安装在系统中,进行调试,在小型项目中,可以手动调用构建过程,但是在大型的项目中很不实用,在构建过程中难以跟踪什么需要被构建、按照什么顺序构建以及项目中存在哪些依赖。使用自动化工具会使构建过程更为连续,而且可以让开发人员更专注于项目的开发。
上面我们了解了Gradle是将源代码生成可执行文件的工具,但是Gradle具体功能分为哪些呢?这些功能在此过程中起的作用?
Gradle的具体功能分为以下几种:
在项目开发中,经常会依赖第三方库,使用第三方库的步骤是先下载jar文件,然后将jar文件加入到项目的lib中,然后项目才可以使用,但是一旦jar文件更新,就需要重新下载新的jar包,重新替换,项目依赖的jar包多的时候,此工作量也很麻烦,可以说这种方式只有依赖,没有管理。
Gradle 引用第三方库方式是这样的:
compile ‘com.android.support:support-v4:24.0.1’
类似这样的依赖方式,是不是很方便?而且很直观,直接可以看到源地址,升级的话直接改下版本号就可以了,这就是所谓的依赖管理,此依赖管理只限于google开发的jar包。
将java源代码或资源编译为.class文件的过程。
将.class文件打包为一个apk文件的过程。
android系统及应用商店特性,在android系统中运行apk或在android应用商店发布apk,需要对apk进行签名。
用户使用apk的过程,包含类的加载,类的执行等,即将apk在目标系统运行的过程。
gradle是由Gradle公司开发的,android studio是由google开发的集成开发工具,主要用于android项目的开发和调试,支持gradle构建工具,gradle公司专门开发了android gradle plugin用于android studio来支持android项目的构建。
在安装android studio时会安装当前AS版本支持的最新的gradle和android gradle plugin的版本,默认路径分别为:
gradle默认路径:C:\Users\用户.gradle\wrapper\dists
android gradle plugin默认路径:C:\Users\Administrator.gradle\caches\modules-2\files-2.1\com.android.tools.build\gradle
gradle其余版本可以手动去官网下载,然后解压至默认路径即可,android gradle plugin在项目使用时会自动下载,不需要手动下载,但注意电脑需要联网才可以自动下载。
需要注意的是:gradle是gradle公司开发,有版本号规则,android gradle plugin的版本号是由google定义的,有另外的定义规则,gradle和android gradle plugin版本不是对应的,因此在使用的时候注意版本的对应,另外android gradle plugin版本对应的gradle版本有限制,例如:android gradle plugin 3.5.0+只能对应gradle的5.4.1~5.6.4版本。
AS通过gradle构建工具构建android项目,gradle是依据什么来构建android项目的?
在每个android项目中都有相应的gradle配置文件,gradle通过读取这些配置文件,对android项目进行构建,每个项目中包含的gradle文件分别有以下几种:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
此文件内配置了项目使用的android gradle plugin的插件版本。
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
}
此文件是全局的项目配置文件,里面主要声明一些需要加入 gradle 的 module。
include ':app'
rootProject.name='MVPDemo' //此为项目名称
这两个文件同项目文件夹下的gradle包装中的jar文件,都是在新建项目时复制过来的文件,其目录为D:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle\wrapper,gradlew是在linux和mac下使用的,gradlew.bat是在window下使用的,提供在命令行下执行gradle命令的功能。
此文件夹为项目编译运行过程中的临时文件,可删除,注意:生成的apk文件在此文件夹中。
此文件配置了项目的编译sdk,目标sdk,最低支持的sdk版本以及项目依赖库,下面的代码展示的为app下的配置文件。
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.mvpdemo"
minSdkVersion 19
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
//dependencies 内容为项目依赖库
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
gradle支持android项目,AS或其他IDE不是必须的,可以不借助IDE来构建项目,需要手动编写gradle配置文件,使用命令行调用gradle命令进行构建,下面简单介绍几个常用的gradle命令,此命令针对windows系统,使用以下命令时需要将目录切换到项目文件夹下方可使用,因为以下命令是针对项目的。
gradlew -v
使用gradle wrapper命令查询项目使用的gradle版本号。
gradlew build
检查依赖并编译打包,此命令把debug和release环境下的包都打包出来,如果正式发布只需要release包,可以参照下条命令。
gradlew assembleRelease
编译并打包release包。
gradlew assembleDebug
编译并打包debug包。
参考链接:
https://zhuanlan.zhihu.com/p/21473540