As you know to distribute the applications in App Store or even to debug them on real device according to Apple you have to pay $99 to achieve the provisiong and distribution certificate.
But of course as you know, there are always other ways to achieve the similar result. But 1st. your device has to be jailbroken and 2nd. you can distribute your app only among jailbroken devices via Cydia, Icy or less friendly through SSH. It has advantages and disadvantage. Not all iPhones and iPod touches are jailbroken (I guess maybe 10% are), but you don’t have to obey the rules from Apple about submitted apps and you don’t have to wait at least one week for the review result.
Tasks you need to do only once (for developer):
- Jailbreak your iPhone
- Install LDID (Link Identity Editor), Mobile Termial and OpenSSH from Cydia
- Go to /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.sdk/
I personally tested in on 3.0 that’s why I put that in bold, if you are going to built your app on a higher SDK, go to the appropriate directory. - Open the SDKSettings.plist in your favorite editor (I recommend Property List Editor in Utilities) and in Root -> DefaultProperties set CODE_SIGNING_REQUIRED = NO. BTW check if AD_HOC_CODE_SIGNING_ALLOWED equals NO and CODE_SIGNING_ENTITLEMENTS is blank.
- Save the file.
Please remember: modification of above .plist file simply allows you to build the package without signing it, so from now, you are able both to built package for Cydia and AppStore submission. Of course for App Store submission you provide a Distribution profile, for Cydia “Don’t Code Sign” in your project info under Build, Code Signing, Code Signing Identity, Any iPhone OS Device.
Tasks you need to do for every package (developer):
- Build your project without signing it (Don’t Code Sign).
- SSH your bundle to /Applications on your device. You can use Fugu for Mac or WinSCP for Windows.
- Now you have to fake-sign it to make it working. Open Mobile Terminal and type:
su root
you will be asked for password, by default: alpine. Next:
ldid -S /Applications/My\ Project\ Name.app/My\ Project\ Name
make sure every space in name comes with the backslash before - If any error occurs, it means that you have provided wrong file path or didn’t built it with “Don’t Code Sign”.
- Now you can test your application, how it works on real device with full touch control, accelerometer and device’s performance, it’s really different from the Simulator.
- If everything works correctly download the file that you modified with ldid – it’s the file named exactly the same as your project without any extensions, and replace it with original from your bundle.
- Now you can distribute it in your own way.


I’m extremely inspired together with your writing abilities as neatly as with the format on your blog. Is that this a paid topic or did you modify it yourself? Anyway keep up the excellent quality writing, it is uncommon to look a great weblog like this one these days..
I wish i came across this before wasting many hours trying to build without code signing.
“SSH your bundle to /Applications on your device. ”
What does this line exactly mean? Please describe it, what are the content of it?
I shared this text really well written on delicious , thanks you
iPage Coupon Promo Code
Nice to see you posting after a while, must have being really bored today.
is it the same for Xcode 4 ??
I actually do not understand really well all your instructions.
Specially from ldid -S /Applications/My\ Project\ Name.app/My\ Project\ Name
to the end of the tutorial, I dont understand all those slashes
and then I dont understand whats about: “If everything works correctly download the file that you modified with ldid – it’s the file named exactly the same as your project without any extensions, and replace it with original from your bundle.”
download what?? and replace with what ?? Im so confused.
Thank you for another informative web site. The place else may I am getting that kind of info written in such an ideal manner? I have a venture that I’m simply now running on, and I have been on the glance out for such info.
Good web site! I truly love how it is simple on my eyes and the data are well written. I’m wondering how I might be notified when a new post has been made. I’ve subscribed to your feed which must do the trick! Have a nice day!
I purchased the p90x DVD’s off online a little more than a month ago. I’d seen the commercials several times and sifted though a load of reviews before I purchased the product.Thanks dinmomnidzyx.
“Build your project without signing it (Don’t Code Sign).”
How?
Having already mastered the adroitness of menswear due to the fact that decline, it’s beforehand to take into account the most modish way to off as when temps go apropos south. Fortunately, you won’t take to look much farther than your closet to wrap yourself in in goodness.It’s like they were saying, we recollect you procure to wear your Christian Louboutin shoes a breed of peculiar ways, we know these be experiencing to look after the needs of a purpose in your memoirs for the weekend, when you’re with your kids, when you’re at work, when you’re effective out at gloaming,So here’s a approach you can manage the most unlit of something that you from in your closet. And if you look at it like that, it’s like, ‘wow, this is gonna indication contemporary lifetime into how I attrition everything.
There are no rules suitable just now in fashion. You can be charming morning, noontime and night. You can disturb prints. You can wear sequins in the sun. The exclusively practice is to try to look your excellent and to secure fun and feel good there what Christian Louboutin Platforms you’re wearing.
Can someone please make a video on how to set up xcode to export my app to a jailbroken phone. i dont know much about terminal and i just recently got a mac so it would be cool if someone could make a video tutorial on how to gets me apps to my iphone, that would be great cause i dont understand any of the forums ive been readin. BTW i have a 4.0.1 jailbroken iphone 4
I’ve been reading a few posts and actually and enjoy your writing. I’m just starting up my own blog and only hope that I can write as well and give the reader so much insight.
[..] A little unrelated, but I quite simply liked this site post [..]
Hi. Thanks for this. It helped so much! I bookmarked fer sure lol. Anyways I get an error when doing fake signing.
./minimal/mapping.h(54): _assert(2:false)
I dont know what I did wrong. I saw you said to do su root. then it brought /var/mobile root#
so do I put the .app files into the mobile/Applications/ or
straight into the first Application folder where like Cydia.app and install0us.app is?
That is what I am confused of. I cant wait to figure it out and then I can test my application
Thanks again for this tutorial
That was stimulating . I like your finesse that you put into your writing . Please do continue with more like this.
I can’t modify SDKSettings.plist. It tells me the The document “SDKSettings.plist” could not be saved.
Resolved
how?
It’s quite difficult to open, modify, and save system files. That’s why the easiest way to accomplish it is to copy the .plist file to your desktop, modify the copy (from desktop), and later, drag and drop it to the original location. While dragging Mac OS X will want to copy this file rather than move it (it’s ok), and when you release the mouse button you will have to authenticate using administrator password.
Later you can just delete the copy from your desktop.
Hello, I tried the above steps on 3.2.1 version of Xcode and I installed LDID from Cydia and I built my code with “Don’t Code Sign” but I get this: “util/ldid.cpp(567): _assert(0:arch != NULL)” in Mobile Terminal.
My iphone OS is 3.1.2 and I build in Xcode with the 3.1.2 SDK.
Thanks
Chris
Also, it seems I can’t edit the SDKSettings.plist file. even if I set my settings to read&write. I can’t seem to set code_signing_required to NO. Maybe its something in the lastest SDK?
I guess most of your project will also work for 3.0. If you are going to distribute your application in Cydia, you should use the lowest possible version of iPhone OS.
Go to info of your project, and change the base SDK to 3.0 (if it works under 3.0 – debug it properly). Than you have to edit SDKSettings.plist in 3.0 SDK and build without code signing and it should work
.
the LDID tool is not compatible with any SDK higher than 3.0, that’s why you received the “util/ldid.cpp(567): _assert(0:arch != NULL)” error. It’s saying that the architecture is null, so it isn’t supported. The same error occurs when the actual architecture setting in Xcode is changed from “standard” (armv6) to “optimized” (armv6, armv7), because they’re handled in a different way. (Apple probably fixed this?)
Hope this helps!
I’m doing all this on a 3.1.2 dev/phone and i’m just wondering which option should I use to build the project, or does it not matter and I just go and grab the myApp.app file and copy it over. Also i’m using iphonebrowser not openSSH is this ok? When I run ldid I think it works, but my app just starts to load then goes right back to springboard.
I always used OpenSSH. The only option you need to build the projects is not to sign you bundle. Just read the tutorial, everything is pretty explained.
Chris
Hi,
I’ve been trying to do this on Xcode 3.2.1 using the 3.0 sdk framework. It doesn’t work.
I get this error:
CodeSign error: code signing is required for product type ‘Application’ in SDK ‘Device – iPhone OS 3.0′
Do you have an idea on how to fix this?
Change the above entries for every 3.x just to make it clear. Remember to restart your code.