Getting started
New to developing for jailbroken devices? Welcome, it's fun and challenging! Hopefully you already have some experience with Objective-C. You will want to get familiar with Cydia Substrate and Theos, and you can study some Open Source Projects to see how existing tweaks work. See Getting Started and also take a look at Best Practices and Pitfalls. If you're looking for a more thorough and sequential tutorial, take a look at the book iOS App Reverse Engineering and its forum iOSRE.
How to ask for help: There are tags for "jailbreak", "Cydia", and "Theos" on Stack Overflow, a site for programming questions in general; feel free to ask there as well. On Reddit, there's r/jailbreakdevelopers. For non-development-related troubleshooting questions, try r/jailbreak.
Overview of contents
Frameworks:
Applications:
System directories:
Other parts of iOS:
By iOS Version
- New in iOS 15: Updating extensions for iOS 15/16
- New in iOS 14: Updating extensions for iOS 14
- New in iOS 13: Updating extensions for iOS 13
- New in iOS 12: Updating extensions for iOS 12
- New in iOS 11: Updating extensions for iOS 11
- New in iOS 10: Updating extensions for iOS 10, ControlCenterUI.framework, UserNotificationsUIKit.framework.
- New in iOS 9: Updating extensions for iOS 9, Updating extensions for iOS 9.3.3, Breadcrumbs.
- New in iOS 8: Updating extensions for iOS 8, AssertionServices.framework, SBSRestartRenderServerAction, FBSSystemService, UIAlertController.
- New in iOS 7: Updating extensions for iOS 7, Debugging on iOS 7, Downgrading iPhone 4 from iOS 7, BiometricKit.framework, TouchID, UIBackdropView, AVFlashlight, SBAppSliderController.
- New in iOS 6: BackBoardServices.framework, backboardd, ChatKit.framework, BKSProcessAssertion.
- New in iOS 5: SBIconView, CKMadridService, SBAppContextHostManager.
- New in iOS 4: SBAppSwitcherModel.
Development tools:
Extensions:
Other articles about development:
Translated articles:
Editing this wiki
- If you have anything at all to contribute, feel free to do so!
Some ideas for information to contribute:
- Add more projects to the list of Open Source Projects, or fill out details on that page.
- Expand Getting Started for new developers - what do they need to know before beginning? How do they set up a development environment on OS X, Windows, and Linux? What are common beginner's mistakes that they should watch out for? How to reverse-engineer parts of iOS for writing tweaks? How to debug with GDB and learn about memory management?
- Update articles that haven't been significantly edited in a few years, such as Seatbelt and Crack prevention. See Special:AncientPages for a list of articles that haven't been updated recently.
- Help Cycript explain why Cycript is fun - syntax highlighting, injection, auto-completion, generally exploring around.
- Make a page that documents a class or framework you're familiar with.
- If you've developed a library that other developers can use or write addons/plugins/extensions for, make a page that documents your project.
- Update Xcode with better information about how to build apps for jailbroken devices.
- Make the homepage more useful! For example, add links to good pages that are hidden/buried deep within the wiki.
- The following articles are linked from nowhere in the wiki: Special:LonelyPages - you can fix that by linking them somewhere.
- Browse around the wiki to find pages that might need updating.
- Write an article that is in demand: Special:WantedPages.
- Translate an existing article into a non-English language. To do so, make a new page with this name format:
Article name/[language code]
. Here's the list of language codes. For example: PreferenceLoader/de or Libactivator/sv.
Good Edit Candidates
If you're looking for some articles to work on that don't require a ton of in-depth RE, or are important yet woefully outdated, the following articles are good candidates:
Contribute to The Apple Wiki
The Apple Wiki is made by people like you. If you know of something that should be here, but isn’t, we invite you to go ahead and add that information. If you don’t know wikitext syntax, don’t worry - just start typing anyway. It’ll appear in the recent changes list, where others will see your work, and can clean up your edits.
You can do that by first logging in or creating an account, and verifying your email address. Then, you can click
Edit at the top of any page, or the
button to the right of a section, to start editing.
If the topic doesn’t already exist, you can make a new article. If you see a red link, simply click it to start editing. If you’d like to start a new topic, first try searching the wiki, just to make sure it isn’t already touched upon elsewhere:
If you’d like to create a new page, you can get started with the following form:
Enter the exact filesystem path. For example, /System/Library/CoreServices/SpringBoard.app
Want to help out, but don’t know where to start? Here are some ways to find articles you can start out with:
- Check the stub articles category, in addition to the list of short pages, to find articles that have been created, but don’t have sufficient content yet.
- Check the articles in need of updating category, in addition to the list of ancient pages, to find articles that once had great content, but now are outdated and need some love.
- Browse the wiki for topics you’re interested in, and look for red links. Click the link to start creating that page.
- Take a look at the list of categories at the bottom of an article, for instance Applications on articles documenting apps. See if any could do with updates.
- Application and software articles can always do with a look-over to ensure the information is up-to-date. If an app has been updated, increment the version number in the right-hand “infobox” sidebar, upload new screenshots, and update the icon if it’s changed.
- Filesystem articles can similarly always do with a look-over to update them with changes made in recent OS versions. We invite you to create articles for operating system files and folders that aren’t yet documented.
- While not as useful, you can also take a look at the list of wanted pages. This is less useful because it's not quite as organised.