2013-03-15 69 views
14

当我们通过XCode将新版本的iOS应用程序部署到App Store中时,会生成一个存档。我可以在模拟器中运行旧的应用程序存档吗?

有没有办法取得旧的档案,并在模拟器中运行它?我想这样做是为了能够轻松测试服务器端代码与该应用程序的所有以前版本(或至少当时最常用的两个)的向后兼容性。

我知道我可以提交到GIT存储库并提取特定版本,但存在两个问题:a。它比简单地运行档案更复杂,b。它很容易出错,并停止在完成的机器上开发新版本,以及c。编译器更改或任何其他XCode更改会导致版本难以编译之间可能存在一些偏差。

我在StackOverflow上找不到任何帮助,在XCode的存档信息库中没有任何这种可能性的迹象。我应该提交一份功能请求@ Apple吗?

+0

不是100%确定你可以在模拟器中做到这一点,但为什么你不测试这些存档简单地进入你的设备。 – 2013-03-15 08:58:39

+0

@MrBonjour:因为存档的二进制文件是使用分发证书构建的,而分发证书不会在设备上运行? – zoul 2013-03-15 08:59:23

+0

@MrBonjour这样也行,这是怎么完成的? – Resh32 2013-03-15 09:00:40

回答

9

不,您不能为App Store生成的档案并在模拟器中运行它 - 即使您可以处理签名问题等,为App Store生成的档案包含为ARM编译的代码处理器,智能设备所具有的。为模拟器构建的代码是为x86处理器编译的,因此它可以在Mac上运行。

+1

+1。纯技术上说,你可能会构建一个包含x86和ARM代码的包,但App Store不会喜欢它,并且仍然有签名。 – zoul 2013-03-15 09:05:25

+0

+1如果我在向Apple发布两个档案时会工作吗?第二个存档将与其他方案相匹配,但只有签名会有所不同 - 那么我仍然可以使用@Lefteris建议的解决方案在iPod touch上运行(可以忘记模拟器)。 – Resh32 2013-03-15 13:01:56

5

一个合理简单的方法是通过Test Flight。我们经常通过测试飞行测试新版本,旧版本会留在那里,并且可以随时返回给他们。它与你最终提交给App Store的版本不同,但这是永远是真实的,因为App Store版本是使用分发证书签署的,除非通过商店安装,否则AFAIK不会在任何地方运行。

+0

+1我们已经以这种方式使用testflight,但测试和生产应用程序之间仍存在差异(例如testflight在生产版本中被禁用) - 但是我认为这仍然是最好的方法。 – Resh32 2013-03-15 12:58:52

2

您可以制作应用程序的OTA(无线)版本(然后您可以从服务器上下载这些二进制文件),或者简单地创建一个ipa文件并从iTunes安装。

为了做到这一点,您必须创建一个adhoc供应配置文件。检查Apple文档,因为它有点复杂,请解释

1

如果您的存档是为某个设备(AdHoc或Release)构建的,您可以制作一个ipa文件并将其安装在设备上(以下解释操作方法)。 如果它是为模拟器构建的(意思是i386 cpu架构),那么您不能为该设备创建ipa。

据我所知,你可以做一个IPA了一个Xcode 4存档使用命令行:

/usr/bin/xcrun -sdk iphoneos PackageApplication 
    "/absolute/path/to/MyApp.xcarchive/Products/Applications/MyApp.app" 
    -o "/absolute/path/to/MyApp.ipa" 

后你得到的IPA,你可以在物理设备上安装它,如果它一直创建正确的签名,否则you can re-sign it

相关问题