如何为 App Store 分发重新签署 iOS 应用程序?

Posted

技术标签:

【中文标题】如何为 App Store 分发重新签署 iOS 应用程序?【英文标题】:How to re-sign an iOS app for App Store distribution? 【发布时间】:2012-12-19 12:49:43 【问题描述】:

我正在尝试了解代码签名过程的工作原理。我的目标是获取一个使用 Company A's Enterprise 证书签名的 .ipa 文件,更改捆绑 ID,然后使用 Company B's App Store 再次签名strong> 分发证书并发布到 App Store。

首先,这可能吗?我读到here 说“...我很确定你不能(也不应该)使用这个工具来为拥有 App Store 分发证书的应用程序签名”。有人可以详细说明吗?

我尝试了许多脚本,例如 this 和 this 和 this,但经过一些调整后,当我尝试使用 Application Loader 发送应用程序进行审核时,它们似乎都有相同的问题。我遇到的错误是:

应用程序未能通过协同签名验证。签名无效, 包含不允许的权利,或未使用 iPhone 签名 分发证书。 无法从 /var/folders/67/(large_number)/new.ipa/Payload/original.app/original 中提取权利

有人可以帮我吗?请注意,我知道如何通过导出证书等来做到这一点——但在这里我正在探索 B 公司是否能够自己做到这一点,如果我给他们 A 公司的 .ipa 文件。如果需要,我可以更详细地解释我在做什么 - 只要问。

谢谢!

编辑:我已经知道this closed SO question,但是我发布了一个新的,因为我认为我的更具体,我并不是要求一种通用的方法来完成我想要的 - 我只想看看是否描述的场景是可能的。

【问题讨论】:

【参考方案1】:

要辞职一个新的应用程序,这应该是可能的,你需要在开发门户中创建所有新的分发配置文件(假设你已经到了这一步)。从您的应用程序到新配置文件的所有内容都需要匹配。应用程序 ID 可能是最重要的。当您创建一个新的时,必须在您的项目中进行设置以匹配。通常是 com.companyname.appname.optional。这个新的应用程序 ID 必须在您的构建设置中与 Bundle Identifier 配对。将它们匹配后,您应该能够将其与新的发行版/配置文件配对。

FWIW,更换这些配置文件必须是所有 ios 开发中最复杂的过程。这可能需要一些修补和反复试验,但我确信它可以完成。祝你好运。

【讨论】:

是的,我拥有测试所需的所有配置文件。当我退出应用程序时,我看到 Bundle ID 发生了变化,但是我认为权利出了点问题。你知道更多吗? 我很确定这些权利是项目特定的,与任何配置无关。您应该能够从“摘要”选项卡中配置权利,然后让 Xcode 为您解决问题。【参考方案2】:

我以前在这样做时遇到过麻烦。在 Xcode 中设置新的配置文件和重建似乎可行,但只是在编辑带有捆绑 ID 的 plist 后使用命令行重新签署现有应用程序,这让我很伤心。我怀疑它是在构建应用程序时放置在应用程序中的嵌入式配置文件,但老实说,我不确定。

我发现您在权利方面遇到了问题 - 请注意,其中一些是在开发配置文件中设置的(推送通知、IAP,也许还有 iCloud)并且必须在那里正确。

第二个提示是 Xcode 将开发配置文件缓存在项目中(某处),因此即使您从库文件夹内的移动配置文件文件夹中删除一个,您也必须在 Xcode 项目的目标设置中实际更改它或者它可能仍然使用旧的(grrr)。

【讨论】:

【参考方案3】:

我使用AirSign 应用程序节省了很多时间(当我发布我最初的问题时,该应用程序不可用)。

【讨论】:

以上是关于如何为 App Store 分发重新签署 iOS 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac App Store 和外部分发

什么是深层链接以及如何为 App Store 创建它?

我可以使用应用商店分发配置文件重新签署使用 ad-hoc 配置文件构建的 iOS 版本版本吗?

Mac 应用程序 |代码签名 |不通过 Mac App Store 分发 [关闭]

不通过App Store实现ios应用分发下载安装

为啥分发配置文件过期后,iOS App Store 应用程序仍会启动?