Gradle 使用技巧(一)

前言

Gradle是使用Groovy语言构建,因此既然是语言,那么就有他的语法,而不是简单的配置项。关于Gradle有时间会出一系列的文章。android

1. 自定义apk输出名称 (3.0)

本配置为Android studio3.0及以上的配置,3.0如下版本适用,下面的配置会将全部的Variants都输出。微信

// 便利全部的Variants,all是迭代遍历操做符,至关于for
applicationVariants.all { variant ->// 遍历得出全部的variant
	variant.outputs.all {// 遍历全部的输出类型,通常是debug和replease
		// 定义apk的名字,拼接variant的版本号
		def apkName = "app_${variant.versionName}"
		// 判断是否为空
		if (!variant.flavorName.isEmpty()) {
			apkName += "_${variant.flavorName}"
		}
		// 赋值属性
		outputFileName = apkName + ".apk"
	}
}
复制代码

配置到buildTypes的release和debug下面app

Gradle配置输出APK名称.png

2. 配置签名

咱们在使用百度地图和微信相关的API的时候,是须要咱们填入相关的的app签名进行校验后才能进行操做,而默认咱们在调试模式下使用的是AS为咱们提供的android.keystore,所幸,Gradle为咱们提供了相关的方法,咱们能够为debug和release指定密钥文件和前面。咱们须要先在app.gradle的android节点作作相关的配置。gradle

2.1 配置签名信息

android{
	...
	signingConfigs {
		debug {
			try {
				storeFile file("../签名文件.jks")
				storePassword "密码"
				keyAlias "别名"
				keyPassword "密码"
				v1SigningEnabled true
				v2SigningEnabled false
			}
			catch (ex) {
				ex.printStackTrace()
				throw new InvalidUserDataException("秘钥用户名或密码错误${ex.getMessage()}")
			}
		}
		release {
			try {
				storeFile file("../签名文件.jks")
				storePassword "密码"
				keyAlias "别名"
				keyPassword "密码"
				v1SigningEnabled true
				v2SigningEnabled false
			}
			catch (ex) {
				throw new InvalidUserDataException("秘钥用户名或密码错误")
			}
		}
	}
	...
}
复制代码
  • signingConfigs 是处于android节点中
  • 这里须要注意的是storeFile的路径是指当前app.gradle的相对路径。
  • 关于v1SigningEnabled和v2SigningEnabled
    • APK Signature Scheme v2是Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未受权 APK 文件更改的保护。通常状况下都会选择关闭。

2.2 在相应的buildTypes中指定签名

buildTypes{
	release{
		signingConfig signingConfigs.release
		...
	}
	debug{
		signingConfig signingConfigs.debug
		...
	}
}
复制代码

虽然不指定这一步,咱们依然可以正常运行,可是为了出没必要要的幺蛾子,咱们仍是把它加上吧。ui

3. release和debug设置全局变量

3.1 全局debug开关

写程序就会要有log,有log咱们就须要在打release包的时候就须要手动的设置debug开关为false,可是在某些状况下咱们可能会忘记关闭的。因此能够选择在gradle中经过buildConfigField定义变量,而后再须要的时候直接进行引用。spa

buildTypes {
	release {
		...
		buildConfigField "boolean", "isDebug", "false"
		...
	}
	debug {
	...
		buildConfigField "boolean", "isDebug", "true"
	...
	}
}
复制代码

以上,咱们在两种模式中都建立了一个叫作isDebug的布尔值的变量,根据类型不一样设置值,而后须要从新编译一下。 编译完成后直接调用BuildConfig.isDebug做为开关设置便可debug

Debug开关.png

关于BuildConfig的内容,能够看下面的截图3d

BuildCofig信息.png

3.2 API地址的配置

既然有了全局debug开关的设置,那么就确定有这么一个需求:debug和release下使用不一样的API请求地址,其实也就是和前面一个套路,直接经过buildConfigField定义变量。调试

buildTypes {
	release {
		...
		buildConfigField "boolean", "isDebug", "false"
		buildConfigField "String", "API", "http://192.168.1.1/release"
		...
	}
	debug {
	...
		buildConfigField "boolean", "isDebug", "true"
		buildConfigField "String", "API", "\"http://192.168.1.1/debug\""
	...
	}
}
复制代码

String类型必定要记得加双引用转义。 String类型必定要记得加双引用转义。 String类型必定要记得加双引用转义。code

配置API地址.png

后续敬请期待! 免为其难的关注一下公众号吧!!

生活实在是太苦啦

FullScreenDeveloper
相关文章
相关标签/搜索