.NET 8 MAUI iOS模拟器构建警告:组件编译版本高于链接版本
部署.NET 8 MAUI项目到苹果模拟器时,因使用MauiMTAdmob组件,出现以下ld警告:
ld: warning: object file
(/Users/enrico/Library/Caches/Xamarin/mtbs/builds/LanguageInUse/1fa03704bb15e35c6f47a701d9d92131e3e0740198296a93338bb3c829bc9cf7/C:/Users/enric/AppData/Local/XamarinBuildDownloadCache/FAdM-8.13.0/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_x86_64-simulator/GoogleMobileAds.framework/GoogleMobileAds(GADGestureMock.o))
was built for newer iOS Simulator version (14.5) than being linked
(14.0) ld: warning: object file
(/Users/enrico/Library/Caches/Xamarin/mtbs/builds/LanguageInUse/1fa03704bb15e35c6f47a701d9d92131e3e0740198296a93338bb3c829bc9cf7/C:/Users/enric/AppData/Local/XamarinBuildDownloadCache/FAdM-8.13.0/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_x86_64-simulator/GoogleMobileAds.framework/GoogleMobileAds(GADGestureRecognizerMock.o))
was built for newer iOS Simulator version (14.5) than being linked
(14.0) ld: in
/Users/enrico/Library/Caches/Xamarin/mtbs/builds/LanguageInUse/1fa03704bb15e35c6f47a701d9d92131e3 LanguageInUse C:\Program
Files\dotnet\packs\Microsoft.iOS.Sdk\17.2.8004\targets\Xamarin.Shared.Sdk.targets 1559
即便已经在Info.plist和项目设置中把目标版本设为14,警告依然存在。可以尝试以下解决方法:
对齐模拟器部署目标版本
右键MAUI项目→属性→iOS→高级,将模拟器部署目标设置为14.5或更高版本(因为依赖的GoogleMobileAds框架是基于14.5编译的,必须和它的版本对齐);或者直接编辑项目的.csproj文件,在iOS目标框架节点下添加:<IOSSimulatorMinimumVersion>14.5</IOSSimulatorMinimumVersion>清理构建缓存
删除以下路径中与GoogleMobileAds相关的缓存文件夹:- macOS:
/Users/enrico/Library/Caches/Xamarin/mtbs/ - Windows:
C:/Users/enric/AppData/Local/XamarinBuildDownloadCache/
之后在Visual Studio中执行清理解决方案→删除bin和obj文件夹→重建解决方案。
- macOS:
更新MauiMTAdmob组件
旧版本的组件可能依赖的GoogleMobileAds版本存在兼容性问题,将MauiMTAdmob更新到最新版本,通常会自动适配更合适的iOS版本依赖。检查Microsoft.iOS.Sdk版本兼容性
当前使用的Microsoft.iOS.Sdk版本是17.2.8004,该版本的最低支持iOS版本可能高于14.0。确认SDK的最低支持版本,调整项目的目标iOS版本到SDK支持的范围,同时保证和GoogleMobileAds的版本匹配。
内容的提问来源于stack exchange,提问作者Enrico

