MAUI iOS应用上传报com.microsoft.libSkiaSharp签名错误90034
问题根因
这个报错既不是本地苹果提交证书配置错误,也不是libSkiaSharp类库本身不支持iOS,属于.NET 6版本MAUI iOS发布流程的已知缺陷:构建生成IPA时,流程没有对嵌入的libSkiaSharp.framework动态框架执行符合提交要求的重签名操作,苹果App Store上传校验时会检测所有内嵌框架的签名有效性,发现签名不匹配就会抛出90034错误。
修复方案
按操作成本从低到高排序,可任选一种方案处理:
方案1:升级SkiaSharp版本(优先推荐)
- 移除项目中旧版本的SkiaSharp相关NuGet包,升级到2.88.3及以上稳定版本,该版本已完成iOS框架签名逻辑适配
- 清空本地NuGet缓存,删除项目下的bin、obj目录后重新执行发布命令,无需额外配置即可自动完成所有内嵌框架的签名
方案2:追加发布参数强制签名(不适合升级版本时使用)
在原有dotnet publish命令中追加两个参数,强制构建流程对所有内嵌第三方框架执行签名:/p:CodesignAllFrameworks=true /p:CodesignEntitlements=<项目Entitlements.plist文件的本地绝对路径>
修正后的完整发布命令参考(注意修正原命令中ServerUser参数缺失闭合的笔误):
dotnet publish -f:net6.0-ios -c:Release /p:ServerAddress=192.168.xx.xxx /p:ServerUser=<name> /p:TcpPort=58181 /p:ArchiveOnBuild=true /p:_DotNetRootRemoteDirectory=/Users/<name>/Library/Caches/Xamarin/XMA/SDKs/dotnet/ /p:CodesignAllFrameworks=true /p:CodesignEntitlements=/Users/<name>/Projects/YourMauiApp/Platforms/iOS/Entitlements.plist
方案3:生成IPA后手动重签名(应急场景使用)
如果前两种方案执行后仍存在签名问题,可以在Mac端对生成的IPA手动补签名:
- 将生成的IPA文件后缀修改为.zip,解压后找到Payload目录下的.app包
- 进入.app/Frameworks目录,执行签名命令:
codesign -f -s "Apple Distribution: 你的证书全称" libSkiaSharp.framework
- 确认所有内嵌framework签名完成后,重新将Payload目录压缩为.zip,修改后缀为.ipa即可正常上传
预校验方法
上传前可以先在Mac端执行签名校验命令,提前排查问题避免反复提交被打回:
codesign -v -R="anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists and certificate leaf[field.1.2.840.113635.100.6.1.13] exists" /path/to/your/Payload/YourApp.app/Frameworks/libSkiaSharp.framework
命令执行后无任何输出即代表签名符合App Store提交要求。
内容的提问来源于stack exchange,提问作者mcy
相关产品推荐
相关产品推荐

