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

时间:2012-03-26 08:15:55

标签: objective-c ios jailbreak armv7 armv6

我正在为越狱 iOS设备开发一个应用程序 我想定位iPhone 3G(iOS 4.3.x)和iPhone 4 / 4S(iOS 5.x)

展位

我使用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上运行它是可以的 在iPhone 4上运行,我收到了

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

虽然只在iPhone 4上运行armv7但是没问题。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

部分解决:

问题是ldid无法签署胖二进制文件。 有关详细信息,请参阅Building for Jailbroken devices on iOS SDK 4.2

我发现这个ldid源代码应该签署胖二进制文件 https://github.com/rpetrich/ldid 但它对我来说也不起作用(ldid在运行时挂起)

解决方案可能是使用lipo工具将二进制文件拆分为两个可执行文件,分别将它们重新组合成一个可执行文件。 (对我来说也不起作用,但我正在努力)

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