# Xamarin.Android # Build a Xamarin.Android project. # Add steps that test, sign, and distribute an app, save build artifacts, and more: # https://docs.microsoft.com/azure/devops/pipelines/languages/xamarin trigger: - master pool: vmImage: 'windows-latest' variables: buildConfiguration: 'Release' outputDirectory: '$(build.binariesDirectory)/$(buildConfiguration)' steps: - task: NuGetToolInstaller@1 displayName: 'Install NuGet Tool' - task: NuGetCommand@2 displayName: 'Restore Solution' inputs: restoreSolution: '**/*.sln' - task: ResharperCli@2 displayName: 'RESharper CLI Code Analyzer' inputs: solutionOrProjectPath: 'GUT.Schedule/GUT.Schedule.sln' failBuildLevelSelector: 'Error' failBuildOnCodeIssues: false - task: PowerShell@2 displayName: 'Update version number' inputs: targetType: 'inline' script: | (Get-Content AndroidManifest.xml -encoding UTF8 | Out-String) -replace '(?<=\bandroid:versionCode=")[^"]*', $(Build.BuildId) | set-content AndroidManifest.xml -encoding UTF8 (Get-Content AndroidManifest.xml -encoding UTF8 | Out-String) -replace '(?<=\bandroid:versionName=")[^"]*', $(Build.BuildNumber) | set-content AndroidManifest.xml -encoding UTF8 workingDirectory: '$(Build.SourcesDirectory)\GUT.Schedule\GUT.Schedule\Properties' - task: XamarinAndroid@1 displayName: 'Build Solution (AppBundle)' inputs: projectFile: '**/**.csproj' outputDirectory: '$(outputDirectory)' configuration: '$(buildConfiguration)' msbuildVersionOption: 'latest' msbuildArchitectureOption: 'x64' msbuildArguments: ' /t:PackageForAndroid -t:SignAndroidPackage -p:AndroidPackageFormat=aab /p:Configuration=Release' jdkOption: 'JDKVersion' - task: XamarinAndroid@1 displayName: 'Build Solution (APK)' inputs: projectFile: '**/**.csproj' outputDirectory: '$(outputDirectory)' configuration: 'Release (APK)' msbuildVersionOption: 'latest' msbuildArchitectureOption: 'x64' jdkOption: 'JDKVersion' - task: DeleteFiles@1 displayName: 'Delete debug files' inputs: SourceFolder: '$(outputDirectory)' Contents: | **/**.pdb **/**.dll - task: CopyFiles@2 displayName: 'Copy changelog to output' inputs: SourceFolder: '$(Build.SourcesDirectory)' Contents: 'changelog.md' TargetFolder: '$(outputDirectory)' - task: PowerShell@2 displayName: 'Update package name' inputs: targetType: 'inline' script: 'get-childitem *-Signed.* | foreach { rename-item $_ $_.Name.Replace("-Signed", "") }' workingDirectory: '$(outputDirectory)' - task: PublishBuildArtifacts@1 displayName: 'Drop Artifact' inputs: PathtoPublish: '$(outputDirectory)' ArtifactName: 'bundle' publishLocation: 'Container'