使用同一帐户的分发证书和配置文件重新签署开发 IPA 时是不是需要 entitlement.plist 文件?
Posted
技术标签:
【中文标题】使用同一帐户的分发证书和配置文件重新签署开发 IPA 时是不是需要 entitlement.plist 文件?【英文标题】:Is entitlement.plist file required while re-signing a development IPA with distribution certificate and profile of same account?使用同一帐户的分发证书和配置文件重新签署开发 IPA 时是否需要 entitlement.plist 文件? 【发布时间】:2020-01-17 05:12:04 【问题描述】:在我的组织中,分发证书和应用商店配置文件位于并安装在实验室环境中的 Mac 机器上,只有实验室经理可以访问。
为了将应用的 IPA 上传到应用商店,我需要在本地 Mac 上存档开发 IPA(在发布配置模式下使用开发证书和配置文件),然后通过此 IPA 发送给实验室经理。
实验室经理使用 python 重新签名脚本在实验室 Mac 上重新签署 IPA。
我是否还需要显式发送一个 entitlements.plist 文件以及 IPA。到目前为止,我的应用程序没有使用任何功能,甚至没有使用推送通知。 Xcode 中的所有功能都处于关闭状态,并且在开发者门户上,应用标识符在 Capabilities 下默认选中了 Game Center 和 In-House Purchase。
我假设因为实验室经理将使用同一个 Apple 帐户重新签署 IPA,并且实验室 Mac 上的应用商店配置文件包含其自己的权利,所以我不需要发送明确的 entitlements.plist文件。另外,我认为该应用不会在审核中被拒绝。
这些假设正确吗?提前致谢。
【问题讨论】:
【参考方案1】:您可以不在导出期间神奇地附加权利文件;它必须在存档期间存在。但是直到分发时,您才知道自己是否“正确”(在 Apple 眼中)。
因此,存档发生在一个地方而导出发生在另一个地方的情况不会是一件令人愉快的事情。
我认为这整个情况是不可接受的。我有过很多次,只是在我自己的机器上工作,在那里我能够存档,但由于权利问题而无法上传到应用商店或 TestFlight。而且通常没有“真正的”问题:我只需要做一堆山羊的牺牲和玩弄设置(例如打开和关闭权利)。关键是,在导出之前您不知道存在问题 - 然后要确定您是否修复了它,您必须再次构建/存档。
【讨论】:
【参考方案2】:1) 可以在树脂化 ipa 时提供权利 plist,如下所示,但这是可选的。
codesign --entitlements entitlements.xml -f -s "IDENTITY" Payload/<app_name>.app
请参考How do I resign app with entitlements?
2) 要退出 ipa,您可以按照以下程序(不授予权利)。
要求:
分发资料 发行证书 假设分发配置文件存储在桌面 ~/Desktop/AdHoc.mobileprovision 中程序:
1) 使用以下命令解压 ipa,
unzip app.ipa
2) 当你解压它时,你会得到一个名为“Payload”的目录作为输出。
3) 从解压后的“Payload”文件夹中删除 _CodeSignature 文件,如下所示
rm -rf Payload/MyApp.app/_CodeSignature/
4) 将存储在 Desktop 中的分发配置文件重命名为 embedded.mobileprovision
5) 将分发配置文件(来自桌面的embedded.mobileprovision)复制到Payload/.app
cp ~/Desktop/AdHoc.mobileprovision Payload/MyApp.app/embedded.mobileprovision
6) 使用以下命令退出,
codesign -f -s “IDENTITY” --resource-rules Payload/MyApp.app/ResourceRules.plist Payload/MyApp.app
7) 压缩有效载荷以形成 ipa,如下所示
zip -qr <app_name>.ipa Payload/
【讨论】:
以上是关于使用同一帐户的分发证书和配置文件重新签署开发 IPA 时是不是需要 entitlement.plist 文件?的主要内容,如果未能解决你的问题,请参考以下文章
将 iOS 应用程序提交到商店,但无需访问开发者计划帐户,而是提供配置文件和分发证书
我可以使用应用商店分发配置文件重新签署使用 ad-hoc 配置文件构建的 iOS 版本版本吗?