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

.NET8 MAUI部署至真实iPhone时出现arm64架构符号未定义错误

解决.NET 8 MAUI部署真实iPhone时的clang++未定义符号问题

这些未定义的_OBJC_CLASS_$_UMP*符号属于Google User Messaging Platform(UMP)SDK,说明你的MAUI项目在iOS平台上未正确链接UMP相关框架/静态库,MT7091警告和此问题直接相关——该警告通常提示框架引用不完整或架构不匹配,正是导致符号未找到的诱因。

以下是针对性解决步骤:

  • 检查UMP SDK架构兼容性
    打开Mac终端,执行命令检查UMP框架的支持架构:

    lipo -info /path/to/your/project/Platforms/iOS/Frameworks/UMP.framework/UMP
    

    输出必须包含arm64,如果缺失,重新下载支持arm64架构的最新版UMP SDK(需适配iOS 15及以上,对应.NET 8 MAUI的最低iOS版本要求)。

  • 修正MAUI项目的框架引用配置
    在项目的.csproj文件中添加UMP框架的原生引用节点,确保路径与实际放置UMP.framework的位置一致:

    <ItemGroup Condition="'$(TargetFramework)' == 'net8.0-ios'">
      <NativeReference Include="Platforms/iOS/Frameworks/UMP.framework">
        <Kind>Framework</Kind>
        <IsCxx>False</IsCxx>
      </NativeReference>
    </ItemGroup>
    

    同时检查Platforms/iOS/Info.plist,确认已添加UMP所需的配置项(如GADApplicationIdentifier)。

  • 消除MT7091警告并强制链接框架
    在.csproj中添加额外的MTouch参数,强制链接UMP框架:

    <PropertyGroup Condition="'$(TargetFramework)' == 'net8.0-ios'">
      <MtouchExtraArgs>-framework UMP</MtouchExtraArgs>
    </PropertyGroup>
    

    另外,调整iOS项目的链接器行为:Debug模式设为Link Framework SDKs Only,Release模式设为Link All,避免因链接优化丢失UMP相关符号。

  • 彻底清理后重建项目

    1. 删除Windows端MAUI项目的bin、obj目录;
    2. 在Mac上打开对应iOS项目(可通过Visual Studio连接Mac后在Xcode中打开),执行Product > Clean Build Folder清理缓存;
    3. 重新连接Mac,选择真实iPhone设备,重新构建部署。
  • 验证UMP绑定正确性(若手动绑定)
    如果是自行绑定UMP SDK而非使用NuGet包,检查绑定项目的ApiDefinitions.cs和StructsAndEnums.cs,确保UMPConsentForm、UMPConsentInformation等类的定义完整无误。若使用NuGet包,确认包版本兼容.NET 8 MAUI且支持iOS arm64架构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:13:19