5 Stimmen

Entwickeln mit Jailbroken iPhone (Xcode)

Ich habe ein jailbroken iPhone 4S mit dem laufenden iOS 5.1.1. Ich habe Xcode 4.3.2, und ich habe in der Lage, meine Apps auf meinem iPhone laufen, aber auf eine seltsame Weise. Wenn ich in Xcode auf die Debug-Schaltfläche klicke, wird versucht, die App auf meinem jailbroken iPhone zu öffnen, aber das schlägt fehl, weil sie schnell geöffnet und dann wieder geschlossen wird. Wenn ich die Anwendung jedoch manuell öffne, indem ich sie auf dem Homescreen anklicke, läuft sie einwandfrei. Das ist ziemlich ärgerlich. Am ärgerlichsten ist, dass dadurch das Debugging nicht mehr möglich ist, da Xcode nicht sieht, dass die App läuft.

Dies ist die Ausgabe, die sie erzeugt:

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

Wobei sich die Prozess-ID natürlich jedes Mal ändert.

Dies ist die Anleitung, die ich für die Entwicklung auf meinem jailbroken iDevice verwendet habe: http://iphonedevwiki.net/index.php/Xcode#Developing_without_Provisioning_Profile

Danke für jede Hilfe.

8voto

Andrew R. Punkte 923

Ich würde versuchen, das Tutorial noch einmal durchzugehen, um sicherzugehen, dass Sie die Einrichtung korrekt durchgeführt haben. Es scheint, als könnten Sie die Anwendungen ohne Probleme installieren, aber der Debugger kann sich nach der Installation nicht mit der Anwendung verbinden. Wenn Sie den Debugger wirklich brauchen, könnten Sie stattdessen versuchen, die App nach der Installation auf Ihrem Gerät zu öffnen und dann, während sie läuft (und Ihr Gerät an Ihren Mac mit Xcode angeschlossen ist), Xcode zu öffnen und zu Product -> Attach to Process und wählen Sie Ihre Anwendung aus der Liste aus (wenn sie dort nicht zu finden ist, ist das ein ganz anderes Thema).

Versuchen Sie auch den Vorschlag von YllierDev zur Aktivierung von get-task-allow in der Entitlements-Datei Ihrer Anwendung (wenn sie keine hat, können Sie sie ganz einfach über die Info-Seite Ihres Projekts in Xcode erstellen). Angenommen, Sie haben das Tutorial korrekt durchlaufen, sollte das helfen.

--

Um die Funktion "get-task-allow" in der Entitlements-Datei Ihrer Anwendung mit Xcode 4.3 zu aktivieren, gehen Sie wie folgt vor:

  1. Klicken Sie im Projektnavigator auf Ihr Projekt, und wählen Sie in der Spalte "Ziele" den Namen Ihres Projekts aus.

  2. Gehen Sie dann zur Registerkarte "Zusammenfassung" und aktivieren Sie unter "Berechtigungen" die Option "Berechtigungen aktivieren".

  3. Klicken Sie anschließend mit der rechten Maustaste auf die Datei "YOURAPP.entitlements" im Projekt-Naviagtor und wählen Sie "Im Finder anzeigen".

  4. Öffnen Sie in TextEdit und fügen Sie hinzu:

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

    kurz vor </dict> .

  5. Es sollte nun fehlerfrei laufen!

1voto

egregious Punkte 11

Darauf gibt es eine einfache Antwort. Die Anweisungen auf dem iPhoneDevWiki sind fast korrekt. Nachdem die write() in die temporäre Datei, müssen Sie flushen, sonst ist die temporäre Datei leer. Ihre ldid3.py sollte wie folgt aussehen:

#!/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])

Ich habe Debugging arbeiten auf diese Weise mit Xcode 4.3.3 und iOS 5.1.1. Dies funktioniert die Art und Weise Sie beabsichtigt, und Sie werden nie mit Berechtigungen für neue Projekte zu verwirren haben.

0voto

CReaTuS Punkte 2583

Versuchen Sie, iPhone und Mac neu zu starten. Vielleicht läuft ein Prozess im Hintergrund weiter.

Wenn das nicht hilft, dann bereinigen Sie ein Projekt und führen Sie eine vollständige Bereinigung durch ( wie man eine vollständige Löschung vornimmt )

Entfernen Sie eine App vom iPhone und stellen Sie sie wieder her.

Wenn Ihre Anwendung eine eigene Bibliothek verwendet, dann bauen Sie diese ebenfalls neu.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X