2012-05-31 1 views
5

У меня есть взломанный iPhone 4S с работающим iOS 5.1.1. У меня Xcode 4.3.2, и я смог запускать свои приложения на свой iPhone, но странным образом. Если я нажму кнопку «Отладка» на Xcode, он попытается открыть приложение на моем jailbroken iPhone, но не работает, потому что он быстро открывается и затем закрывается. Даже если это произойдет, если я открою приложение вручную, щелкнув его на главном экране, он будет работать нормально. Это очень раздражает. Самое неприятное, что это заставляет его больше не разрешать отладку, поскольку Xcode не видит, что он запущен.Разработка с Jailbroken 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 

С идентификатором процесса меняется каждый раз, конечно.

Это учебник я использовал для разработки на моем взломанный чтения компакт-дисков: http://iphonedevwiki.net/index.php/Xcode#Developing_without_Provisioning_Profile

Спасибо за любую помощь.

+0

Получить реальный профиль разработчика, это всего $ 100/год. если вы занимаетесь серьезным развитием, тогда вам нужно просто инвестировать. Лучше сейчас, чем слишком поздно! –

+2

Проверьте, правильно ли подписан исполняемый файл с правом получения «получить задание». ldid -e может перечислить права – YllierDev

ответ

8

Я бы попробовал повторить этот учебник снова, чтобы убедиться, что вы правильно прошли настройку. Похоже, вы можете устанавливать приложения без проблем, но отладчик просто не может подключиться к приложению после установки. Если вам действительно нужен отладчик, вы можете попробовать вместо этого открыть приложение на своем устройстве после установки, а затем, пока он работает (и ваше устройство подключено к вашему Mac, работающему под Xcode), откройте Xcode и перейдите к Product -> Attach to Process и выберите свое приложение из списка (если его нет, это еще одна проблема).

Кроме того, попробуйте предложение YllierDev о включении get-task-allow в файле Entitlements вашего приложения (если он его не имеет, вы можете легко создать его на странице Info вашего проекта в Xcode). Предполагая, что вы правильно изучили учебник, это должно помочь.

-

Чтобы включить «получить-проблемно-позволить» в Возмещениях вашего приложения файл с Xcode 4.3, выполните следующие действия:

  1. Нажмите проект под навигаторе проекта и выберите имя вашего проекта в столбце «Цели».
  2. Далее перейдите на вкладку сводки, а в разделе «Права» установите флажок «Включить права».
  3. Далее щелкните правой кнопкой мыши/команду, щелкнув файл YOURAPP.entitlements в проекте naviagtor и выберите «Показать в Finder».
  4. Открыть в в TextEdit и добавить:

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

    прямо перед </dict>.

  5. Теперь он должен отлаживаться и работать нормально!
+0

Интересно, почему ни один из уроков, описывающих процесс, не упоминает об этом! –

+0

Мы должны взять все эти советы для джейлбрейка и объединить их в один ответ! – duci9y

+0

Огромное спасибо! – Edoz

0

Попробуйте перезагрузить iPhone и Mac. Возможно, какой-то процесс находится в фоновом режиме и все еще работает.

Если не помогает, то очистить проект и сделать Full Clean (how do a Full delete)

Удалить из iPhone приложение и перестроения.

Если ваше приложение использует собственные библиотеки, то также перестройте его.

+0

Уже пробовали, без каких-либо изменений. :( – hetelek

+0

текст обновлен – CReaTuS

1

Существует простой ответ. Инструкции по iPhoneDevWiki почти правильны. После write() в файл temp вам нужно выполнить флеш, иначе tempfile пуст. Ваш 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]) 

У меня есть отладки работает таким образом с Xcode 4.3.3 и прошивкой 5.1.1. Это работает так, как вы планировали, и вам никогда не придется возиться с правами на новые проекты.

+0

Этот метод по-прежнему работает с iOS 7 и Xcode 5. Спасибо! – 0xcaff