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

.NET MAUI项目Azure流水线Sonar阶段dotnet build遇XA3007链接错误

解决.NET MAUI Azure流水线添加Sonar阶段后出现XA3007链接错误

问题现象

添加SonarQube扫描阶段后,执行dotnet build时触发以下错误:

##[error]/Users/runner/.dotnet/packs/Microsoft.Android.Sdk.Darwin/33.0.95/tools Error XA3007: Could not link native shared library: libxamarin-app.so

stderr | ld: error: cannot open obj//net7.0-android/android/typemaps.armeabi-v7a.o: No such file or directory
stderr | ld: error: cannot open obj//net7.0-android/android/environment.armeabi-v7a.o: No such file or directory
stderr | ld: error: cannot open obj//net7.0-android/android/compressed_assemblies.armeabi-v7a.o: No such file or directory
stderr | ld: error: cannot open obj//net7.0-android/android/jni_remap.armeabi-v7a.o: No such file or directory
##[error]/Users/runner/.dotnet/packs/Microsoft.Android.Sdk.Darwin/33.0.95/tools/Xamarin.Android.Common.targets(2010,3): Error XA3007: Could not link native shared library: libxamarin-app.so

可行解决方案

  • 调整Sonar与构建阶段顺序:确保SonarQubeBegin在dotnet restore之后、dotnet build之前执行,且扫描配置不要覆盖构建的输出路径参数,避免Sonar的临时文件逻辑干扰Android构建的中间文件路径。
  • 显式指定Android目标架构:在dotnet build命令中添加架构参数,强制生成指定架构的中间文件,避免自动检测导致的路径异常:
    dotnet build YourProject.csproj -c Release -p:AndroidSupportedAbis=arm64-v8a,armeabi-v7a -p:AndroidUseSharedRuntime=false
    
  • 清理构建缓存:在流水线中添加清理步骤,清除旧的obj/bin目录后再执行构建:
    dotnet clean -c Release
    dotnet restore
    dotnet build ...
    
  • 排除Sonar扫描的Android临时目录:在SonarQube扫描配置中添加排除规则,防止扫描时修改或删除构建所需的中间文件:
    sonar.exclusions=**/obj/**,**/android/**,**/*.so
    
  • 升级Android SDK包版本:将Microsoft.Android.Sdk.Darwin升级到同大版本的最新补丁版(如33.0.102),修复旧版本中的路径解析bug。
  • 显式指定构建输出目录:避免默认路径中的双斜杠问题,例如:
    dotnet build -c Release -o ./bin/Release/Android
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:52:36