Use an unsubscribed jailbroken iOS Device to test your iOS Applications for free! (No Apple Developer Subscription necessary) (iOS 2.x-7.x / Xcode 4.6.x / OS X 10.x)

  • Post published:July 29, 2013

This Tutorial shows you how to use your unsigned iOS Device to run your iOS applications without an Apple Developer subscription!


Requirements: Xcode 4.x.x, Mac OS X, iOS 5.x-7.x

1. Jailbreak your iOS Device (
2. Install AppSync from Cydia (for example
3. Connect iOS Device to Xcode and Click “Use for development” (from Xcode’s Organizer)




4. Create a selfsigned Codesigning certificate in Keychain Access:

  • Keychain Access” menu
  • Select “Certification Assistant” -> “Create a Certificate”
  • Name: iPhone Developer
    Identify Type: Self Signed Root
    Certification Type: Code Signing
    Check “Let me override defaults”
    Set Validity Period to 3650
    NO Email Address
    Accept everything else (Clicking Continue)

5. Configure Xcode with DEBUG

  • Close Xcode  and Open (Green text is code to enter)
  • cd /Applications/ (version dependent here 4.6.x)
  • sudo cp -p Info.plist Info.plist.orig (create backup of file)
  • sudo plutil -convert xml1 ./Info.plist (convert to xml format)
  • sudo sed -i .bkup ‘s/XCiPhoneOSCodeSignContext/XCCodeSignContext/g’ ./Info.plist (replace strings)
    OR just replace strings “XCiPhoneOSCodeSignContext” with “XCCodeSignContext” in Info.plist with a tool you like
  • Open Xcode and Check if “Code Signing Identity” == ‘iPhone Developer” in Project Build Settings
  • Close Xcode  and Download “ldid” BINARY (OS X 10.8) or SOURCE (git:// (recommend saving in /usr/local/bin)
  • BINARY: Use my script (recommend saving in /usr/local/bin)
  • OR SOURCE: Create file where ldid is saved (recommend saving in /usr/local/bin) content:

#!/usr/bin/env python
from sys import argv
from subprocess import check_call
from os.path import basename, dirname, splitext, join
from tempfile import NamedTemporaryFile
app = argv[-1]
ldid_path = join(dirname(__file__), ‘ldid’)
obj_path = join(app, splitext(basename(app))[0])
if ‘-gta’ not in argv:
check_call([ldid_path, ‘-S’, obj_path])
with NamedTemporaryFile(‘w+b’, 0) as f:
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN”
<plist version=”1.0″>
check_call([ldid_path, ‘-S’ +, obj_path])

  • sudo chmod +x ldid
  • sudo chmod +x
  • cd /Applications/
  • sudo cp -p iPhoneCodeSign.xcspec iPhoneCodeSign.xcspec.orig (backup)
  • sudo plutil -convert xml1 iPhoneCodeSign.xcspec (convert to xml)
  • sudo sed -i .bkup ‘s/\/usr\/bin\/codesign/\/usr\/local\/bin\/’ iPhoneCodeSign.xcspec (replaces strings !! change path to yours [recommended was /usr/local/bin/])
    OR just replace string code sign” here
     with “/usr/local/bin/” in iPhoneCodeSign.xcspec with a tool you like
  • Open Xcode  and Enable debugging in Xcode: add “-gta” to “Other Code Signing Flags”

Thats it! HF