【问题标题】:How to run fat binaries on iOS 5.1 / iPhone 4如何在 iOS 5.1 / iPhone 4 上运行胖二进制文件
【发布时间】:2012-03-26 08:15:55
【问题描述】:

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

我错过了什么?

【问题讨论】:

    标签: objective-c ios jailbreak armv7 armv6


    【解决方案1】:

    部分解决:

    问题是 ldid 不能签署胖二进制文件。 详情请见Building for Jailbroken devices on 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
    

    【讨论】:

    • 我曾与 Optimo 或 BigBoss 讨论过这个问题,他们似乎确实认为可以使用您的一般方法(分别与 lipoldid -S 分开,然后重新组装)。但是,我很高兴只生产 armv6,所以我从未验证过这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多