Сборка для взломанных устройств на iOS SDK 4.2 - PullRequest
0 голосов
/ 27 ноября 2010

У меня есть приложение, которое я распространяю через Cydia.Нет ничего хакерского, просто графический интерфейс для подключения к веб-API.

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

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

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

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

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

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

Спасибо!

Ответы [ 3 ]

1 голос
/ 26 сентября 2011

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

1 голос
/ 07 января 2011

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

Я пытаюсь установить на исходный взломанный iphone под управлением 3.1.3.

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

0 голосов
/ 08 января 2011

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

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

lipo -i MyApp.app/MyApp
...