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
相关产品推荐
相关产品推荐

