Getting Started

Learning to use Substrate is similar to learning to use any other programming library.

1. Download Components

In order to do development, you will need both a compiler for your device (provided by the vendor) and the header files and libraries for Substrate.

...for iOS

In addition to Apple's iOS SDK (which will require a free registration on their website), most developers work using a third-party framework called Theos.

Get Started with Theos

...for Android

Google provides both the Android NDK (for native development) and the Android SDK (for everything else) on most platforms; we integrate into these.

Read about the Substrate SDK

2. Watch Introductions

Over the years, I've given a number of talks; most of them are long (an hour), but a few of them are sufficiently short that I recommend a quick watch.

...from Ignite Foo

In 2010, I was invited to Foo Camp, where I gave a fast (five minute) talk summarizing the state of software modification using Substrate on Cydia.

Watch on YouTube (Ignite Sebastopol)

...from Android Open

In 2011, I announced Substrate for Android at the O'Reilly conference Android Open, showing demos of modifying a closed-source Honeycomb tablet.

Watch on YouTube (O'Reilly Media)

3. Read Documentation

While there are many more things that could use a good exposition, this website does contain a lot of information about developing with Substrate.

...about Injection

On each supported platform, Substrate offers a way to get your modified code loaded into the processes it wishes to modify.

Research Filter Configuration

...about Runtime

Substrate provides core APIs for each of the target language runtimes it supports, allowing your code to make its intended modifications in memory.

Browse API Documentation (C ) (Java )

4. Join the Community

Whether they actually help out or simply provide a shoulder to cry on, having other developers around when you run into problems is absolutely critical.

This is especially true for new platforms, such as Android; if you don't tell us about the issues you are having, trust us: we don't know about them.

...on IRC

We have a public channel on saurik's IRC server: irc:// (note: this is not a web page; you cannot use HTTP to access it).

Mibbit (Web Client)