如何重新签署ipa文件?
在使用不同的configuration文件生成IPA之后,如何使用configuration文件签署.ipa文件? 我想用专门的configuration文件签署IPA进行betatesting,然后用app store的应用提交configuration文件重新签署具体的IPA。
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" -o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" --sign "${DEVELOPER_NAME}" --embed "${PROVISONING_PROFILE}"
从命令行执行起来非常简单。 我有一个脚本要做到这一点。 它现在已经被合并到我每天使用的https://github.com/RichardBronosky/ota-tools中的ipa_sign脚本中。; 如果您对使用这些工具有任何疑问,请不要犹豫。
其核心是:
IPA="/path/to/file.ipa" PROVISION="/path/to/file.mobileprovision" CERTIFICATE="Name of certificate: To sign with" # must be in keychain # unzip the ipa unzip -q "$IPA" # remove the signature rm -rf Payload/*.app/_CodeSignature # replace the provision cp "$PROVISION" Payload/*.app/embedded.mobileprovision # sign with the new certificate (--resource-rules has been deprecated OS X Yosemite (10.10), it can safely be removed) /usr/bin/codesign -f -s "$CERTIFICATE" --resource-rules Payload/*.app/ResourceRules.plist Payload/*.app # zip it back up zip -qr resigned.ipa Payload
您的新签名应用程序名为resigned.ipa
检查iResign是一个简单的工具,如何做到这一点!
在一些欺骗之后,我发现了一个能够识别钥匙串大小的解决scheme。 你可以在https://gist.github.com/Weptun/5406993查看;
旧的问题,但与最新的XCode codesign
很容易:
$ codesign -s my_certificate example.ipa $ codesign -vv example.ipa example.ipa: valid on disk example.ipa: satisfies its Designated Requirement
- 通过使用.zip更改其扩展名来解压.ipa文件
- 转到有效负载。 你会find.app文件
- 右键单击该.app文件,然后单击显示包内容
- 删除_CodeSigned文件夹
- 用新的configuration文件replaceembedded.mobileprovisin文件
- 进入KeyChain访问并确保与临时configuration文件关联的证书存在
-
执行下面的命令:/ usr / bin / codesign -f -s“iPhone Distribution:Certificate Name”–resource-rules“Payload / Application.app / ResourceRules.plist”“Payload / Application.app”
-
现在再次压缩Payload文件夹并使用.ipa改变.zip扩展名
希望这有帮助。
参考下面提到的链接: http : //www.modelmetrics.com/tomgersic/codesign-re-signing-an-ipa-between-apple-accounts/
它应该帮助你辞去IPA文件。 我自己尝试过,但无法通过Entitlements.plist传递错误。 可能只是我的项目的问题。 你应该试试看。
Fastlane的叹息为退出IPA提供了一个相当强大的解决scheme。
从他们的README:
辞职
如果您生成了您的
ipa
文件,但想要将不同的代码签名应用于ipa文件,则可以使用sigh resign
:
fastlane sigh resign
如果它们位于当前文件夹中,
sigh
会为您findipa文件和configuration文件。您可以使用命令行传递更多信息:
fastlane sigh resign ./path/app.ipa --signing_identity "iPhone Distribution: Felix Krause" -p "my.mobileprovision"
它甚至会处理嵌套应用程序的configuration文件 (例如,如果你有watchkit应用程序)
如何在Xcode中生成一个新的Ipa文件?
- select
Xcode-> Preferences-> Accounts-> View Details...
并下载最新的configuration文件。 - 然后select
Window-> Organizer
select你的档案并重新导出。
检查下面的链接,你可以辞去你的应用程序名称,版本,捆绑ID,应用程序图标了。
我已经更新了我的Sierra iMac的Bryan代码:
# this version was tested OK vith macOs Sierra 10.12.5 (16F73) on oct 0th, 2017 # original ipa file must be store in current working directory IPA="ipa-filename.ipa" PROVISION="path-to.mobileprovision" CERTIFICATE="hexadecimal-certificate-identifier" # must be in keychain # unzip the ipa unzip -q "$IPA" # remove the signature rm -rf Payload/*.app/_CodeSignature # replace the provision cp "$PROVISION" Payload/*.app/embedded.mobileprovision # generate entitlements for current app cd Payload/ codesign -d --entitlements - *.app > entitlements.plist cd .. mv Payload/entitlements.plist entitlements.plist # sign with the new certificate and entitlements /usr/bin/codesign -f -s "$CERTIFICATE" '--entitlements' 'entitlements.plist' Payload/*.app # zip it back up zip -qr resigned.ipa Payload
你应该试试这个新的OSX应用程序:AirSign 。
这将帮助您退出IPA并直接与您的Beta版testing人员进行空中分享。 如果您select手动重新签名,特别是如果您修改应用程序的Bundle ID,您应该真正关心应用程序的权利(在某些情况下,它可能会很复杂…)。
问候,
罗曼