Grpc.Core.Xamarin编译报错:目标文件适配iOS Simulator 9.0,当前链接版本为8.0
问题根因
你遇到的报错是因为你使用的Grpc.Core.Xamarin 2.41.1版本内置的iOS原生静态库最低兼容iOS 9.0,但你的iOS项目当前配置的最低部署目标为iOS 8.0,两者版本不匹配导致链接失败。
注意:你csproj里看到的ProductVersion=8.0.30703是Xamarin.iOS工具的版本号,不是iOS系统的目标版本,无需修改这个字段
可行解决方案
方案1:升级项目最低iOS部署目标(优先推荐)
这是兼容性最好的解决方式,目前iOS 8的市场占比不足0.1%,升级到9.0不会影响绝大多数用户:
- 可视化操作(Visual Studio):
- 右键iOS项目选择「属性」
- 切换到「iOS应用」选项卡
- 找到「部署目标」下拉框,选择9.0或更高版本
- 保存设置后清理项目、重新生成即可
- 直接修改csproj文件:
在所有配置的PropertyGroup节点(包含Debug/Release、iPhone/iPhoneSimulator所有配置组)中添加以下字段:
保存后重新加载项目、重新生成即可<MinimumOSVersion>9.0</MinimumOSVersion>
方案2:强制指定链接参数(临时调试用)
如果暂时不想修改全局部署目标,可以给mtouch添加额外编译参数强制指定链接最低版本:
- 右键iOS项目选择「属性」→「iOS生成」
- 在「其他mtouch参数」输入框中添加以下内容:
--gcc_flags="-miphoneos-version-min=9.0" - 保存后重新生成项目即可
方案3:降级Grpc.Core.Xamarin版本(仅当必须兼容iOS8时使用)
如果你的应用必须支持iOS 8系统,可以将Grpc.Core和Grpc.Core.Xamarin包降级到2.34.0及更早版本,该版本区间的原生库兼容iOS 8系统,注意降级后需要验证gRPC相关功能是否适配旧版本库的接口。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

