Xamarin.Forms iOS生产归档时libSkiaSharp codesign失败如何排查?
错误根源分析
本次报错核心为两个关联问题:
- libSkiaSharp.framework自带预编译签名,Xamarin构建过程中尝试替换该签名时触发冲突
- 分发证书的信任链不完整,签名工具无法验证证书有效性,最终返回
errSecInternalComponent错误
排查解决步骤
- 处理SkiaSharp预签名冲突
确认当前使用的SkiaSharp NuGet包为2.88.x系列官方稳定版,避免使用预览版或第三方修改版。在iOS项目的.csproj文件中,找到<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">节点,添加以下配置强制签名工具覆盖现有framework签名:<CodesignExtraArgs>--deep --force</CodesignExtraArgs> - 修复证书信任链异常
打开Mac端的「钥匙串访问」,进入「系统」钥匙串的「证书」分类,确认Apple Root CA、Apple Worldwide Developer Relations Certification Authority两个根证书、中级证书都存在且状态为有效。如果证书显示红色无效标识,右键证书选择「显示简介」->「信任」->「使用此证书时」选择「始终信任」后保存修改。
同时检查你的分发证书,确认对应的私钥存储在「登录」钥匙串下,私钥的访问权限设置为「允许所有应用程序访问此项目」,避免签名时权限不足报错。 - 清空缓存重试
如果你使用Windows+Mac配对构建,先清空Mac端的Xamarin构建缓存,执行命令:
同时清空Windows端项目的rm -rf ~/Library/Caches/Xamarin/mtbs/builds/IVI.Central.Mobile.iOS/*obj、bin文件夹,再重新发起构建归档操作。 - 备选验证方案
若上述操作均无效,可手动测试签名是否正常:在Mac上进入构建输出的app目录,执行命令codesign -f -s "Apple Distribution: Industrial Ventilation, Inc (EQS49K4W53)" libSkiaSharp.framework,如果手动签名无报错,再尝试执行归档流程。同时可逐一移除近期新增的NuGet包排查是否存在其他带预签名的原生framework冲突。
内容的提问来源于stack exchange,提问作者Paul Aicher
相关产品推荐
相关产品推荐

