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

Windows端VS2022构建带扩展的Xamarin iOS应用签名失败

Xamarin iOS推送通知扩展签名无效问题解决方案(适配Xcode 16.4 + macOS Sequoia)

问题概述

使用Windows 11上最新版Visual Studio 2022,配对运行macOS Sequoia、Xcode 16.4的Mac构建带推送通知扩展的Xamarin iOS应用时,主应用签名正常,但扩展签名始终失败,上传App Store Connect时Transporter返回错误:

Validation failed
Invalid Signature. Invalid resource directory (directory or signature have been modified). The file at path "*****/PlugIns/***Ext.appex/****Ext" is not properly signed.

已尝试手动复制配置文件到旧路径Library/MobileDevice/Provisioning Profiles、更换Apple/iOS Distribution类型的配置文件和证书、先构建扩展再构建主应用、Mac终端手动重签等操作,均未解决;不含扩展的测试应用可正常上传,暂无法迁移至MAUI。

解决方案

1. 同步Xcode配置文件,放弃手动复制

Xcode 16.4在macOS Sequoia下已变更配置文件存储路径,VS2022现在支持直接从Xcode新路径同步配置,无需手动复制:

  • 在Mac上打开Xcode 16.4,进入偏好设置 > 账户,登录开发者账号后重新下载所有配置文件。
  • 在VS2022中打开iOS项目属性的iOS Bundle Signing标签,点击刷新配置文件,让VS自动从配对Mac同步最新的配置文件。

2. 调整扩展项目的构建与签名配置

  • 打开推送扩展项目的属性,切换到iOS Build标签,将Release配置的链接器行为设置为不链接,避免链接过程中修改扩展的资源目录导致签名校验失败。
  • 确认扩展项目的Bundle标识符与Apple开发者平台上对应配置文件的Bundle ID完全一致(包括大小写,Apple对Bundle ID区分大小写)。

3. 强制VS使用Xcode 16.4的签名工具

VS2022可能默认调用了旧版本的签名工具,需手动指定路径:

  • 在Mac终端执行命令获取当前Xcode的开发者路径:
xcode-select -p
  • 在VS2022中进入工具 > 选项 > Xamarin > iOS设置,将Xamarin iOS SDK位置设置为上述命令返回的路径(例如/Applications/Xcode.app/Contents/Developer)。

4. 清除Mac上的签名缓存

在Mac终端执行以下命令清除旧的签名缓存和配置文件,重新生成:

rm -rf ~/Library/Caches/com.apple.DeveloperTools
rm -rf ~/Library/MobileDevice/Provisioning Profiles/*

之后重新打开Xcode下载配置文件,再重新配对VS2022与Mac。

5. 用Xcode手动打包上传(终极方案)

如果上述方法都无效,绕开VS的打包流程,直接用Xcode处理:

  • 在VS2022中选择归档生成.xcarchive文件,将该文件复制到Mac上。
  • 在Mac上用Xcode打开.xcarchive文件,点击分发应用,选择App Store Connect,按照指引完成签名和上传,Xcode会自动适配扩展的签名规则。

额外检查项

  • 确认推送扩展的Entitlements.plist中包含aps-environment字段,Release配置下值为production,且与主应用的Entitlements配置一致。
  • 在Mac的钥匙串访问中检查Distribution证书,确保证书处于信任状态且未过期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:42:38