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

armv7 のみのビルドを iPhone 4 で実行している間は問題ありません。

何が欠けていますか?

4

1 に答える 1

1

部分的に解決:

問題は、ldidがファットバイナリに署名できないことです。詳細については、iOSSDK4.2でのジェイルブレイクされたデバイスのビルドを参照してください。

ファットバイナリに署名することになっているこのldidソースコード https://github.com/rpetrich/ldidを見つけまし たが、機能しません(ldidは実行時にハングします)

解決策はおそらく、lipoツールを使用してバイナリを2つの実行可能ファイルに分割し、それらを別々にldidして、1つの実行可能ファイルに再アセンブルすることです。(私にとってもうまくいきませんが、私はそれに取り組んでいます)

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 に答える