System.properties方式

首先,打开gradle.properties文件,添加以下配置。

  1. systemProp.keyAliasPassword=1234567
  2. systemProp.keyAlias=xys
  3. systemProp.keyStorePassword=1234567
  4. systemProp.keyStore=xys_key.jks

这些配置实际上就是之前写死的配置参数,只不过这里把它们配置到了systemProp中。那么在build.gradle脚本中进行引用的时候,就可以通过System.properties[KEY]获取这些参数,代码如下所示。

  1. signingConfigs {
  2. xys {
  3. storeFile file(System.properties['keyStore'])
  4. storePassword System.properties['keyStorePassword']
  5. keyAlias System.properties['keyAlias']
  6. keyPassword System.properties['keyAliasPassword']
  7. }
  8. }

Key\Value方式

除了使用System.properties方式获取自定义的配置参数之外,还可以使用Key\Value的方式来定义。在gradle.properties文件,添加以下配置。

  1. xys.keyAlias=xys
  2. xys.keyAliasPassword=1234567

然后在build.gradle中进行引用时,代码如下所示。

  1. signingConfigs {
  2. xys {
  3. storeFile file(System.properties['keyStore'])
  4. storePassword System.properties['keyStorePassword']
  5.  
  6. keyAlias project.property('xys.keyAlias')
  7. keyPassword project.property('xys.keyAliasPassword')
  8. }
  9. }

通过project.property(Key)方法,就可以取出对应的Value。这种方式与使用System.properties的方式基本一样,所以读者可以根据不同情况使用一种即可。

属性方式

前面两种方式,均可以在命令行中设置参数,从而设置给编译指令。如果不需要在命令行中设置参数,那么直接写属性名,同样可以进行引用,代码如下所示。

  1. pKeyAlias=xys
  2. pKeyAliasPassword=1234567

这样在build.gradle脚本中就可以直接引用了,代码如下所示。

  1. signingConfigs {
  2. xys {
  3. storeFile file(System.properties['keyStore'])
  4. storePassword System.properties['keyStorePassword']
  5. // keyAlias project.property('xys.keyAlias')
  6. // keyPassword project.property('xys.keyAliasPassword')
  7. keyAlias pKeyAlias
  8. keyPassword pKeyAliasPassword
  9. }
  10. }

这样设置的效果与前面两种的效果是一样的,区别在于是否支持命令行配置参数。

系统参数

Gradle内置了很多系统级别的参数,这些参数在使用中可以直接获取值。例如在build.gradle脚本中,增加一个Task,代码如下所示。

  1. task printProperties << {
  2. println project
  3. println project.name
  4. println project.buildDir
  5. println project.buildFile
  6. println project.version
  7. println name
  8. println buildDir
  9. println path
  10. }

打印出有一些Gradle内置的系统变量,显示结果如下所示。

  1. GradleTest git:(master) gradle printProperties
  2. :app:printProperties
  3. project ':app'
  4. app
  5. /Users/xuyisheng/Downloads/MyGithub/GradleTest/app/build
  6. /Users/xuyisheng/Downloads/MyGithub/GradleTest/app/build.gradle
  7. unspecified
  8. printProperties
  9. /Users/xuyisheng/Downloads/MyGithub/GradleTest/app/build
  10. :app:printProperties
  11.  
  12. BUILD SUCCESSFUL

从打印的结果,读者应该就可以看出这些参数的具体含义了,结果如下所示。

  • Project:Project标识。
  • project.name:Project名字。
  • project.buildDir:Project构建目录。
  • project.buildFile:Project构建文件。
  • project.version:Project版本信息。
  • name:Task的名字。
  • buildDir:Project构建文件存放目录。
  • path:Task的全限定路径名。

这些系统参数类似于代码中的全局变量,很多编译项目相关的参数、配置在这里都能找到。