2010-11-26 4 views
0

У меня есть приложение, которое я распространяю через Cydia. Это не так просто, просто графический интерфейс для подключения к веб-API.Здание для Jailbroken устройств на SDK iOS 4.2

Последний раз, когда я отправил обновление, был до SDK 4.0, я использовал доступные инструкции here, чтобы построить его из Xcode без подписания и, используя ldid на терминале OSX, чтобы его подписать. Все работало отлично.

Теперь, когда я строил с использованием 4.2 SDK точно так же, как раньше, no-codesigning (и ldid) все еще работает, и я могу запустить его на устройстве 4.2, но приложение не будет работать на 3.1.3 Устройство (просто показывает Default.png и сбои). С другой стороны, если я строю & с Xcode, он отлично работает на любом устройстве, начиная с iOS 3.0 до 4.2. Поэтому я не думаю, что это может быть проблемой с библиотеками или ссылками, но с подписанием кода.

В настройках проекта у меня 4.2 в качестве базового SDK и 3.0 в качестве цели развертывания.

Это то, что я получаю на консоли, если я пытаюсь запустить приложение на устройстве 3,0 iPhone 2G:

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 

Каждый получил некоторый опыт в этой области, которые, возможно, могли бы указать меня в правильном направлении?

Спасибо!

+0

Интересная заметка на полях, которые всегда меня забавляет, когда я вижу это: «Дросселирование респауна: начнется через 2147483647 секунд» - это 68 лет! Надеюсь, вы сможете решить свою проблему! – Luke 2011-01-07 16:56:42

ответ

0

Проблема была ldid не может подписывать живые двоичные файлы, то есть вам нужно построить приложение только для armv6 или armv7 (не для обоих). Вы можете это сделать, перейдя в настройки вашего проекта и отредактировав параметр Архитектуры.

Чтобы перепроверить свой двоичный файл только одну архитектуру, вы можете использовать lipo инструмент:

lipo -i MyApp.app/MyApp 
+0

Я спросил об этом у BigBoss, и они сказали, что вы можете сделать это с помощью ldid. Вам в основном пришлось разделить жир двоичный (armv6 + armv7) отдельно, используя липо, подписать каждую часть с ldid, а затем снова положить их вместе с липо. – Nate 2011-07-11 11:33:06

1

Я вижу то же самое, что и вы. У меня есть приложение, которое скомпилировано с последним xcode, предназначено для последних SDK (4.2) и Device 3.0.

Я пытаюсь установить на оригинальный iphone jailbroken running 3.1.3.

Когда я компилирую без подписи кода и запускаю ldid, я вижу тот же самый сбой при запуске. Одна вещь, которую я нашел, это то, что если я просто подпишу ее с моим сертификатом разработки и SSH на устройство, он будет работать нормально (без установленных профилей настройки). Вам нужно попробовать еще раз, чтобы убедиться, что он действительно работает. Я попытался убедиться, что я удалил все профили подготовки и перезагрузился, чтобы убедиться, что ничего не было в памяти.

1

Обновленный ldid, который может подписать жир двоичные файлы доступна here (source)

Смежные вопросы