如何签署现有的 .ipa 或应用程序。带有配置文件

Posted

技术标签:

【中文标题】如何签署现有的 .ipa 或应用程序。带有配置文件【英文标题】:How to signig existing .ipa or app. with provisioning profile 【发布时间】:2016-12-29 16:03:52 【问题描述】:

我正在使用 C#、Xamarin 6.1.3.、ios 10.2、iPhone 6s Plus、Xcode 8.2、OS X El Capitan 10.11.6 编写移动自动测试。 我正在尝试使用以下命令在模拟器上启动测试:

IApp iApp = ConfigureApp.iOS.AppBundle(path_to_app/Application.app).StartApp();

我遇到以下错误:

Calabash.XDB.Core.Exceptions.DeviceAgentException : Failed to install app /Volumes/Win7 Ultim/Framework/Atom.app

ExitCode: 1



       app: /Volumes/Win7 Ultim/Framework/Atom.app/PlugIns/AtomTests.xctest
  identity: #<CodesignIdentity: - : AdHoc>
/usr/bin/xcrun codesign -d --entitlements :- /Volumes/Win7 Ultim/Framework/Atom.app/PlugIns/AtomTests.xctest
/usr/bin/xcrun codesign --verbose=4 --verify /Volumes/Win7 Ultim/Framework/Atom.app/Atom
/Volumes/Win7 Ultim/Framework/Atom.app
/Volumes/Win7 Ultim/Framework/Atom.app/PlugIns/AtomTests.xctest
device UDID: 9E44D0FE-A3F9-4FC1-8635-20FB8AD20BA4
Device UDID: 9E44D0FE-A3F9-4FC1-8635-20FB8AD20BA4
ERROR: Error Domain=sh.calaba.iOSDeviceManger Code=5 "Code signing failed" UserInfo=NSLocalizedDescription=Code signing failed, NSLocalizedFailureReason=There was a problem code signing. Please check the logs.
Path to bundle: /Volumes/Win7 Ultim/Framework/Atom.app
Could not extract entitlements from app:
with command:
    -a,--app-bundle <path/to/app-bundle.app>    Path .app bundle (for .ipas, unzip and look inside of 'Payload')
    -c,--codesign-identity  <codesign-identity> [OPTIONAL]  Identity used to codesign app bundle [device only]  DEFAULT=
    -d,--device-id  <device-identifier> iOS Simulator GUIDs
    -u,--update-app <true-or-false> [OPTIONAL]  When true, will reinstall the app if the device contains an older version than the bundle specified DEFAULT=1
install
/Volumes/Win7 Ultim/Framework/Atom.app/Atom: code object is not signed at all
/Volumes/Win7 Ultim/Framework/Atom.app/PlugIns/AtomTests.xctest: code object is not signed at all
=== STDERR ===
=== STDERR ===
Could not find any Provisioning Profiles suitable for resigning
Could not resign app bundle at path:
Error resigning sim bundle
In architecture: x86_64
with command:

所以我没有应用程序源代码,但我需要登录我拥有的 .app 或 .ipa 文件,才能在应用程序上运行测试。有可能吗?

【问题讨论】:

How to re-sign the ipa file?的可能重复 你最初得到什么文件,一个 .app 或一个 .ipa 文件?另外,您是从哪里获得文件的,是直接从原始开发者那里获得的,还是从应用商店获得的? 【参考方案1】:

@Kent.Green 对this answer 的解决方案也可以解决您的问题:

使用 Xamarin 测试记录器重新签署 IPA

您可以使用的一个选项是使用 Xamarin 测试记录器注入 Calabash 并重新签署您的 IPA:https://developer.xamarin.com/guides/testcloud/testrecorder/

将 IPA 加载到测试记录器后,它将在与原始 IPA 相同的位置创建一个新的、重新签名的 IPA,其名称前面带有“xtr-”,如下所示:

myAwesomeApp.ipa(原国际音标) xtr-myAwesomeApp.ipa(IPA,重新签名,注入葫芦)

注意事项

IPA 重新签名 - 进行重新签名的 mac 需要在其钥匙串中安装有效的签名身份和配置文件,包括应用程序使用的任何权利。

任何包含 Calabash 的 IPA 都将被 iOS 应用商店拒绝 - 无论使用何种方法将 Calabash 添加到 IPA 中都是如此,但记住这一点很重要。在上面的示例中,您将使用xtr-myAwesomeApp.ipa 进行测试并将myAwesomeApp.ipa 本身提交到应用商店。

【讨论】:

以上是关于如何签署现有的 .ipa 或应用程序。带有配置文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用现有的 .cer、.p12 或 .pfx 证书签署应用程序?

如何在没有 Apple 开发者帐户的情况下重新签署 IPA 文件

没有可用于签署 Xcode 5 的身份

使用同一帐户的分发证书和配置文件重新签署开发 IPA 时是不是需要 entitlement.plist 文件?

如何在没有 XCode 的情况下将具有应用内购买的现有 .ipa 文件上传到 ituneconnect

从 .ipa 文件中检索证书到期日期?