准备一个未签名的 Xcarchive

Posted

技术标签:

【中文标题】准备一个未签名的 Xcarchive【英文标题】:Preparing an unsigned Xcarchive 【发布时间】:2014-01-14 15:32:25 【问题描述】:

TLDR;问题: 有没有办法准备一个 XArchive,然后他们可以自己分配一个配置文件并使用适当的分发证书进行签名?

长问题: 我的客户向我发送了我正在为他们开发的应用程序的配置文件。他们不想向我发送他们的分发证书(.p12 文件)。

他们给我的指示如下:

    将配置文件加载到您的系统中 在您的项目中,选择目标下的配置文件 “配置文件”部分中的“构建设置” 不要选择代码签名身份 运行,产品->存档 在提供分发选项时选择“导出为 XCode 存档”

问题是,在执行第 4 步时,出现以下错误:

CodeSign error: code signing is required for product type 'Application' in SDK 'ios 7.0'

他们的想法是他们会在他们这边对应用程序进行代码签名(从而保护他们的证书)。有没有办法做到这一点?

【问题讨论】:

Erm..好吧是的..如果没有分发证书,您将无法对分发版本进行代码签名。如果您无权访问他们的 iTunes 开发帐户来生成您自己的帐户,他们必须提供一个。 【参考方案1】:

在终端中使用xcodebuild 命令对我有用。

xcodebuild -project MyApp.xcodeproj -scheme MyApp -configuration Release clean archive -archivePath “buildArchive/MyApp.xcarchive" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO

这在我的项目根目录的“buildArchive”子目录中创建了一个未签名的存档“MyApp.xcarchive”。

【讨论】:

使用该命令前,需要设置‘Code Signing Identity’ = ‘Don’t Code Sign’。 @Isutu Jayathissa - 对,我没提过。感谢您指出。不知道是什么促使有人对此投反对票:( 在 Xcode 10.2.1 上,您必须将 CODE_SIGNING_ALLOWED=NO 添加到脚本中 下一个问题:如何签署未签名的 xcarchive? Xcode 抱怨缺少配置文件,这是真的,但不清楚如何使用脚本添加。【参考方案2】:

能够使用以下技术做到这一点:

    通过 developer.apple.com 创建一个In House分发配置文件 选择要与此配置文件关联的任何 AppID(或通配符) 选择要包含在配置文件中的分发证书 在您的计算机上安装证书和配置文件,方法是下载它们并双击它们(或者如果使用 XCode 5,您可以通过“帐户首选项”窗格通过刷新来完成) 最重要的:在您的项目中创建一个“Entitlements.plist”文件,并将其分配给您的“支持文件”组,以便更好地衡量。向该文件添加一个键,然后从键名下拉列表中选择“get-task-allow”或“可以调试”(这取决于您的 plist 编辑器是否显示原始键值)。该值应为“否” 在项目构建设置的 代码签名 部分下,执行以下操作:
      Code Signing Entitlements 设置中键入从 .xcodeproj 文件所在位置到 Entitlements.plist 所在位置的相对路径。例如,如果您的 .xcodeproj 文件位于具有名为“MyApp”的子文件夹的文件夹中,并且您的 Entitlements.plist 文件存在于“MyApp”文件夹中,则应将值设置为:MyApp/Entitlements.plist 选择代码签名部分下的配置文件和证书

瞧,通过 Product->Archive 构建您的 Xcarchive 并将其提供给您的客户,他们将能够使用自己的个人资料和证书重新签名。

【讨论】:

这样我认为您不会创建未签名的存档。相反,您使用自己的内部分发证书对其进行签名。然后客户端使用他们自己的证书重新签署您的签名二进制文件。【参考方案3】:

你也可以帮助this Question,检查一下。

【讨论】:

以上是关于准备一个未签名的 Xcarchive的主要内容,如果未能解决你的问题,请参考以下文章

iOS App Store下载的付费软件 重新签名后 安装到未越狱的手机上

Xcode 4.2 Сode 签名错误

iOS 问题。未找到匹配的代码签名身份。有没有搞错? [关闭]

签名“未签名”apk文件命令

经验证的为第三方应用签名,成系统应用

对未签名的 Java 小程序可以做啥的限制?