Is Mac OS X in a VirtualBox VM suitable for iOS development?

Solution 1:

If this is a hobby and you are not planning on releasing any apps to the app store, and you can tolerate the slow performance and don't care about running on real devices, then don't worry about it. However, if you are creating a business the it is essential to run on real hardware. Any low end Mac (MacBook Air 11", is my current favorite) will blow away any virtual machine.

I have a fairly simple app that runs fine on my iPad and iPod Touch, but has all sorts of graphic anomalies in the simulator.

Solution 2:

Virtualbox on Windows is definitely not suitable for this, as Windows itself is quite resource-hungry, Virtualbox lacks many configuration options and even if you can get it to work it's going to be quite unreliable, not to mention that you can't pass through USB devices.

What you can do (and I have done it with much success) is use a lightweight Linux installation as a base for QEMU which is a Virtualbox alternative, with much more configuration options, including the ability to emulate the Apple SMC and its "OSK" string (you won't need shady "hackintosh" kexts) and it has reliable USB pass through (I successfully restored iOS devices and installed apps on them).

In the end, with my solution I am able to successfully run Yosemite with 3,5GB of RAM (out of the 4GBs of my computer, and by tweaking the host system I could probably push it even more to 3,7GB), using the two cores of my CPU, with reliable USB pass through and no tweaking required (the emulated hardware is close enough to a real Mac that the OS boots directly without any kernel command line parameters or extra kexts). An SSD is a must have though, a hard drive will be bloody slow (that's also true for a real Mac). Graphics are still slow (and it's even worse in Yosemite) but besides the login screen which takes a good 5 seconds to render due to its transparency, everything else is pretty usable, and it's enough for occasional (hobby) iOS development until you get enough experience to make profitable apps in which case it's still better to buy a real Mac as this setup may break at any update.

I posted a detailed guide on my blog about how to create a Yosemite VM, feel free to check it out if you're interested.