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

如何修复Azure Pipelines中arm64架构未定义符号错误?

针对Azure Pipelines iOS构建arm64未定义符号问题的解决方案

以下是针对你遇到的MLKitMDD引用_nw_path_monitor_create等网络符号缺失问题的排查和解决步骤:

1. 对齐CI与本地的Xcode版本

_nw_path_monitor_create属于Network.framework,不同Xcode版本对系统框架的链接逻辑可能存在差异:

  • 在Pipeline中添加步骤打印当前Xcode版本:
    xcodebuild -version
    
  • 若版本与本地不一致,在Pipeline配置中指定匹配的Xcode版本,比如使用Xcode@5任务并通过xcodeVersion参数指定,或用xcode-select -s /Applications/Xcode_xx.x.app/Contents/Developer切换版本。

2. 手动添加Network.framework链接

CI环境可能自动依赖解析失效,强制在项目中引入Network.framework:

  • 在你的.csproj文件的<ItemGroup>节点中添加:
    <NativeReference Include="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Network.framework">
      <Kind>Framework</Kind>
      <IsCxx>False</IsCxx>
    </NativeReference>
    
  • 若使用Xcode原生项目,直接在项目的"Frameworks, Libraries, and Embedded Content"中添加Network.framework。

3. 清理CI构建缓存

缓存的旧产物可能导致依赖异常,在构建前添加清理步骤:

rm -rf $(Build.SourcesDirectory)/obj
rm -rf $(Build.SourcesDirectory)/bin
# 若使用CocoaPods,清理Pod缓存
pod cache clean --all

也可以在Pipeline设置中临时禁用构建缓存,触发一次全新构建验证。

4. 验证MLKitMDD依赖完整性

检查CI环境中下载的MLKitMDD库是否完整:

# 查看库支持的架构
lipo -info $(Build.SourcesDirectory)/path/to/MLKitMDD.framework/MLKitMDD
# 检查是否包含缺失的符号
nm -u $(Build.SourcesDirectory)/path/to/MLKitMDD.framework/MLKitMDD | grep _nw_path_monitor_create

若未找到目标符号,说明库文件损坏,清理NuGet或Pod缓存后重新还原依赖。

5. 对齐编译架构参数

确认Pipeline的编译架构配置与本地一致:

  • 若为Xamarin.iOS项目,确保构建任务的RuntimeIdentifier设为ios-arm64,或BuildArch指定为ARM64
  • 检查Debug/Release配置的架构设置,避免CI与本地的编译参数差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:34:51