如何重新签署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 
  1. 通过使用.zip更改其扩展名来解压.ipa文件
  2. 转到有效负载。 你会find.app文件
  3. 右键单击该.app文件,然后单击显示包内容
  4. 删除_CodeSigned文件夹
  5. 用新的configuration文件replaceembedded.mobileprovisin文件
  6. 进入KeyChain访问并确保与临时configuration文件关联的证书存在
  7. 执行下面的命令:/ usr / bin / codesign -f -s“iPhone Distribution:Certificate Name”–resource-rules“Payload / Application.app / ResourceRules.plist”“Payload / Application.app”

  8. 现在再次压缩Payload文件夹并使用.ipa改变.zip扩展名

希望这有帮助。

参考下面提到的链接: http : //www.modelmetrics.com/tomgersic/codesign-re-signing-an-ipa-between-apple-accounts/

试试这个应用程序http://www.ketzler.de/2011/01/resign-an-iphone-app-insert-new-bundle-id-and-send-to-xcode-organizer-for-upload/

它应该帮助你辞去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文件?

  • selectXcode-> Preferences-> Accounts-> View Details...并下载最新的configuration文件。
  • 然后selectWindow-> Organizerselect你的档案并重新导出。

检查下面的链接,你可以辞去你的应用程序名称,版本,捆绑ID,应用程序图标了。

https://www.youtube.com/watch?v=v0pPeFi3ZMU

我已经更新了我的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,您应该真正关心应用程序的权利(在某些情况下,它可能会很复杂…)。

问候,

罗曼