How To Compile An App for Cydia Submission

My recent app, SmashFace got rejected by the App Store for being “too violent” (read: too awesome), so rather than just let the code go to waste, I decided to release it on Cydia. However, after searching around, I was unable to find a decent step-by-step guide on how to do just that. I eventually figured it out, so I thought I would share 🙂 You can also use this guide to test your app on your device without paying the fee to join their developers program to “officially” sign your app.

The biggest issue was getting the app signed. I tried using ldid to “pseudo-sign” it, but I kept getting errors. Eventually, I came across an awesome app called JailCoder that patches Xcode and your project and signs it for you. JailCoder is 100% reversible and 100% easy to use, so I highly recommend it.

This method requires that you have 1) JailCoder, 2) an SSH program, such as CyberDuck, and 3) MobileTerminal installed on your phone (from Cydia)

Anyway, here are the steps:

Getting the App and Testing on Your Device

  • Download JailCoder and patch both Xcode and your project.
  • In Xcode, create a new archive by going to Product > Archive > click ‘Allow’ for the codesign prompts.
  • In Organizer, right click your archive > ‘Show in Finder’ > right click your archive file > ‘Show Package Contents’.
  • Get your. app file by going into Products > Applications >
  • At this point you can test your app on your device by coping the .app file to your phone, into the ‘/Applications’ folder using your SSH program. After copying the file to your device, you may need to respring before it shows up.

Creating a Debian Package for Submission or Hosting

  • Create a new folder somewhere on your computer, that you will use to bundle everything. For this example, I will use the folder name, “com.yourname.project”
  • In this folder, create two new folders, both case-sensitive: 1) Applications, and 2) DEBIAN
  • Copy your .app file into the ‘Applications’ folder.
  • In the ‘DEBIAN’ folder, you need to place a plain text file with no file extension named, “control”. Here is an example; just replace the values with your own and make sure you remove the .txt extension. Also, note that you must have an extra line break at the end of the file or you will get errors.
  • Now SSH into your phone and copy the “com.yourname.project” folder to ‘/var/mobile/Documents’
  • Open MobileTerminal on your phone and enter the following commands:

    su root
    (enter your password. The default is: alpine)
    cd /var/mobile/Documents
    dpkg-deb -b com.yourname.project

  • You may get some errors about user-defined fields; you can just ignore them.
  • You should now see a com.yourname.project.deb file in your Documents folder. Copy it back to your computer.
  • You can now upload your .deb file to any of the major repos, or host your own!

At this point, you can delete your com.yourname.project folder and .deb file from your phone, or if you want to test the package, just navigate to the .deb file in iFile and click it > install.

If you have any questions or issues, just drop me a line.

Published by


Aside from being a champion yo-yoer, I am the full-time computer geek at the American Society of Nephrology. I recently completed my MBA from George Washington University which I am hoping will enable me to finally afford my own bad habits. I also do freelance design, specializing in Flash, PHP, and ASP/ASP.NET.

Leave a Reply

Your email address will not be published. Required fields are marked *