Apple just opened iOS up a little bit. It’s now possible to sideload open-source apps — emulators, for example — onto an iPhone or iPad without paying $99 per year for a developer license.
But the doors have just opened a crack. iOS still doesn’t offer the full sideloading support Windows 10 and Android do without jailbreaking. But you can now install open-source apps like the GBA4iOS emulator, even if Apple won’t allow them on the App Store.
This is just a happy side effect of a change in Xcode 7. Previously, you needed a $99 per year developer license to build an application in Xcode and put it on your own iPhone or iPad. This sideloading capability has been reported as a new feature in iOS 9, but it’s really just a new feature in Xcode 7. iOS 9 isn’t even necessary.
You no longer have to be a member of the Apple Developer Program to do this, however. And Xcode is available for free to Mac users. This means you can build and install any app you want onto an iPhone or iPad — as long as you have its source code. Yes, those are some restrictive limits, but they mean open-source apps Apple doesn’t like can be installed without jailbreaking. Many video game emulators are open-source.
To do this, you’ll need:
After downloading Xcode from the Mac App Store, you’ll need to launch it and add your Apple ID. Click the “Xcode” menu, click “Preferences,” click the “+” button at the bottom of the Accounts pane, and enter your Apple ID details.
There’s currently a bug you may encounter. If your Apple ID was previously part of the developer program but no longer is, you may see an error message saying, “The selected team does not have a program membership that is eligible for this feature.” If you do, just create a new Apple ID and sign into it in Xcode. You need to use an account that’s never been part of the Apple developer program in the past, or one that currently has an active membership — not a lapsed membership. Apple will hopefully fix this soon.
You’ll now need to get an app’s source code into Xcode so you can build it and deploy it to your iPhone or iPad. Download the app’s source code and perform any required setup the app requires.
We’ll use GBA4iOS as an example here. To download its source code and perform the required setup, open a Terminal window, copy-paste the following command, press Enter, and wait for the process to finish.
sudo gem install cocoapods; git clone https://bitbucket.org/rileytestut/gba4ios.git; cd gba4ios; pod install
You’ll then need to open the project or workspace in Xcode. In Xcode, click “File,” select “Open,” and browse to the project or workspace file.
If you ran the above commands after opening a new Terminal window, you’ll find the gba4ios folder in your home folder, and the project and workspace files inside it.
Connect your iPhone, iPad, or iPod Touch to your Mac with its included USB cable. You can then click the “Product” menu in Xcode, point to “Destination,” and select the physical device as its build destination.
You’ll now need to generate a unique code signing signature for the app before you can build and install it. Click the project’s name on the left, enter a unique name in “Bundle Identifier,” ensure your name is selected as the “Team Name,” and click “Fix Issue.”
You’re now done. Click the “Play” button at the top-left corner of the Xcode window. Xcode will build the app, install it on your connected device, and launch it.
If you see an error, Xcode has had a problem building the app. There’s a problem with the source code you loaded that needs to be fixed before the app will build and install. Assuming there are no errors, it should just work.
This isn’t a complete solution for everyone who wants sideloading on iOS. It’s a rather involved process most people won’t want to use, doesn’t work with closed-source apps, and requires a Mac. It also won’t allow you to run certain types of apps — you can only use this to install apps that run within Apple’s sandbox. Jailbreaking is the only process that allows you to escape the sandbox, so not every app available to jailbreakers can be installed in this way.
Image Credit: LWYang on Flickr