android stdio中存在多个moudle时,对versionCode 1 versionName 2.5.3 compileSdkVersion 26 buildToolsVersion 26.0.1 minSdkVersion 14 targetSdkVersion 26
如果手动修改时,需要修改多个地方。为了解决这种麻烦,将以上信息写入配置文件。导入一个gradle脚本,即可实现一次修改,多moudle配置更新
。
具体步骤如下:
-
在项目更目录命名version.properties的文件,配置相关参数。
相关参数 -
在工程的build.gradle 中通过apply from : "../config.gradle"导入config.gradle 脚本,该脚本可以放入随意地方。我为了在所有项目中都可以使用,放在了一个本地的目录。这个脚本除了可以配置版本信息外,还能处理git添加过滤文件失效的问题。
脚本内容如下:
ext {
android = [
compileSdkVersion : 26,
buildToolsVersion : "26.0.1",
minSdkVersion : 14,
targetSdkVersion : 26,
]
dependencies = [
NineOldAndroids : 'com.nineoldandroids:library:2.4.0'
]
}
//解决添加.gitignore后没有反应
task removeGitCache () {
Runtime.getRuntime().exec('git status')
Runtime.getRuntime().exec('git rm -r --cached .')
Runtime.getRuntime().exec('git add .')
Runtime.getRuntime().exec('git commit -m \'update .gitignore\'')
logger.quiet "clear SUCCESS"
}
task baseInfo{
project.allprojects.indexed().each {key,value ->
}
println "project.rootProject = ${project.rootProject}"
}
ext.versionFile = file("${getProjectDir()}"+"/version.properties")
task load1Version(){
project.version = read1Version()
}
class ProjectVersion{
Integer versionCode
String versionName
Integer compileSdkVersion
String buildToolsVersion
Integer minSdkVersion
Integer targetSdkVersion
ProjectVersion(Integer versionCode,String versionName,Integer compileSdkVersion,String buildToolsVersion,Integer minSdkVersion,Integer targetSdkVersion){
this.versionCode = versionCode
this.versionName = versionName
this.compileSdkVersion = compileSdkVersion
this.buildToolsVersion = buildToolsVersion
this.minSdkVersion = minSdkVersion
this.targetSdkVersion = targetSdkVersion
}
}
ProjectVersion read1Version(){
logger.quiet 'Reading the version file'
if(!versionFile.exists()){
}
Properties properties = new Properties()
versionFile.withInputStream{ stream ->
properties.load(stream)
}
logger.quiet "code = ${properties.versionCode.toInteger()} name = ${properties.versionName}"
new ProjectVersion(properties.versionCode.toInteger(),//
properties.versionName,//
properties.compileSdkVersion.toInteger(),//
properties.buildToolsVersion,//
properties.minSdkVersion.toInteger(),//
properties.targetSdkVersion.toInteger())
}
task setConfig{
project.subprojects.each {
println "it.name = ${it.name}"
it.rootProject.android.compileSdkVersion = project.version.compileSdkVersion
it.rootProject.android.buildToolsVersion = project.version.buildToolsVersion
it.rootProject.android.minSdkVersion = project.version.minSdkVersion
it.rootProject.android.targetSdkVersion = project.version.targetSdkVersion
it.rootProject.android.versionCode = project.version.versionCode
it.rootProject.android.versionName = project.version.versionName
println "it.versionName = ${it.rootProject.android.versionName}"
println "it.versionCode = ${it.rootProject.android.versionCode}"
}
}
最后一步:修改每个模块中的配置调用
修改每个模块中的配置调用总结
当version.properties中的配置需要修改时,项目中所有模块的配置都会相同。
为什么不用扩展属性?我认为有些耦合,所以进行拆分。
为什么包含removeGitCache?我把自己常用的任务都配置在该脚本中,方便管理。
忘了件事情,下面是我学习的资料,内容比较浅。
http://www.web3.xin/code/2308.html
http://gradledoc.qiniudn.com/1.12/userguide/userguide.html
https://www.w3cschool.cn/gradle/
网友评论