在iOS SDK 4.2上构建越狱设备 [英] Building for Jailbroken devices on iOS SDK 4.2

查看:136
本文介绍了在iOS SDK 4.2上构建越狱设备的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个我在Cydia发布的应用程式。

I have an app I distribute over Cydia. It's nothing hacky, just a GUI to connect to a web API.

最后一次我提交更新是在SDK 4.0之前,我使用了可用的指令这里从Xcode构建它而不签名,并使用 ldid 在OSX终端上签名。一切都很好。

The last time I submitted an update was before SDK 4.0, I used the instructions available here to build it from Xcode without signing and, used ldid on OSX terminal to sign it. Everything worked just fine.

现在,当我使用4.2的SDK,像我以前做的,无代码签名(和 ldid )仍然可以工作,我可以在4.2设备上运行它,但应用程序不会运行在3.1.3设备(只显示Default.png和崩溃)。如果我建立&从Xcode运行,另一方面,它运行正常在任何设备,从iOS 3.0到4.2。所以我不认为这可能是一个问题与库或链接,但与代码签名。

Now when I'm building using the 4.2 SDK exactly like I used to do, the no-codesigning (and ldid) still works, and I can run it on a 4.2 device, but the app won't run on a 3.1.3 Device (just shows Default.png and crashes). If I build & run from Xcode, on the other hand, it runs just fine on any Device, from iOS 3.0 to 4.2. So I don't think this could be a issue with libraries or linking, but with the code signing.

在项目设置,我有4.2作为基本的SDK和3.0作为部署目标。

On project settings, I have 4.2 as the base SDK and 3.0 as the deployment target.

这是我在控制台上得到的,如果我尝试在3.0 iPhone 2G设备上启动应用程序:

This is what I get on the console if I try to start the app on a 3.0 iPhone 2G Device:

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

任何人都有这方面的经验,指向正确的方向?

Anyone got some experience in this area that maybe could point me in the right direction?

谢谢!

推荐答案

问题是 ldid 不能签署胖二进制文件,这意味着你需要构建你的应用程序只有 armv6 armv7 (而不是两者)。

The problem was ldid can't sign fat binaries, meaning you need to build your app for only armv6 or armv7 (not both). You can do that by going in your project settings and editing the Architectures parameter.

要仔细检查你的二进制文件只有一个架构,你可以使用 lipo 工具:

To double check your binary only have one architecture, you can use the lipo tool:

lipo -i MyApp.app/MyApp

这篇关于在iOS SDK 4.2上构建越狱设备的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆