0

我有一个通过 Cydia 分发的应用程序。它没有什么骇人听闻的东西,只是一个连接到 Web API 的 GUI。

我最后一次提交更新是在 SDK 4.0 之前,我使用此处提供的说明从 Xcode 构建它而无需签名,并ldid在 OSX 终端上用于对其进行签名。一切正常。

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

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

谢谢!

4

3 回答 3

1

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

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

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

于 2011-01-07T16:53:47.537 回答
1

可以在此处ldid获得可以签署胖二进制文件的更新(来源

于 2011-09-26T07:27:40.547 回答
0

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

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

lipo -i MyApp.app/MyApp
于 2011-01-08T19:04:57.630 回答