如何在 Azure Pipelines 中自动递增 Xamarin Android 构建和版本号?

How do I autoincrement Xamarin Android build and version numbers in Azure Pipelines?

我看了 official documentation 没找到多少,

Xamarin.Android
Build an Android app with Xamarin
task: XamarinAndroid@1 inputs:
#projectFile: '**/*.csproj'
#target: # Optional
#outputDirectory: # Optional
#configuration: # Optional
#createAppPackage: true # Optional
#clean: false # Optional
#msbuildLocationOption: 'version' # Optional. Options: version, location
#msbuildVersionOption: '15.0' # Optional. Options: latest, 16.0, 15.0, 14.0, 12.0, 4.0
#msbuildFile: # Required when msbuildLocationOption == Location
#msbuildArchitectureOption: 'x86' # Optional. Options: x86, x64
#msbuildArguments: # Optional
#jdkOption: 'JDKVersion' # Options: jDKVersion, path
#jdkVersionOption: 'default' # Optional. Options: default, 1.11, 1.10, 1.9, 1.8, 1.7, 1.6
#jdkDirectory: # Required when jdkOption == Path
#jdkArchitectureOption: 'x64' # Optional. Options: x86, x64

感觉好像我遗漏了一些东西,因为 Google Play 商店需要增加版本和构建,并且每个人都需要在每个版本上完成。

如何在 Azure Pipelines 中自动递增 Xamarin Android 构建和版本号?

您必须在清单文件中进行设置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="string"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource" 
          android:versionCode="integer"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
    . . .
</manifest>

您可以按如下方式使用token replace extension

variables:
  major: 1
  number: $[counter(variables['major'], 100)]

steps:
- bash: echo $(minor)
- task: qetza.replacetokens.replacetokens-task.replacetokens@3
  displayName: 'Replace tokens'
  inputs:
    targetFiles: |
      **/AndroidManifest.xml 

像这样的文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="string"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource" 
          android:versionCode="#{number}#"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
    . . .
</manifest>