美文网首页
AndroidStudio提取Git信息到APP版本信息中

AndroidStudio提取Git信息到APP版本信息中

作者: 珍惜注意力 | 来源:发表于2020-04-29 22:46 被阅读0次

    使用Git进行版本控制时,可以在Git仓库目录下用控制台命令 git rev-list --count HEAD,获取当前版本库的提交次数,可将此信息添加至APP的版本信息中。

    Microsoft Windows [版本 10.0.18363.535]
    (c) 2019 Microsoft Corporation。保留所有权利。
    
    D:\android_works\sanxing>git rev-list --count HEAD
    6   
    
    D:\android_works\sanxing>
    

    获取到Git的提交次数信息后,就可以封装到我们写的版本信息生成方法中

    /**
     *
     * @param type 版本信息类型 code or name
     * @param aa  大版本号
     * @param bb  中版本号
     * @param cc  小版本号
     * @return
     */
    def getVersionInfo(type,aa,bb,cc) {
        //git 号
        Process process = "git rev-list --count HEAD".execute()
        process.waitFor()
        int dddd = process.getText().toInteger()
    
        if ("code".equals(type)) {
            //生成versionCode
             return dddd
        } else if ("name".equals(type)) {
            //生成versionName
            return "$aa.$bb.$cc".concat("_").concat("$dddd").concat("_").concat(releaseTimeForName())
        }
    }
    
    

    完整代码如下:

    ext {
        //base config
        testMode = false
        applicationId = testMode ? "top.lixb.sanxing" : "top.lixb.sanxing" //app id
        applicationName = testMode ? "三省" : "三省" //app 名称
        geoMapKey = "" //高德key
        baiduMapKey ="" //百度key
    
        //android
        compileSdkVersion = 28
        buildToolsVersion = "28.0.3"
    
        //defaultConfig
        minSdkVersion = 17
        targetSdkVersion = 28
        versionNamePrefix = "sanxing"
        versionA = 0 //大版本号
        versionB = 1 //中版本号
        versionC = 0 //小版本号
        versionCode = getVersionInfo("code",versionA,versionB,versionC)
        versionName = versionNamePrefix.concat("_V").concat(getVersionInfo("name",versionA,versionB,versionC))
        println "versionCode:"+versionCode
        println "versionName:"+versionName
        //支持的架构类型
        abiFilters = '"armeabi-v7a"' //,"armeabi"'// , x86, arm64-v8a , x86_64'
    
        //v7 v4 依赖包版本
        supportLibrary = "27.1.1"
    
        //其他依赖库本部
    }
    
    /**
     *
     * @param type 版本信息类型 code or name
     * @param aa  大版本号
     * @param bb  中版本号
     * @param cc  小版本号
     * @return
     */
    def getVersionInfo(type,aa,bb,cc) {
        //git 号
        Process process = "git rev-list --count HEAD".execute()
        process.waitFor()
        int dddd = process.getText().toInteger()
    
        if ("code".equals(type)) {
            //生成versionCode
             return dddd
        } else if ("name".equals(type)) {
            //生成versionName
            return "$aa.$bb.$cc".concat("_").concat("$dddd").concat("_").concat(releaseTimeForName())
        }
    }
    
    /**
     * 获取时间信息
     * @return
     */
    def static releaseTimeForName() {
        return new Date().format("yyyyMMdd")
    }
    
    

    每次build的时候可以看到相应的版本信息:

    > Configure project :app
    versionCode:6
    versionName:sanxing_V0.1.0_6_20200429
    
    > Task :app:createMockableJar UP-TO-DATE
    > Task :libcommon:preBuild UP-TO-DATE
    > Task :libcommon:preDebugBuild UP-TO-DATE
    > Task :libcommon:compileDebugAidl NO-SOURCE
    > Task :libcommon:compileDebugRenderscript NO-SOURCE
    > Task :libcommon:checkDebugManifest UP-TO-DATE
    > Task :libcommon:generateDebugBuildConfig UP-TO-DATE
    > Task :libcommon:prepareLintJar UP-TO-DATE
    > Task :libcommon:prepareLintJarForPublish UP-TO-DATE
    > Task :libcommon:generateDebugSources UP-TO-DATE
    > Task :app:preBuild UP-TO-DATE
    > Task :app:preDebugAndroidTestBuild SKIPPED
    ......
    

    相关文章

      网友评论

          本文标题:AndroidStudio提取Git信息到APP版本信息中

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