Ok, lame title, I admit it. That doesn’t change the annoyingness of the error though. Here’s the story: I sit down last night to watch the Oscars and get my feet wet developing for the first time in maybe a month or two. I go to debug an app on the device, you know, to see if I’ve still got it, and lo and behold a big hairy error pops up:
Error Starting Executable
No Provisioned iPhone OS device is detected.
How annoying is THAT? So I’m trying to figure out what the deal is and I stumble across something interesting in my favorite Xcode window of all time, the Organizer (Window>Organizer, or ^cmd-O):
It says, in nice pretty letters where the provisioning info for my iPhone should be (though isn’t): The Developer Disk Image could not be mounted. Xcode could not find an appropriate Developer Disk Image to mount on Alex’s iPhone. Please contact Apple for the (2.2.1 (SH11)) device support package.
So, pain as it may be, some googling revealed that this one is easy. The problem is that the iPhone is on software version 2.2.1, but the SDK on my computer is only at 2.2. I just had to download an updated version from Apple Developer Connect at http://developer.apple.com/iphone and all was good. On the down side, it’s a HUGE download and an even bigger install. On the up side, it’s an easy fix. You may also have to reboot your device (I did) but no biggie.
NOTE: If you’re using my method for live debugging on a jailbroken device, you’ll need to re-do step 4 HERE any time you update the SDK on your computer.
More importantly, however, there are a few other annoying errors that can pop up here and there when you’re using this method for live debugging. In particular, this one is pretty annoying: Error from Debugger: Error launching remote program: security policy error.
This one can be confusing since its characterized by the app installing on the phone and pretending to launch, but then the phone freezes momentarily and the phone simply fails to launch the app. In Xcode, however, the app appears as though it’s still running and you have to manually stop it.
The fix is, once again, pretty easy: make sure you followed step 6 from the above linked page. Namely, add the following lines to the Info.plist of your project:
<string>Apple iPhone OS Application Signing</string>
In similar fashion, it’s also important that you have the MobileInstallation Patch installed to patch signature checks out of the device’s installer. Keep in mind that the method we’re using doesn’t actually sign the apps we make, legit or otherwise (most jailbroken apps are codesigned using the ldid tool). As such, without the mobileinstallation patch (again, instructions at the link above), you’ll get an error that looks like this:
The full error is:
Your mobile device has encountered an unexpected error (0xE800003A)
Hopefully you never encounter any other errors, but a general rule of thumb is that you should make sure all of the steps from the “Developing for a Jailbroken Phone” post have been folowed. This includes re-editing
/Developer/Platforms/iPhoneOS.platform/Info.plist after any SDK update, editing the Info.plist for your individual project, and making sure MobileInstallation Patch is installed on your phone.
Let me know if you have any other magical errors and we can try to troubleshoot them.