在 iOS SDK 4.2 上构建越狱设备

发布于 2024-10-04 19:41:14 字数 1244 浏览 3 评论 0原文

我有一个通过 Cydia 分发的应用程序。它没什么黑科技,只是一个连接到 Web API 的 GUI。

我上次提交更新是在 SDK 4.0 之前,我使用了可用的说明 此处从 Xcode 构建它,无需签名,并在 OSX 终端上使用 ldid 对其进行签名。一切都很好。

现在,当我像以前一样使用 4.2 SDK 进行构建时,无代码设计(和 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

任何人在这方面有一些经验,也许可以为我指明正确的方向?

谢谢!

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

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.

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.

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

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?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

じее 2024-10-11 19:41:14

我看到的和你一模一样。我有一个应用程序正在使用最新的 xcode 进行编译,目标是最新的 SDK (4.2) 和设备 3.0。

我正在尝试在运行 3.1.3 的原始越狱 iPhone 上安装。

当我在没有代码签名的情况下编译并运行 ldid 时,我在启动时看到相同的崩溃。我发现的一件事是,如果我只是使用我的开发证书和 SSH 到设备进行签名,它就可以正常运行(没有安装配置文件)。需要再试一次以确保它确实有效。我尝试确保删除了所有配置文件并重新启动以确保内存中没有任何内容。

I'm seeing the exact same thing you are. I have an app that is being compiled with the latest xcode, targets latest SDK (4.2) and Device 3.0.

I'm trying to install on a original iphone jailbroken running 3.1.3.

When I compile with no code signing and run ldid, I see the same crash on startup. One thing I did find is that if I just sign it with my development cert and SSH over to the device it runs fine (with no provisioning profiles installed). Need to try this again to make sure it really is working. I tried to make sure I deleted all provisioning profiles and rebooted to make sure nothing was in memory.

自由如风 2024-10-11 19:41:14

An updated ldid that can sign fat binaries is available here (source)

鸢与 2024-10-11 19:41:14

问题是 ldid 无法签署胖二进制文件,这意味着您只需为 armv6armv7(而不是两者)构建应用程序。您可以通过进入项目设置并编辑 Architectures 参数来做到这一点。

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

lipo -i MyApp.app/MyApp

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.

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

lipo -i MyApp.app/MyApp
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文