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

.NET Maui集成Google AdMob广告iOS编译路径错误解决方案咨询

.NET Maui iOS端集成Google AdMob路径过长问题及解决方案

问题背景

在Windows 11上使用Visual Studio 2022 17.8.0开发基于.NET 7.0的.NET Maui项目,集成Google AdMob时采用Plugin.MauiMTAdmob 1.0.4插件,Android端运行正常,但iOS端因依赖的Xamarin.Firebase.iOS.Core内部路径过长,导致编辑器无法正常工作,编译时出现以下错误:

System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\g\AppData\Local\Temp\Xamarin\HotRestart\Signing\MauiAds.app\out\Payload\MauiAds.app\MauiAds.content\Firebase.Core.resources\FirebaseCoreDiagnostics.xcframework\ios-arm64_x86_64-simulator\FirebaseCoreDiagnostics.framework\Headers\FIRCoreDiagnostics.h'.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at System.IO.Compression.ZipFileExtensions.DoCreateEntryFromFile(ZipArchive destination, String sourceFileName, String entryName, Nullable`1 compressionLevel)
   at System.IO.Compression.ZipFile.DoCreateFromDirectory(String sourceDirectoryName, String destinationArchiveFileName, Nullable`1 compressionLevel, Boolean includeBaseDirectory, Encoding entryNameEncoding)
   at Xamarin.iOS.Windows.Installer.ApplicationSession.CreateIpa(String appName, String appPath, String targetPath) in D:\a\_work\1\s\src\Tools\Xamarin.iOS.Windows.Client\Installer\ApplicationSession.cs:line 238
   at Xamarin.iOS.Windows.Installer.ApplicationSession.Deploy(String appRootFolder, String appBundleId, String appName) in D:\a\_work\1\s\src\Tools\Xamarin.iOS.Windows.Client\Installer\ApplicationSession.cs:line 91
   at Xamarin.iOS.Windows.HotRestartClient.Deploy(AppleDevice nativeDevice, String appBundleId, String appBundleName, Boolean& incremental) in D:\a\_work\1\s\src\Tools\Xamarin.iOS.Windows.Client\HotRestartClient.cs:line 250

已尝试过相关开源问题中的解决方案,但均无效。

解决方案

方案一:解决Windows路径过长问题

  • 启用Windows长路径支持:
    1. 打开注册表编辑器,导航到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
    2. 修改LongPathsEnabled键值为1(无该键则新建DWORD值)
    3. 重启Visual Studio或电脑后重试编译
  • 缩短项目路径:
    将项目迁移到更短的目录下,比如从C:\Users\g\Documents\LongProjectName\MauiAds改为C:\Projects\MauiAds,减少整体路径长度
  • 修改临时目录路径:
    更改Xamarin HotRestart的临时目录到短路径:
    1. 右键项目属性 → iOS Build → 高级
    2. 在「临时目录」中设置短路径,例如C:\Temp\Xamarin

方案二:替换广告插件或提供商

若上述方法无效,可考虑更换集成方式或广告平台:

更换为官方Google.MobileAds包

  1. 卸载Plugin.MauiMTAdmob插件
  2. 安装NuGet包Google.MobileAds(选择适配.NET Maui的版本)
  3. 按官方文档配置双端设置:
    • iOS端:在Info.plist中添加AdMob应用ID,配置广告相关权限
    • Android端:在AndroidManifest.xml中配置应用ID和权限
  4. 重写广告初始化、展示代码,适配新包API

更换广告提供商

若不想继续使用Google AdMob,可选择其他支持.NET Maui的平台:

  • Unity Ads:提供跨平台广告解决方案,支持Maui集成
  • AdColony:有官方或社区维护的Maui适配包
  • AppLovin:支持Maui,涵盖多种广告格式

更换步骤:

  1. 卸载现有AdMob相关插件及依赖
  2. 安装目标提供商的NuGet包
  3. 按对应平台文档配置项目权限和应用ID
  4. 替换原有广告展示代码,适配新平台API

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:42:49