2012-05-31 24 views
5

Mam jailbroken iPhone 4S z systemem iOS 5.1.1. Mam Xcode 4.3.2 i mogłem uruchomić swoje aplikacje na moim iPhonie, ale w dziwny sposób. Jeśli kliknę przycisk debugowania w Xcode, spróbuję otworzyć aplikację na moim jailbreakowanym iPhonie, ale się nie uda, ponieważ szybko się otwiera, a następnie zamyka. Nawet jeśli tak się stanie, jeśli otworzę aplikację ręcznie, klikając ją na ekranie głównym, działa poprawnie. To dość denerwujące. Najbardziej denerwujące jest to, że powoduje to, że nie zezwala już na debugowanie, ponieważ Xcode nie widzi, że jest uruchomiony.Rozwijanie z Jailbroken iPhone (Xcode)

Jest to wyjście, które produkuje:

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 

z procesem zmieniającym się za każdym razem oczywiście ID.

Jest to poradnik dla rozwijania użyłem w moim jailbroken iDevice: http://iphonedevwiki.net/index.php/Xcode#Developing_without_Provisioning_Profile

Dzięki za wszelką pomoc.

+0

Uzyskaj prawdziwy profil programisty, to tylko 100 USD rocznie. jeśli robisz coś poważnego, powinieneś po prostu zainwestować. Teraz lepiej, niż za późno! –

+2

sprawdź, czy plik wykonywalny został poprawnie podpisany z uprawnieniem "uzyskaj uprawnienie do wykonywania zadań". ldid -e może wymienić uprawnienia – YllierDev

Odpowiedz

8

Spróbowałbym przejść przez samouczek ponownie, aby upewnić się, że poprawnie wykonałeś konfigurację. Wygląda na to, że możesz zainstalować aplikacje bez problemu, ale debugger po prostu nie może podłączyć się do aplikacji po instalacji. Jeśli naprawdę potrzebujesz debuggera, możesz spróbować otworzyć aplikację na swoim urządzeniu po instalacji, a następnie, gdy jest uruchomiona (i twoje urządzenie jest podłączone do komputera Mac z Xcode), otwórz Xcode i przejdź do Product -> Attach to Process i wybierz swoją aplikację z listy (jeśli jej tam nie ma, jest to zupełnie inny problem).

Wypróbuj także sugestię YllierDev dotyczącą włączenia get-task-allow w pliku Uprawnienia aplikacji (jeśli go nie masz, możesz go łatwo utworzyć na stronie informacyjnej projektu w Xcode). Zakładając, że przeszedłeś samouczek poprawnie, powinno to pomóc.

-

Aby włączyć 'get-task-allow' w uprawnieniach swojej aplikacji plik z Xcode 4.3, wykonaj następujące czynności:

  1. Kliknij swój projekt pod nawigatorze projektu i wybierz nazwa twojego projektu w kolumnie "Cele".
  2. Następnie przejdź do zakładki podsumowania, aw obszarze "Uprawnienia" zaznacz opcję "Włącz uprawnienia".
  3. Następnie kliknij prawym przyciskiem myszy/kliknij polecenie plik „YOURAPP.entitlements” pod naviagtor projektu i wybrać opcję „Pokaż w Finderze”.
  4. Otwórz w w TextEdit i dodać:

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

    tuż przed </dict>.

  5. To powinno teraz debugować i działać dobrze!
+0

Zastanawiam się, dlaczego żaden z tutoriali wyszczególnieniem proces wspomnieć o tym! –

+0

Powinniśmy wziąć wszystkie te wskazówki jailbreak-dev i skonsolidować je w jednym odpowiedź! – duci9y

+0

niesamowite dzięki! – Edoz

0

Spróbuj ponownie uruchomić iPhone'a i Maca. Może jakiś proces jest w tle i nadal działa.

Jeśli nie pomaga, a następnie oczyścić projekt i wykonać pełne czyste (how do a Full delete)

Usuń z iPhone app i odbudować.

Jeśli twoja aplikacja używa bibliotek własnych, to również ją przebuduj.

+0

Próbowano już, bez zmian. :( – hetelek

+0

tekst jest aktualizowana – CReaTuS

1

Istnieje prosta odpowiedź. Instrukcje na iPhoneDevWiki są prawie poprawne. Po write() do pliku tymczasowego należy przepłukać, w przeciwnym razie plik temp jest pusty. Twój ldid3.py powinna wyglądać następująco:

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

mam debugowanie działa w ten sposób z Xcode 4.3.3 i iOS 5.1.1. Działa to w sposób zamierzony i nigdy nie będziesz musiał zadzierać z uprawnieniami do nowych projektów.

+0

Metoda ta nadal współpracuje z iOS 7 i Xcode 5. Dzięki! – 0xcaff