2010-11-26 12 views
0

私はCydiaで配布しているアプリを持っています。ハッキーなことではなく、Web APIに接続するためのGUIです。iOS SDK 4.2のJailbrokenデバイス用のビルド

最後にSDK 4.0より前にアップデートを提出したときに、hereという命令を使用して署名なしでXcodeからビルドし、OSX端末でldidを使用して署名しました。すべてうまくいった。

私が以前に行ったように、4.2 SDKを使用してビルドしているとき、no-codesigning(とldid)はまだ動作し、4.2デバイスで実行できますが、アプリケーションは実行されません3.1.3デバイス(Default.pngを表示してクラッシュします)。一方、Xcodeから実行した&をビルドすると、iOS 3.0から4.2までの任意のデバイス上で正常に動作します。だから私はこれがライブラリやリンクの問題ではないと思っていますが、コードの署名が付いています。

プロジェクト設定では、基本SDKとして4.2、展開ターゲットとして3.0を持っています。

kernel[0] <Debug>: seatbelt: hook..execve() killing pid 913: outside of container && !i_can_has_debugger 
SpringBoard[162] <Warning>: Failed to spawn MyApp. Unable to obtain a task name port right for pid 913: (os/kern) failure 
com.apple.launchd[1] <Notice>: (UIKitApplication:org.lobato.MyApp[0xaa9d]) Exited: Killed 
com.apple.launchd[1] <Warning>: (UIKitApplication:org.lobato.MyApp[0xaa9d]) Throttling respawn: Will start in 2147483647 seconds 
SpringBoard[162] <Warning>: Application 'MyApp' exited abnormally with signal 9: Killed 

誰もが多分正しい方向に私を指すことができ、この分野でいくつかの経験を得た:

これは私が3.0 iPhone 2Gのデバイスでアプリを起動しようとする場合、私は、コンソール上で何を得るのですか?

ありがとうございます!

+0

興味深い追記、私はそれを見て私を楽しませる:「絞首刑再開:2147483647秒で始まる」 - これは68年です!あなたの問題を解決できることを願っています! – Luke

答えて

0

問題はldidでした。脂肪のバイナリには署名できません。つまり、armv6またはarmv7(両方ではない)のアプリを構築する必要があります。プロジェクト設定に入り、Architecturesパラメータを編集することで、これを行うことができます。一つだけのアーキテクチャを持っている、あなたはlipoツールを使用することができ、あなたのバイナリを再確認するには

lipo -i MyApp.app/MyApp 
+0

私はBigBossの人にこれについて尋ねました。彼らはあなたがldidでこれを行うことができると言いました。あなたは基本的に脂肪のバイナリ(armv6 + armv7)をlipoを使って分割し、各断片にldidで署名し、lipoと一緒に戻す必要がありました。 – Nate

+0

nice! lipoを使ってバイナリを分割/結合する方法についてコメントしてください。 – leolobato

+0

彼らは確かに言いませんでした。私は2つのアーキテクチャをサポートしようとしなくなりました(ビルド設定をアクティブ/ armv6アーキテクチャのみに変更しました)。しかし、lipoのマニュアルページを見ると、普通の太ったバイナリを構築していると思います。次にこれをしてください: – Nate

1

私はあなたとまったく同じものを見ています。私は、最新のxcode、最新のSDK(4.2)、およびDevice 3.0をターゲットにしてコンパイルされているアプリを持っています。

私は元のiphone jailbroken 3.1.3を実行してインストールしようとしています。

コード署名なしでコンパイルしてldidを実行すると、起動時に同じクラッシュが発生します。私が見つけたことの1つは、開発証明書とSSHでデバイスに署名するだけで、(プロビジョニングプロファイルがインストールされていない状態で)正常に動作することです。これが本当に機能していることを確認するためにもう一度試す必要があります。私はすべてのプロビジョニングプロファイルを削除して再起動して、メモリに何もないことを確認しました。

1

常に更新脂肪のバイナリを署名することができますldidが利用可能であるheresource

関連する問題