【问题标题】:iOS Enterprise: Re-certify existing IPA with new certificateiOS Enterprise:使用新证书重新认证现有 IPA
【发布时间】:2011-12-06 15:03:42
【问题描述】:
我们已加入 iOS 企业计划。用于我们发布的应用程序的配置文件即将到期,因此我获得了新的证书和配置文件。
我需要使用新的配置文件重新分发我们的一些应用程序,而不是重新构建它们。如何?
(我隐约记得看到一个实用程序正是这样做的:您选择一个 IPA 和一个配置文件,它会使用新的配置文件和证书创建一个新的 IPA。工具的名称是什么,我在哪里可以得到吗?)
【问题讨论】:
标签:
ios
distribution
provisioning
ios-provisioning
provisioning-profile
【解决方案2】:
好的,原来你知道what term to google,这里有很多优秀的资源……
它们都指向xcrun。我使它与这个 shell sn-p 一起工作,改编自 this promising build script:
APP_FILENAME=MyApp.app
BUILD_DIRECTORY=/Path/To/Target/Dir
IPA_FILENAME=MyApp.ipa
DISTRIBUTION_CERTIFICATE='iPhone Distribution'
PROVISIONING_PROFILE_PATH='/Path/To/Profile.mobileprovision'
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "$APP_FILENAME" -o "$BUILD_DIRECTORY/$IPA_FILENAME" --sign "$DISTRIBUTION_CERTIFICATE" --embed "$PROVISIONING_PROFILE_PATH"
【解决方案3】:
iOS SDK 工具中包含的 codesign 命令行实用程序将允许添加/更改用于签署开发人员构建的应用程序的证书和配置。
【解决方案4】:
正如 hotpaw2 的回答所说。您也可以使用协同设计工具辞职。
我这样做的方式(这可能不是最有效的,但很有效)
将 .ipa 重命名为 .zip 并解压
-
运行以下命令:
/usr/bin/codesign -f -s "iPhone Distribution: Company Name" "Payload/MyApp.app"
重新压缩 Payload 文件夹并重命名为 .ipa
注意:您也可以使用此方法编辑embedded.mobileprovisioning 文件!如果您使用的是 finder,请记住删除 .DS_Store (rm Payload/.DS_Store)。
【解决方案5】:
如果您只是按照以下步骤从同一帐户中退出应用程序,则可以手动方式。
所有这些都使用 shell 脚本,只要你知道如何使用 shell 命令,就超级简单。
- 将 IPA 重命名为 zip
- 将此文件解压缩到临时文件夹
- 从所有目标中删除旧的 _CodeSignature 文件夹(如果您有多个目标,例如 main、watch、watch extn、siri、widget、message 等)
- 将所有目标 prov-profiles 放在一个文件夹中,并将每个目标的所有 embedded.provisioningprofile 文件替换为新文件
- 删除存档的....xccent 文件,因为这是旧文件(可选)
- 为所有权利(如果有应用程序使用)创建的 entitlements.plist 代码签名。
- 在代码签名后将文件夹压缩回去,一切正常,没有错误
- 将 zip 重命名为 IPA
注意:要在上传到 Apple 之前验证 IPA,您可以使用内置 XCode App Loader 中的 altool 来检查新的 IPA。
参考:这里也解释了命令的步骤:
http://www.enterpriseios.com/forum/topic/Resigning_3rd_party_apps
如果您想摆脱手动签名,请使用 fastlane 工具,它非常简单且易于配置。https://fastlane.tools/