5

iOS5.1.1を実行しているジェイルブレイクされたiPhone4Sがあります。私はXcode4.3.2を持っていて、iPhoneでアプリを実行することができましたが、奇妙な方法でした。Xcodeのデバッグボタンをクリックすると、ジェイルブレイクされたiPhoneでアプリを開こうとしますが、すばやく開いてから閉じるため失敗します。これが発生しても、アプリを手動で開いてホーム画面をクリックすると、正常に動作します。それはかなり迷惑です。最も厄介なのは、Xcodeが実行中であることを認識しないため、これによりデバッグが許可されなくなることです。

これは、それが生成する出力です。

error: failed to launch '/Users/hetelek/Library/Developer/Xcode/DerivedData/spyapp-flynnmpiqhjoilezvqsbaqdnkesn/Build/Products/Debug-iphoneos/spyapp.app/spyapp' -- failed to get the task for process 3741

もちろん、プロセスIDは毎回変更されます。

これは、ジェイルブレイクされたiDeviceでの開発に使用したチュートリアルです:http: //iphonedevwiki.net/index.php/Xcode#Developing_without_Provisioning_Profile

助けてくれてありがとう。

4

3 に答える 3

8

セットアップを正しく実行したことを確認するために、もう一度そのチュートリアルを実行してみます。問題なくアプリをインストールできるようですが、インストール後にデバッガーがアプリに接続できません。デバッガーが本当に必要な場合は、インストール後にデバイスでアプリを開き、実行中に(デバイスがXcodeを実行しているMacに接続されているときに)Xcodeを開いてに移動しProduct -> Attach to Process、からアプリを選択してみてください。リスト(そこにない場合、それはまったく別の問題です)。

また、アプリのエンタイトルメントファイルで有効にするというYllierDevの提案を試しget-task-allowてください(エンタイトルメントファイルがない場合は、Xcodeのプロジェクトの情報ページから簡単に作成できます)。チュートリアルを正しく実行したと仮定すると、それが役立つはずです。

-

Xcode 4.3を使用してアプリのエンタイトルメントファイルで「get-task-allow」を有効にするには、次の手順を実行します。

  1. プロジェクトナビゲータの下でプロジェクトをクリックし、[ターゲット]列でプロジェクトの名前を選択します。
  2. 次に、[概要]タブに移動し、[資格]で[資格を有効にする]をオンにします。
  3. 次に、プロジェクトnaviagtorの下にある「YOURAPP.entitlements」ファイルを右クリック/コマンドクリックし、「ShowinFinder」を選択します。
  4. テキストエディットで開き、以下を追加します。

    <key>get-task-allow</key> <true/>

    直前</dict>

  5. これで、デバッグして正常に実行されるはずです。
于 2012-06-04T05:27:55.460 に答える
1

簡単な答えがあります。iPhoneDevWikiの説明はほぼ正しいです。一時ファイルに移動した後、write()フラッシュする必要があります。そうしないと、一時ファイルは空になります。ldid3.pyは次のようになります。

#!/usr/bin/python
from sys import argv
from subprocess import call, check_call
from os.path import basename, splitext, join
from tempfile import NamedTemporaryFile

app = argv[-1]
obj_path = join(app, splitext(basename(app))[0])
if '-gta' not in argv:
    check_call(['/usr/local/bin/ldid', '-S', obj_path])
else:
    with NamedTemporaryFile() as f:
        f.write("""
            <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
            <plist version="1.0">
            <dict>
            <key>get-task-allow</key>
            <true/>
            </dict>
            </plist>\n""")
        f.flush()
        check_call(['/usr/local/bin/ldid', '-S' + f.name, obj_path])

Xcode4.3.3とiOS5.1.1でこのように動作するデバッグがあります。これは意図したとおりに機能し、新しいプロジェクトの資格をいじる必要はありません。

于 2012-06-22T06:47:57.357 に答える
0

iPhoneとMacを再起動してみてください。おそらく、いくつかのプロセスがバックグラウンドで実行されています。

役に立たない場合は、プロジェクトをクリーンアップして完全クリーンアップを実行します(完全削除を実行する方法

iPhoneからアプリを削除して再構築します。

アプリがセルフライブラリを使用している場合は、彼も再構築します。

于 2012-06-01T02:51:07.670 に答える