如何使用 Azure Pipelines 自动增加 Android 应用程序的构建 ID 和版本号
How do I automatically increment the build id and version number of an Android App using Azure Pipelines
这是我的build.gradle
defaultConfig {
applicationId "com.xyz.abc.na"
minSdkVersion 16
targetSdkVersion 29
versionCode 36
versionName "5.0.2"
multiDexEnabled true
}
在我的 YML 中,我有
- task: android-manifest-version@1
displayName: 'Version Update'
inputs:
sourcePath: '$(manifestDirectory)'
versionCodeOption: 'buildid'
versionCode: '$(Build.BuildId)'
versionCodeOffset: '1'
printFile: true
- task: Gradle@2
displayName: 'Building Gradle'
inputs:
workingDirectory: ''
gradleWrapperFile: 'gradlew'
gradleOptions: '-Xmx3072m'
publishJUnitResults: false
testResultsFiles: '**/TEST-*.xml'
tasks: $(gradleTask)
codeCoverageToolOption: 'None'
javaHomeOption: 'JDKVersion'
jdkVersionOption: 'default'
jdkArchitectureOption: 'x64'
checkStyleRunAnalysis: false
findBugsRunAnalysis: false
除非我手动更改 build.gradle 中的 versionCode
和 versionName
,否则这些值永远不会自动更新。
如何获取最新值,递增 1 并更新 build.gradle,然后从新版本代码和版本名称生成构建?
以下是对我不起作用的现有参考资料。
Ref2
Ref3
您可以检查扩展程序 Mobile Versioning,它提供更新 Android 版本 Gradle:
的任务
- task: UpdateAndroidVersionGradle@1
inputs:
buildGradlePath: 'your_project/app/build.gradle'
versionName: '$(MAJOR).$(MINOR).$(PATCH)' # Optional. Default is: $(MAJOR).$(MINOR).$(PATCH)
versionCode: '$(NUMBER_OF_COMMITS)' # Optional. Default is: $(NUMBER_OF_COMMITS)
详细文档你可以查看下面link:
对于无法安装扩展的用户,这是我的 PowerShell 解决方案:
$BasePath = "$(Build.SourcesDirectory)\"
$BuildGradlePath = "${BasePath}[YourAppFolderStructure]\app\build.gradle"
$BuildGradleUpdatedPath = "${BasePath}[YourAppFolderStructure]\app\build.gradle.updated"
Get-Content $BuildGradlePath | ForEach-Object {
if($_ -match "versionCode \d"){
$versionCode = $_ -replace "versionCode", "" -as [int]
$newVersionCode = $versionCode + 1
Write-Host "Found versionCode ${versionCode}. Updated to ${newVersionCode}"
$_ = " versionCode " + $newVersionCode
}
elseif($_ -match "versionName"){
Write-Host "Updating versionName to $(Build.BuildNumber)"
$_ = " versionName '$(Build.BuildNumber)'"
}
$_
} | Set-Content $BuildGradleUpdatedPath;
Get-Content $BuildGradleUpdatedPath | Set-Content $BuildGradlePath
要在本地执行此操作,您可以按照以下步骤操作:
gradle.properties
添加这 2 个属性
appVersionCode=1
appVersionName="1.0"
build.gradle
应用
替换
versionCode 36
versionName "5.0.2"
和
versionCode appVersionCode.toInteger()
versionName appVersionName.toString()
- 在您的 YAML 文件中添加 Gradle
options
并通过变量 传递 $(MyAppBuildNumber)
和 $(MyAppVersionNumber)
- task: Gradle@2
inputs:
...
options: '-PappVersionCode=$(MyAppBuildNumber) -PappVersionName=$(MyAppVersionNumber)'
...
这是我的build.gradle
defaultConfig {
applicationId "com.xyz.abc.na"
minSdkVersion 16
targetSdkVersion 29
versionCode 36
versionName "5.0.2"
multiDexEnabled true
}
在我的 YML 中,我有
- task: android-manifest-version@1
displayName: 'Version Update'
inputs:
sourcePath: '$(manifestDirectory)'
versionCodeOption: 'buildid'
versionCode: '$(Build.BuildId)'
versionCodeOffset: '1'
printFile: true
- task: Gradle@2
displayName: 'Building Gradle'
inputs:
workingDirectory: ''
gradleWrapperFile: 'gradlew'
gradleOptions: '-Xmx3072m'
publishJUnitResults: false
testResultsFiles: '**/TEST-*.xml'
tasks: $(gradleTask)
codeCoverageToolOption: 'None'
javaHomeOption: 'JDKVersion'
jdkVersionOption: 'default'
jdkArchitectureOption: 'x64'
checkStyleRunAnalysis: false
findBugsRunAnalysis: false
除非我手动更改 build.gradle 中的 versionCode
和 versionName
,否则这些值永远不会自动更新。
如何获取最新值,递增 1 并更新 build.gradle,然后从新版本代码和版本名称生成构建?
以下是对我不起作用的现有参考资料。
Ref2
Ref3
您可以检查扩展程序 Mobile Versioning,它提供更新 Android 版本 Gradle:
的任务- task: UpdateAndroidVersionGradle@1
inputs:
buildGradlePath: 'your_project/app/build.gradle'
versionName: '$(MAJOR).$(MINOR).$(PATCH)' # Optional. Default is: $(MAJOR).$(MINOR).$(PATCH)
versionCode: '$(NUMBER_OF_COMMITS)' # Optional. Default is: $(NUMBER_OF_COMMITS)
详细文档你可以查看下面link:
对于无法安装扩展的用户,这是我的 PowerShell 解决方案:
$BasePath = "$(Build.SourcesDirectory)\"
$BuildGradlePath = "${BasePath}[YourAppFolderStructure]\app\build.gradle"
$BuildGradleUpdatedPath = "${BasePath}[YourAppFolderStructure]\app\build.gradle.updated"
Get-Content $BuildGradlePath | ForEach-Object {
if($_ -match "versionCode \d"){
$versionCode = $_ -replace "versionCode", "" -as [int]
$newVersionCode = $versionCode + 1
Write-Host "Found versionCode ${versionCode}. Updated to ${newVersionCode}"
$_ = " versionCode " + $newVersionCode
}
elseif($_ -match "versionName"){
Write-Host "Updating versionName to $(Build.BuildNumber)"
$_ = " versionName '$(Build.BuildNumber)'"
}
$_
} | Set-Content $BuildGradleUpdatedPath;
Get-Content $BuildGradleUpdatedPath | Set-Content $BuildGradlePath
要在本地执行此操作,您可以按照以下步骤操作:
gradle.properties
添加这 2 个属性
appVersionCode=1
appVersionName="1.0"
build.gradle
应用
替换
versionCode 36
versionName "5.0.2"
和
versionCode appVersionCode.toInteger()
versionName appVersionName.toString()
- 在您的 YAML 文件中添加 Gradle
options
并通过变量 传递
$(MyAppBuildNumber)
和 $(MyAppVersionNumber)
- task: Gradle@2
inputs:
...
options: '-PappVersionCode=$(MyAppBuildNumber) -PappVersionName=$(MyAppVersionNumber)'
...