如何在iOS 5.1/iPhone 4上运行fat二进制文件

问题描述:

我正在开发一个应用程序jailbroken iOS设备。
我想指定的展位iPhone 3G(的iOS版本4.3.x)和iPhone 4/4S(iOS版5.x的)如何在iOS 5.1/iPhone 4上运行fat二进制文件

我成功生成脂肪的二进制文件和Xcode版本4.3.x

marsu:LatestBuild sst$ otool -h myproduct.armv6 
myproduct.armv6 (architecture armv7): 
Mach header 
    magic cputype cpusubtype caps filetype ncmds sizeofcmds  flags 
    0xfeedface  12   9 0x00   2 20  2664 0x00200085 
myproduct.armv6 (architecture armv6): 
Mach header 
    magic cputype cpusubtype caps filetype ncmds sizeofcmds  flags 
    0xfeedface  12   6 0x00   2 19  2648 0x00000085 

运行这在iPhone 3G是OK 在iPhone 4运行此,我收到

iPhone:~ root# ./myproduct.armv6 
Killed: 9 

当运行的ARMv7只有建立在iPhone 4确定。

我错过了什么?

部分解决:

问题是,LDID无法登录脂肪二进制文件。 详情请参阅Building for Jailbroken devices on iOS SDK 4.2

我发现应该签署脂肪的二进制文件 https://github.com/rpetrich/ldid 这LDID源代码,但它也不是为我工作(LDID挂在运行时)

的解决方法是使用脂工具一分为二的二进制可执行文件,将它们分开并重新组合为一个可执行文件。 (不为我工作,要么,但我的工作就可以了)

cd MyApp.app/; 
lipo MyApp -extract armv6 -output MyApp6; 
lipo MyApp -extract armv7 -output MyApp7; 
ldid -S MyApp6; ldid -S MyApp7; 
lipo -create MyApp6 MyApp7 -output MyApp 
+0

我要么Optimo或BigBoss的关于这个曾经谈过,他们也似乎认为您的一般方法可用于(拆配'脂','ldid -S'分开,然后重新组装)。但是,我很高兴只生产armv6,所以我从未验证过这一点。 – Nate 2012-05-23 02:26:58