Android Gradle 插件

Android Gradle插件继承于Java插件,具有Java插件的的特性;现在就新建1个 APP工程,演示App的工程目录,以及开发中常用的Gradle配置;


Android Gradle 插件_第1张图片
App工程目录

新建了1个APP工程,上图就是工程常用的App工程目录;

其中包括app Project,和rootProject;

每个Project都 包含1个build.gralde文件,其中rootProject还包含1个settings.gralde文件;

现在先来分析rootProject,App工程的根目录

build.gradle 配置文件:


Android Gradle 插件_第2张图片
rootProject的build.gradle文件

repositories 配置仓库,默认依赖的是google和jcenter,当我们配置依赖仓库的时候,Gradle就会去仓库里寻找我们的依赖;

dependencies:也是配置依赖,由于Gradle是属于第三方的插件,所以需要依赖于他们的classPath

allprojects 是针对于所有的工程项目配置,在根目录配置,子目录就不需要重复配置了


现在我们接着看根目录下的settings.gralde

接着创建1个Moudle,命名为Lib_test;

此时看settings.gralde文件


Android Gradle 插件_第3张图片
rootProject的settings.gradle

需要在工程内配置的Moudle都需要此文件中注册

此外工程中还有

local.properties:配置工程的sdk和ndk目录

Android Gradle 插件_第4张图片
local.properties

工程的gradle文件夹


gradle文件夹

该文件夹下有个wrapper,wrapper其实就是对Gradle的一层包装,我们在项目开发中,其实是有的都是Wrapper这种方式,内部是一堆的脚本,所以我们在工程中没有配置gradle的时候,提示的也不是noFound,而是提示下载并构建;

gradle-wrapper.properties内部是这样的

Android Gradle 插件_第5张图片

其中distributionUrl我们需要稍微关注下,决定了我妈妈依赖的是哪个版本的Gradle,上图可以看到我的工程依赖的就是4.6版本;

好了以上计算rootProject目录下的文件解释,现在接着看下我们主工程(app)下的文件



Android Gradle 插件_第6张图片
app下的build.gradle

Android Gradle的工程配置,都是在andorid{}中,这个是唯一的1个入口,通过在它内部的配置,我们可以对Android Gradle工程进行自定义的配置;

我们先解释下标准配置,之后在开始对gradle的自定义;

App插件id:com.android.application

Library的插件id:com.android.library

Test插件id:com.android.test

由于我们app的一个APP工程,所以使用apply plugin:'com.android.application' 依赖该插件

接着看android{}中的配置

compileSdkVersion:配置我们编译的Android 工程的SDK

defaultConfig:默认的配置,它是一个ProductFlavor,之后会解释ProductFlavor,现在只需要知道ProductFlavor允许我们根据不同的情况同时生成多个不同的apk包即可;

defaultConfig{

applicationId:包名,默认null,构建的时候是从AndroidManifest.xml文中读取的,也就是manifest中的pack值

minSdkVersion:最低支持的Android系统的ApI

targetSdkVersion:表明我们是基于哪个Andorid 系统开发的

versionCode:App应用内部的版本号

versionName:App应用的版本名称,对外,用户可见

testInstrumentationRunner:默认是android.support.test.runner.AndroidJUnitRunner,配置单元测试时候使用的Runner

}

buildType{}是1个域对象,就跟SourceSet一样,有release,debug等不同 的BuildType;

release{

minifyEnabled:是否启动混淆

proguardFiles:混淆文件

}

dependencies{...}依赖库


以上就是一个APP工程默认创建的文件解释;现在开始我们开始增加1些我们自定义的配置

1:配置测试App的包名,也就是测试包名


Android Gradle 插件_第7张图片
测试包名:

2:对生成的App签名

App工程的debug是有个默认的debug签名的,而release版本是没配置签名的,所以我们构建release版本的时候就需要自己签名了;

现在我们就生成2个签名文件,1个debug环境使用,1个在relese环境使用,保存在app目录下;


Android Gradle 插件_第8张图片

在build.gradle中配置签名,需要使用到signingConfig{}对生成的app签名


Android Gradle 插件_第9张图片
配置签名信息


以上就是配置了App的签名,我们只要在之后的构建应用类型中使用即可完成签名

3:构建不同的应用类型

Android Gradle内置了debug和release2种构建类型,这两种的主要差别就在于能否在设备上调试和签名不一样,其他文件和资源都是一致的

构建不同的应用类型主要是在buildTypes里面配置,那我们就接着看看这里面的可配置修改信息


Android Gradle 插件_第10张图片

上图是常见的支持的debug和release版本的buildTypes;

minifyEnabled :是否启动混淆

proguardFiles:混淆文件位置


我们构建下该情况下的apk,

Android Gradle 插件_第11张图片

可见,在还为配置签名的情况下,debug模式默认是签名的,而release版本是未签名的;现在配置上签名


Android Gradle 插件_第12张图片

配置上签名后,重新Build就多了1个app-release签完名的apk文件了


debuggable:配置该apk是否可供调试

jniDebuggable:配置该apk是否可供调试jni代码

multiDexEnabled:配置是否启用自动拆分多个dex的功能,解决65535

shrinkResources:配置是否自动清理未使用的资源,默认是false

zipAlignEnabled :这个是Android为我们提供的整理优化apk文件的工具


以上就是基础功能的BuildType,跟BuildType相关的还有多渠道打包,同样是构建不同的包;

参考Android Gradle的多渠道构建


4:自定义BuildConfig

5:源集合-SourceSet

未完待续

你可能感兴趣的:(Android Gradle 插件)