You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline中VSBuild@1任务因缺失API29的android.jar构建失败

解决Azure Pipeline中XA5207: 找不到API Level 29的android.jar错误

问题背景

正在将现有Xamarin应用迁移到.NET Maui,需部署新NuGet包。此前Azure Pipeline运行正常,2023年12月后VSBuild@1任务报错:Error XA5207: Could not find android.jar for API level 29。本地项目已安装API 29,但构建代理上提示该版本的android.jar缺失。

现有Pipeline脚本

variables:  
  NugetVersion: 6.4.0
  BuildConfiguration: Release
  RestoreSolution: src/App.Core.sln
  MONO_VERSION: 6_12_0
  XCODE_VERSION: 13.2.1
  MACOS_VERSION: macOS-11

jobs: 
- job: build_android
  displayName: Build Android Library
  pool:
    vmImage: windows-latest

  steps:
  - task: NuGetToolInstaller@0
    displayName: 'Use NuGet $(NugetVersion)'
    inputs:
      versionSpec: $(NugetVersion)

  - task: NuGetCommand@2
    displayName: 'NuGet restore'
    inputs:
      restoreSolution: $(RestoreSolution)

  - task: VSBuild@1
    displayName: 'Build Droid Project'
    inputs:
      solution: src/App.Droid/App.Droid.csproj      
      msbuildArgs: '/p:JavaSdkDirectory="$(JAVA_HOME_8_X64)"'
      platform: 'AnyCPU'
      configuration: $(BuildConfiguration)

错误输出

Project "D:\a\1\s\src\App.Droid\App.Droid.csproj" on node 1 (default targets).
_CreateStampDirectory:
  Creating directory "obj\Release\monoandroid10.0\stamp\".
_ResolveAndroidTooling:
  Found Java SDK version 1.8.0.
  Found Java SDK version 1.8.0.
_CheckInstantRunCondition:
  Dex Fast Deployment Enabled: False
_ResolveMonoAndroidSdks:
  MonoAndroid Tools: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Xamarin\Android\
  Android Platform API level: 29
  TargetFrameworkVersion: v10.0
  Android NDK: C:\Program Files (x86)\Android\android-sdk\ndk\25.2.9519653\
  Android SDK: C:\Program Files (x86)\Android\android-sdk\
  Android SDK Build Tools: C:\Program Files (x86)\Android\android-sdk\build-tools\32.0.0\
  Java SDK: C:\hostedtoolcache\windows\Java_Temurin-Hotspot_jdk\8.0.402-6\x64\
  Application Java class: android.app.Application
_CleanIntermediateIfNeeded:
  Creating "obj\Release\monoandroid10.0\stamp\_CleanIntermediateIfNeeded.stamp" because "AlwaysCreate" was specified.
  Touching "obj\Release\monoandroid10.0\stamp\_CleanIntermediateIfNeeded.stamp".
##[error]C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Xamarin\Android\Xamarin.Android.Tooling.targets(100,5): Error XA5207: Could not find android.jar for API level 29. This means the Android SDK platform for API level 29 is not installed. Either install it in the Android SDK Manager (Tools > Android > Android SDK Manager...), or change the Xamarin.Android project to target an API version that is installed. (C:\Program Files (x86)\Android\android-sdk\platforms\android-29\android.jar missing.)

解决方案

1. 安装指定Android SDK版本

在VSBuild任务前添加AndroidSDKInstaller@0任务,明确安装API Level 29的SDK平台:

- task: AndroidSDKInstaller@0
  displayName: 'Install Android SDK API 29'
  inputs:
    apiLevel: '29'
    includePreviewVersions: false

该任务会自动在构建代理上下载并安装对应API级别的SDK平台,确保android.jar存在于指定路径。

2. 指定Android SDK路径参数

修改VSBuild任务的msbuildArgs,添加AndroidSdkDirectory参数,指向代理上的SDK安装路径:

msbuildArgs: '/p:JavaSdkDirectory="$(JAVA_HOME_8_X64)" /p:AndroidSdkDirectory="$(ANDROID_SDK_ROOT)"'

$(ANDROID_SDK_ROOT)是Azure托管代理预定义的环境变量,指向Android SDK根目录。

3. 检查目标框架与API级别匹配

确认项目的TargetFramework为monoandroid10.0(对应API 29);若需要,可升级到更高API级别(如API 31+),同时更新项目文件中的TargetFrameworkVersion和AndroidTargetSdkVersion,并在Pipeline中安装对应版本的SDK。

4. 正确配置XamarinAndroid@1任务

若使用XamarinAndroid@1替代VSBuild,确保参数配置正确:

- task: XamarinAndroid@1
  displayName: 'Build Android Project'
  inputs:
    projectFile: 'src/App.Droid/App.Droid.csproj'
    configuration: '$(BuildConfiguration)'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.8'
    androidSdkDirectory: '$(ANDROID_SDK_ROOT)'

内容的提问来源于stack exchange,提问作者rog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 10:52:32