Gradle基础介绍一

前言:文章内容摘自Android群英传:神兵利器。这里做一些简要的使用笔记。

Gradle是基于Groovy脚本语言进行构建,并通过DSL(Domain Specific Language:领域特定语言)语言进行描述和控制构建逻辑。

新建工程的项目结构如下图:

Gradle基础介绍一_第1张图片
工程 结构图.png

Gradle在根目录中会有一个项目全局的build.gradle文件。在每一个模块下,同样会有针对该模块的build.gradle文件。

全局的build.gradle文件
Gradle基础介绍一_第2张图片
Paste_Image.png
模块的build.gradle文件
Gradle基础介绍一_第3张图片
Paste_Image.png
Gradle基础介绍一_第4张图片
Paste_Image.png

关于Gradle的一些基本配置

构建全局配置

全局参数

在全局的build.gradle文件中,通过 ext 领域可以制定全局的配置信息。然后再具体的Module中通过rootProject.ext就可以引用所有的全局参数。
如图:

  1. 全局的gradle.build中声明全局变量


    Gradle基础介绍一_第5张图片
    全局的gradle.build
  2. 在具体的Module中引用全局变量,方便管理


    Gradle基础介绍一_第6张图片
    Module的build.gradle
动态构建参数

脚本之所以为脚本就是可以在脚本中写代码,以便动态的控制编译过程,可以动态的去控制构建的参数
比如:

Gradle基础介绍一_第7张图片
Paste_Image.png
构建buildTypes

通过配置不同的buildTypes,从而可以生成不同的Apk,比如:

Gradle基础介绍一_第8张图片
Paste_Image.png
Gradle基础介绍一_第9张图片
Paste_Image.png

构建类型的参数以及不同类型下面的默认值:

Gradle基础介绍一_第10张图片
Paste_Image.png
构建signingConfigs
  • 首先申请签名,放在一个英文目录下,然后如图创建一个配置文件
Gradle基础介绍一_第11张图片
Paste_Image.png

按照图中格式声明key的存储路径,以及密码别名等信息。

  • 其次在local.properties中对配置文件的路径进行声明,然后再app的build.gradle中进行读取。
Gradle基础介绍一_第12张图片
Paste_Image.png
  • 配置signingConfigs
Gradle基础介绍一_第13张图片
Paste_Image.png
一些可选配置

lintOptions

Gradle基础介绍一_第14张图片
Paste_Image.png

compileOptions
指定java的编译版本。通常是为了使用新版本中的一些新特性。

Gradle基础介绍一_第15张图片
Paste_Image.png

自动生成我们需要的命名规则的apk文件
把一下代码块放入android领域中即可。

Gradle基础介绍一_第16张图片
Paste_Image.png
applicationVariants.all{variant->    variant.outputs.each {output->        if (output.outputFile!=null&&        output.outputFile.name.endsWith('.apk') &&        'release'.equals(variant.buildType.name)){            def apkFile=new File(output.outputFile.getParent(),"xxx_v${variant.versionName}_release.apk")            output.outputFile=apkFile        }    }}

为不同的版本添加不同的代码
为不同的版本添加不同的代码功能,比如Log文件的开关。在debug包中打开日志打印功能,在release包中关闭日志打印功能。

配置一个全局变量,给不同的版本设置不同的值。

Gradle基础介绍一_第17张图片
Paste_Image.png

双击shift查看BuildConfig文件:

Gradle基础介绍一_第18张图片
Paste_Image.png

可以看到我们自定义的属性已经在BuildConfig文件中就可以查看到了。
然后通过这个类就可以在代码中获取到不同的buildType所对应的值了。

Paste_Image.png

步骤:
通过制定buildConfigField的三个参数——类型,名称,值。可以将一个变量设置到不同的buildType中去。打开系统的BuildConfig类,可以看到不同的buildType下对应的BuildConfig中的值。

Gradle基础介绍一_第19张图片
Paste_Image.png

注意:
如果是String类型的字符串,如果要写入字符串的时候需要加入转义字符

Paste_Image.png

也可以继续使用变量

Paste_Image.png

资源文件同样可以进行分版本设置属性
下面演示为不同的版本设置不同的AppName

Gradle基础介绍一_第20张图片
Paste_Image.png

同时在defaultConfig领域中添加默认的配置:

Paste_Image.png

在AndroidManifest中还是跟以前一样引用

Gradle基础介绍一_第21张图片
Paste_Image.png

然后需要删除string.xml中原本的app_name的属性删掉。在编译的时候会将配置进行merge,存在两份相同的属性值就会发生冲突。

你可能感兴趣的:(Gradle基础介绍一)