【问题标题】:Azure DevOps Android increase versioning during the buildAzure DevOps Android 在构建期间增加版本控制
【发布时间】:2019-04-02 12:30:08
【问题描述】:

作为构建管道应用中心部署的一个步骤,我应该如何在 android 项目中增加我的版本号? Azure DevOps 是否有版本管理器插件,或者我应该创建一个version.properties 文件并编辑、提交、推送到当前分支?

构建管道:

【问题讨论】:

    标签: android git azure-devops azure-pipelines


    【解决方案1】:

    遗憾的是没有开箱即用的支持,但你可以找到here 一个很好的教程:

    • 安装包含Version Assemblies 任务的Colin's ALM Corner Build & Release Tools

    • 在 Android 清单中,名称和代码应如下所示:

      android:versionCode="1" android:versionName="1.0.0"

    • 两次添加“版本程序集”任务,一次用于版本名称,一次用于版本代码。

    添加后,我们将更改名称。

    首先插入以下内容(带有示例):

    • 源路径:src/MobileApps/MyDriving/MyDriving.Android/Properties
    • 文件模式:AndroidManifest.xml
    • 构建正则表达式模式:(?:\d+.\d+.\d+.)(\d+)

    在高级下:

    • 构建正则表达式组索引:0
    • 正则表达式替换模式:versionName=“\d+.\d+.\d+
    • 替换前缀:versionName="

    这会将版本名称更新为“常规”下的内部版本号格式,我的设置为 1.0.0$(rev:.r)

    接下来是版本号:

    • 源路径:src/MobileApps/MyDriving/MyDriving.Android/Properties
    • 文件模式:AndroidManifest.xml
    • 构建正则表达式模式:(?:\d+.\d+.\d+.)(\d+)

    在高级下:

    • 构建正则表达式组索引:1
    • 正则表达式替换模式:versionCode=“\d+
    • 替换前缀:versionCode\

    就像这样,你很高兴。这只会用当前版本更新它:)

    【讨论】:

      【解决方案2】:

      有一个名为的现有任务 Mobile App Tasks for iOS and Android 在由 James Montemagno

      开发的市场中

      您可以在github中找到分步说明

      他开发此任务主要是为了解决 android/IOS 应用程序中的这种版本控制问题。

      【讨论】:

        【解决方案3】:

        对我来说最好的解决方案是创建一个 version.properties 文件来跟踪版本控制,然后在管道构建过程中修改它(shell 脚本)。其他的则不好,尤其是对于自定义版本控制。

        【讨论】:

        • 您能否添加 version.properties 文件以及您是如何使用 shell 脚本在管道中编辑它的?我面临同样的问题,不打算使用自定义市场任务
        【解决方案4】:

        这可以在不使用属性文件然后使用 shell 脚本替换它的情况下更干净地完成。

        在顶层 build.gradle 文件中,在构建脚本下:

        buildscript {
        
            def getVersionCode = { ->
                def code = project.hasProperty('versionCode') ? versionCode.toInteger() : -1
                println "VersionCode is set to $code"
                return code
            }
        
            
            def getVersionName = { ->
                def name = project.hasProperty('versionName') ? versionName : "1.0"
                println "VersionName is set to $name"
                return name
            } 
        
            ext{
                versionCode = getVersionCode()
                versionName = getVersionName()
            }
        }
        

        在您的模块特定的 gradle 文件中:

        defaultConfig {
                versionCode rootProject.ext.versionCode
                versionName rootProject.ext.versionName
        }
        

        在用于 gradle 构建任务的 Devops 管道中,只需传递如下选项:

        -PversionName=$(Build.BuildNumber) -PversionCode=$(Build.BuildId)
        

        【讨论】:

          猜你喜欢
          • 2019-05-30
          • 1970-01-01
          • 1970-01-01
          • 2020-03-30
          • 1970-01-01
          • 2021-10-03
          • 2021-04-02
          • 1970-01-01
          • 2019-09-15
          相关资源
          最近更新 更多