System.properties方式
首先,打开gradle.properties文件,添加以下配置。
- systemProp.keyAliasPassword=1234567
- systemProp.keyAlias=xys
- systemProp.keyStorePassword=1234567
- systemProp.keyStore=xys_key.jks
这些配置实际上就是之前写死的配置参数,只不过这里把它们配置到了systemProp中。那么在build.gradle脚本中进行引用的时候,就可以通过System.properties[KEY]获取这些参数,代码如下所示。
- signingConfigs {
- xys {
- storeFile file(System.properties['keyStore'])
- storePassword System.properties['keyStorePassword']
- keyAlias System.properties['keyAlias']
- keyPassword System.properties['keyAliasPassword']
- }
- }
Key\Value方式
除了使用System.properties方式获取自定义的配置参数之外,还可以使用Key\Value的方式来定义。在gradle.properties文件,添加以下配置。
- xys.keyAlias=xys
- xys.keyAliasPassword=1234567
然后在build.gradle中进行引用时,代码如下所示。
- signingConfigs {
- xys {
- storeFile file(System.properties['keyStore'])
- storePassword System.properties['keyStorePassword']
- keyAlias project.property('xys.keyAlias')
- keyPassword project.property('xys.keyAliasPassword')
- }
- }
通过project.property(Key)方法,就可以取出对应的Value。这种方式与使用System.properties的方式基本一样,所以读者可以根据不同情况使用一种即可。
属性方式
前面两种方式,均可以在命令行中设置参数,从而设置给编译指令。如果不需要在命令行中设置参数,那么直接写属性名,同样可以进行引用,代码如下所示。
- pKeyAlias=xys
- pKeyAliasPassword=1234567
这样在build.gradle脚本中就可以直接引用了,代码如下所示。
- signingConfigs {
- xys {
- storeFile file(System.properties['keyStore'])
- storePassword System.properties['keyStorePassword']
- // keyAlias project.property('xys.keyAlias')
- // keyPassword project.property('xys.keyAliasPassword')
- keyAlias pKeyAlias
- keyPassword pKeyAliasPassword
- }
- }
这样设置的效果与前面两种的效果是一样的,区别在于是否支持命令行配置参数。
系统参数
Gradle内置了很多系统级别的参数,这些参数在使用中可以直接获取值。例如在build.gradle脚本中,增加一个Task,代码如下所示。
- task printProperties << {
- println project
- println project.name
- println project.buildDir
- println project.buildFile
- println project.version
- println name
- println buildDir
- println path
- }
打印出有一些Gradle内置的系统变量,显示结果如下所示。
- ➜ GradleTest git:(master) ✗ gradle printProperties
- :app:printProperties
- project ':app'
- app
- /Users/xuyisheng/Downloads/MyGithub/GradleTest/app/build
- /Users/xuyisheng/Downloads/MyGithub/GradleTest/app/build.gradle
- unspecified
- printProperties
- /Users/xuyisheng/Downloads/MyGithub/GradleTest/app/build
- :app:printProperties
- BUILD SUCCESSFUL
从打印的结果,读者应该就可以看出这些参数的具体含义了,结果如下所示。
- Project:Project标识。
- project.name:Project名字。
- project.buildDir:Project构建目录。
- project.buildFile:Project构建文件。
- project.version:Project版本信息。
- name:Task的名字。
- buildDir:Project构建文件存放目录。
- path:Task的全限定路径名。
这些系统参数类似于代码中的全局变量,很多编译项目相关的参数、配置在这里都能找到。
