1

我正在为越狱的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 是可以的。

我错过了什么?

4

1 回答 1

1

部分解决:

问题是 ldid 不能签署胖二进制文件。有关详细信息,请参阅在 iOS SDK 4.2 上为越狱设备构建

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

解决方案可能是使用 lipo 工具将二进制文件拆分为两个可执行文件,分别对它们进行 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
于 2012-03-29T07:07:55.213 回答