美文网首页
android项目使用gradle实现管理版本

android项目使用gradle实现管理版本

作者: 杨hai | 来源:发表于2017-10-22 17:16 被阅读179次

    android stdio中存在多个moudle时,对versionCode 1 versionName 2.5.3 compileSdkVersion 26 buildToolsVersion 26.0.1 minSdkVersion 14 targetSdkVersion 26如果手动修改时,需要修改多个地方。为了解决这种麻烦,将以上信息写入配置文件。导入一个gradle脚本,即可实现一次修改,多moudle配置更新
    具体步骤如下:

    1. 在项目更目录命名version.properties的文件,配置相关参数。


      相关参数
    2. 在工程的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/

    相关文章

      网友评论

          本文标题:android项目使用gradle实现管理版本

          本文链接:https://www.haomeiwen.com/subject/clfnuxtx.html