我在尝试通过 Azure 管道将 Android 应用程序发布到 Play 商店时遇到问题。下面是我的 yml 文件,我使用 Maui .NET8 谢谢。
注意:我有另一个管道也可以将其他应用程序登录到同一个 Play 商店
`-阶段:BuildAndroid 显示名称:构建 Android 职位:
工作:BuildAndroidJob 水池: vmImage:'windows-2022'
步骤:
任务:CmdLine@2 输入: 脚本:'dotnet工作负载安装maui'
任务:UseDotNet@2 displayName: '安装.NET sdk' 输入: 软件包类型:sdk 版本:8.0.x 安装路径:$(Agent.ToolsDirectory)/dotnet
任务:JavaToolInstaller@0 displayName:配置Java版本 输入: 版本规格:'11' jdk架构选项:'x64' jdkSourceOption:“预安装”
任务:android-manifest-version@1 显示名称:Android 版本构建 输入: 源路径:'路径/to/AndroidManifest.xml' 版本代码选项:'buildid' 版本代码:'$(Build.BuildId)' 版本名称:'$(buildVersionPrefix).$(Build.BuildId)' 版本代码偏移量:'10000' 打印文件:true
任务:NuGetToolInstaller@1 显示名称:安装nuget工具
任务:DotNetCoreCLI@2 输入: 命令:“构建” 项目:'**/*.sln' 参数:'-c Release -f net8.0-android'
任务:AndroidSigning@2 显示名称:'签名.aab' 输入: apkFiles: '**/*.aab' 罐标:正确 jarsignerKeystoreFile:'$(KeyStoreSecureFileName)' jarsignerKeystorePassword: '$(KeystorePassword)' jarsignerKeystoreAlias: '$(别名)' jarsignerKeyPassword: '$(别名密码)' jarsignerArguments: '-sigalg SHA256withRSA -digestalg SHA-256' zipalign:真
任务:复制文件@2 displayName:将 .apk 复制到暂存目录 输入: 内容:'**/*.apk' TargetFolder: '$(Build.ArtifactStagingDirectory)' 覆盖:true 展平文件夹:true
任务:复制文件@2 displayName:将 .aab 复制到暂存目录 输入: 内容:'**/*.aab' TargetFolder: '$(Build.ArtifactStagingDirectory)' 覆盖:true 展平文件夹:true
任务:PublishBuildArtifacts@1 显示名称:发布 .apk 和 .aab 输入: 发布路径:'$(Build.ArtifactStagingDirectory)' 工件名称:'drop' 发布位置:'容器'`
我已尝试删除登录任务,但仍然遇到问题。
不要使用 AndroidSigning@2 任务,而是使用
GooglePlayRelease@4
使用 GooglePlayConnectionService 并运行管道。
请参阅博客此处了解详细步骤。
从
此处在您的 Azure DevOps 帐户中安装
Official Google play extension
:-
安装扩展后,创建私钥并使用相同的私钥和 Google Play 开发者帐户在 Azure DevOps 中添加 Google Play Azure 服务连接。
我的 Azure DevOps yaml 管道:-
jobs:
- job:
displayName: 'Build and Publish to Google Play Store'
pool:
vmImage: 'windows-latest'
steps:
- task: CmdLine@2
inputs:
script: 'dotnet workload install maui'
- task: UseDotNet@2
displayName: 'Install .NET SDK'
inputs:
packageType: sdk
version: 8.0.x
installationPath: $(Agent.ToolsDirectory)/dotnet
- task: JavaToolInstaller@0
displayName: 'Configure Java version'
inputs:
versionSpec: '11'
jdkArchitectureOption: 'x64'
jdkSourceOption: 'PreInstalled'
- task: android-manifest-version@1
displayName: 'Version Android build'
inputs:
sourcePath: 'path/to/AndroidManifest.xml'
versionCodeOption: 'buildid'
versionCode: '$(Build.BuildId)'
versionName: '$(buildVersionPrefix).$(Build.BuildId)'
versionCodeOffset: '10000'
printFile: true
- task: NuGetToolInstaller@1
displayName: 'Install NuGet tool'
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.sln'
arguments: '-c Release -f net8.0-android'
- task: CopyFiles@2
displayName: 'Copy AAB to artifacts directory'
inputs:
SourceFolder: '$(System.DefaultWorkingDirectory)/YourMauiProject/bin/Release/net8.0-android/'
Contents: '*.aab'
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
- task: GooglePlayRelease@4
displayName: 'Publish to Google Play Store'
inputs:
serviceConnection: 'GooglePlayConnectionService'
applicationId: 'com.yourcompany.yourapp'
action: 'SingleBundle'
bundleFile: '$(Build.ArtifactStagingDirectory)/**/*.aab' # Adjust the path accordingly
track: 'internal'
管道也可以在没有 GooglePlayRelease@4 任务的情况下工作。
参考Github问题