There’s been a lot of excitement surrounding the iOS emulation scene over the last year or so, recently culminating in the discovery that Apple’s next version of Xcode will allow the installation of unsigned apps compiled from source.
While that might sound like a scary mouthful of developer speak, it’s actually a pretty straightforward process that can be accomplished with free tools and a bit of patience.
Today we’ll be showing you how to install emulators and other homebrew on your iOS device, no jailbreak required. Android users fret not, there are plenty of emulators available for your platform already.
Using Enterprise Certificates
Unless you’ve jailbroken your iOS device, every app you install has probably come from the App Store. It’s widely regarded as the only legitimate way of installing apps on your iPhone, but it turns out there is another way.
Some bespoke applications never make it onto the App Store, because they were never intended for public consumption — like the app Apple uses it in its retail stores to process your order. These apps use a security certificate that’s signed by Apple, which enables them to be installed by means of your device’s Safari browser.
Essentially this certificate is Apple saying, “Sure, you can install this app outside of the App Store,” though these certificates generally have an expiry date, and new certificates need to be applied for and signed, particularly when the app itself receives an update.
Long after Apple decreed that emulators were banned from the App Store, developers realised they could use apps signed with enterprise certificates to bypass this restriction. And so emulation on iOS became viable again, with two emulators — GBA4iOS (GameBoy Advance) and NDS4iOS (Nintendo DS) — dominating the scene.
It should come as no surprise to you that when certificates expire, the apps that depend on them also stop working. Any emulators or other homebrew apps installed via these means that depend on a certificate are essentially against the clock — so enjoy them while you can.
Installing from iEmulators
The process involved in installing these apps is incredibly simple:
- On your iOS device, head to iEmulators or Emu4iOS.
- Pick an emulator you would like and try to install it. It’s a bit of a lottery in terms of what will work, with those most recently updated being more likely to actually work.
- Wait for the pop-up asking you to confirm then hit Install again.
- Head back to your home screen and launch the app once installed. You will be asked to trust the app certificate you installed before you can run the app (iOS software is sandboxed, so it’s not possible for the app to steal all your personal information unless you give it express permission).
I just successfully managed to install the highly in-demand NDS4iOS using this method, though it didn’t work when I tried last month. It’s a cat and mouse game, so check back often and keep trying if you have no luck.
If you’d like more reliable access to emulators and other homebrew tools, you should look into BuildStore, which charges a flat $9.99 per year, per device.
Compiling from Source
Now that the easy bit is out of the way, it’s time to look at the other way of doing things. Apple recently announced a new version of Xcode, the integrated development environment for Mac OS X. Xcode 7 is currently in beta, but it can be used to compile apps from source, sign them for personal use and even send them to a local iOS device.
The benefits of choosing this method are that these apps will never expire. For as long as you’d like to keep them on your device, they will remain there, bugs and all. If you want to install a new version of an app, you’ll need to recompile, sign and transfer it again. It sounds like hassle, but if there’s an emulator or homebrew app you absolutely must have, it’s worth it.
There are limitations, however. Every app you intend to install via this method must be open source, because you’ll need source code in order to compile the app into something your iPhone can run. This makes it impossible to pirate apps using this method, because most commercial software doesn’t use an open source model.
Simply put: you can’t download a pre-compiled .IPA iPhone app and hope to install it using Xcode. Similarly, you can’t sign an app using Xcode for use on other iOS devices. This is a developer tool, for developers, after all.
There’s also a chance that things will go wrong and simply not work, leaving you with little idea how to fix them. In this instances you’re at the mercy of the developer, unless you fancy learning to code (and really, why wouldn’t you?).
Compiling with Xcode 7
You’ll likely need to adjust your settings depending on what you’re trying to compile. This particular tutorial is the installation procedure for popular open source GameBoy emulator GBA4iOS:
- Download and install Xcode 7 from Apple’s Developer portal.
- Launch Xcode, allow it to initialize and complete any leftover installation processes, accept the license agreement, input your root password, and install any additional components when prompted.
- Once Xcode has finished setting up, click on Xcode in the menu bar and choose Preferences.
- Under the Accounts tab, tap the plus “+” button and add the Apple ID associated with the device you want to install the homebrew application on.
- Download the source code for the app you would like to install. If you’re installing GBA4iOS, you can use the following Terminal command to clone the source in your user directory (you can also just visit GitHub or similar and download the project in a browser):
sudo gem install cocoapods; git clone https://bitbucket.org/rileytestut/gba4ios.git; cd gba4ios; pod install
- Download and install CocoaPods if you haven’t already, and use it to settle any dependencies. For more information, read “Problems Building?” below.
- Once everything has downloaded and dependencies are settled you’ll find an “.xcworkspace” and “.Xcodeproj” file in the source code you downloaded. Open either in Xcode.
- Connect your iOS device to your Mac, then in Xcode, set your iPhone or iPad as the target device in the “iOS Device” section under Product > Destination in the menu bar.
- Select the project in the left-hand panel and on the General tab provide a unique “Bundle Identifier” in the box — anything you like. Under “Team” make sure your name is selected.
- If you see any errors below (“No provisioning files were found”), click Fix Issues and wait.
- When you’re ready to go, hit the “play” button in the toolbar and watch it go.
Note: Want to install a different app from a different repository using the command line? Just replace the URL ending in “gba4ios.git” with a different clone URL. Read more about using developer tools like Git for version control.
“Developer Disk Not Found” Errors
Certain beta versions of Xcode are only compatible with certain versions of iOS. Namely, the current version (at the time of writing) throws an error message when trying to build for iOS 8.4 as it has no compatible developer disk image included. To fix this, you’ll need to download Xcode 6.4, then copy the “8.4 (12H141)” as shown below.
If you can’t get anything to build, first ensure you have installed CocoaPods, which should help settle any dependencies your project may have. Open Terminal and type
sudo gem install cocoapods followed by your password. Wait for the install process to complete, then change to the project’s directory (e.g.
cd /Users/username/Downloads/gba4iOS/) and run the
pod install command.
Lastly remember that Xcode 7 is currently in beta, and things will probably break here and there. you might find that searching for any errors you encounter provides some workarounds.
Open Source Emulators
Here are a few open source emulators you might want to try compiling from source:
- Nintendo DS: NDS4iOS
- Game Boy Advance: GBA4iOS
- Game Boy Color: Gameplay Color, Gearboy
- Sony PSP: PPSSPP
- Nintendo 64: N64iOS
- Super Nintendo: SNES4iOS, MeSNEmu
- Sega Master System: Gearsystem
- Nintendo Entertainment System: Nescaline, Nestopia
- Arcade: iFBA
- MS-DOS: Dospad, iDOS
- Multi-platform: Provenance
Feel free to add any more in the comments below — and good luck, this can get quite complex.
Have you installed any emulators on your iOS device? How did it go?