0

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!

Community
  • 1
  • 1
leolobato
  • 2,359
  • 3
  • 32
  • 51
  • Interesting sidenote, which always amuses me when I see it: `Throttling respawn: Will start in 2147483647 seconds` - this is 68 years! I hope you can solve your problem! – Luke Jan 07 '11 at 16:56

3 Answers3

1

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.

codemonkey
  • 11
  • 1
1

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

rpetrich
  • 32,196
  • 6
  • 66
  • 89
0

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
leolobato
  • 2,359
  • 3
  • 32
  • 51
  • I asked the BigBoss guys about this, and they said that you could do this with ldid. You basically had to split the fat binary (armv6 + armv7) apart using lipo, sign each piece with ldid, and then put them back together with lipo. – Nate Jul 11 '11 at 11:33
  • nice! care to comment how to split/join the binary using lipo? – leolobato Jul 11 '11 at 22:18
  • They didn't say for sure, and I decided to stop trying to support two architectures (I changed my build settings to build active/armv6 architecture only). But, looking at the man page for lipo, I'd guess that you build a normal fat binary, then do this: – Nate Jul 14 '11 at 02:36
  • (continued) cd MyApp.app/; lipo MyApp -extract armv6 -output MyApp6; lipo MyApp -extract armv7 -output MyAPp7; ldid -S MyApp6; ldid -S MyApp7; lipo -create MyApp6 MyApp7 -output MyApp – Nate Jul 14 '11 at 02:39