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