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

Maui集成MTAdmob在iOS端编译报错:clang++退出码1

MAUI集成MTAdmob插件iOS编译错误排查

问题背景

刚完成Xamarin到MAUI的应用迁移,集成MTAdmob插件后Android端运行正常,但iOS端编译报错。已确认是插件/广告模块导致问题,删除相关包后编译恢复正常。错误指向UserMessagingPlatform包,使用的是插件示例项目中的版本,且删除该包也无法解决问题。开发环境为Windows版Visual Studio,配对Mac运行iOS模拟器。

错误信息

clang++ exited with code 1:ld: in /Users/MyUsername/Library/Caches/Xamarin/mtbs/builds/MyMauiApp/02b2e598cb2d297dae247439d1eb22d4a6d0f9fcdb24b3f87159ce66eb0c1c18/C:/Users/MyUsername /AppData/Local/XamarinBuildDownloadCache/GUsrMess-1.1.0/Frameworks/Release/UserMessagingPlatform.framework/UserMessagingPlatform(UMPView.o), building for iOS Simulator, but linking in object file built for iOS, file '/Users/MyUsername /Library/Caches/Xamarin/mtbs/builds/MyMauiApp/02b2e598cb2d297dae247439d1eb22d4a6d0f9fcdb24b3f87159ce66eb0c1c18/C:/Users/MyUsername/AppData/Local/XamarinBuildDownloadCache/GUsrMess-1.1.0/Frameworks/Release/UserMessagingPlatform.framework/UserMessagingPlatform' for architecture arm64clang: error: linker command failed with exit code 1 (use -v to see invocation)

已安装的NuGet包

<ItemGroup>
    <PackageReference Include="CommunityToolkit.Maui" Version="9.0.2" />
    <PackageReference Include="Microsoft.Maui.Controls" Version="8.0.70" />
    <PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="8.0.70" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" />
    <PackageReference Include="Plugin.MauiMTAdmob" Version="1.4.5" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0-ios'">
    <PackageReference Include="Xamarin.Google.iOS.MobileAds" Version="8.13.0.3" />
    <PackageReference Include="MT.Xamarin.Google.iOS.UserMessagingPlatform" Version="1.1.0.4" />
</ItemGroup>

问题分析

错误核心是架构不匹配:编译iOS模拟器版本时,链接的UserMessagingPlatform框架是针对真实iOS设备(arm64架构)编译的,而非模拟器兼容架构。Windows+Mac配对编译场景下,Xamarin的缓存机制可能拉取了错误的框架版本。

解决步骤

  1. 清理编译缓存

    • 在配对Mac上删除路径/Users/MyUsername/Library/Caches/Xamarin/mtbs/builds/MyMauiApp下的对应编译缓存文件夹
    • 在Windows上删除C:/Users/MyUsername/AppData/Local/XamarinBuildDownloadCache/GUsrMess-1.1.0缓存目录
    • 重启Visual Studio和Mac代理服务
  2. 调整依赖包版本

    • 升级MT.Xamarin.Google.iOS.UserMessagingPlatform至最新稳定版,旧版本可能存在模拟器/设备架构打包不完整的问题
    • 确认Plugin.MauiMTAdmob与Xamarin.Google.iOS.MobileAds版本兼容,优先使用插件官方文档推荐的配套版本
  3. 添加模拟器专属架构配置
    在项目的.csproj文件中,针对iOS Debug模式添加以下配置,强制使用模拟器兼容架构:

    <PropertyGroup Condition="'$(TargetFramework)' == 'net8.0-ios' and '$(Configuration)' == 'Debug'">
        <MtouchArch>x86_64</MtouchArch>
        <MtouchExtraArgs>--cxx --gcc_flags="-ObjC"</MtouchExtraArgs>
    </PropertyGroup>
    

    注意:发布版本需移除该配置,恢复默认的arm64架构设置

  4. 移除重复依赖引用
    删除手动添加的MT.Xamarin.Google.iOS.UserMessagingPlatform包,因为Plugin.MauiMTAdmob通常已内置该依赖,手动添加易引发版本冲突或重复引用问题


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 04:26:06