Don of the Day

Don of the Day


Adventures in software development with Xamarin and the Web

Software developer, building things with code in sunny Scottsdale, AZ.

Share


Twitter


Do I Need a Mac for Xamarin Development?

Don FitzsimmonsDon Fitzsimmons

One of the first questions to enter the mind of a Xamarin developer.

This question gets asked a lot and the answer is a resounding, YES, you do need a Mac if you plan to write anything that will run on iOS or macOS. It's just a fact. But, this isn't any fault of Xamarin. Apple does not allow compilation on anything but a Mac. That's just the way it is. So, would-be Xamarin developer, what are your options? Do you need to plunk down $2,800 for a shiny new MacBook Pro? Not necessarily.

macOS in a Virtual Machine

It turns out you can run macOS in a virtual machine on Windows. You must have a fairly modern computer that allows hardware virtualization, but it works surprisingly well. In fact, I think this would be the ideal solution for a Xamarin development. You get to work on one physical Windows machine using Visual Studio, and the workflow is quite nice. Builds are fast and you can view your work in the Simulator right there on the same screen with no additional hardware.

There's only one catch: it's technically illegal. Maybe that's not entirely accurate, but it does violate Apple's terms of service. Because of this, I can't personally recommend going down this road, especially if you happen to be in a corporate environment. If you're just fiddling around, trying out Xamarin and iOS development, I doubt anyone will come knocking at your door. Now, I know I'll get questions in the comments about how to do this, but because of the possible legal ramifications, I'll leave it at this: Google it.

Mac in Cloud

Another option that will help you avoid the exorbitant expense of owning a new Mac is to just rent one...in the cloud. There are a few services that allow you to rent a Mac for development use. These services are pretty nice and they seem to understand what developers need because the machines are often pre-loaded with software like Xamarin and Xamarin Studio.

I haven't personally tried this option, but I have talked to some people who tried it and they say it works. The down side to this approach is the cost, at $20 per month for the low-end option, climbing all the way to $49 per month for a dedicated machine, it's not cheap. You might even be able to finance a Mac and pay a similar monthly fee (with interest of course) for that amount. The other down-side is performance. Because your Mac is technically a remote build server, it might take a long time to complete builds in the cloud vs. on a local network.

Buy a Cheap Mac

One thing about Macs, they hold their value pretty well. But, you can still get an older Mac at a pretty low price. Older, but fully capable Mac Minis go for $300 to $600 and because you'll primarily be using it as a build server, it doesn't have to be super powerful. An older MacBook Pro can be had for under $1000 and you can get one powerful enough to run Xamarin Studio if you like. That's how I stared with Xamarin. I used a hand-me-down MacBook Pro (2011 13 inch Core i5) and I maxed out it's RAM and added a SSD. It worked very well. Still does.

The downside of using a Mac, if you plan to use Visual Studio and not Xamarin Studio on the Mac, is that when you run a build, you'll have to test your app in the simulator on the Mac, which isn't very convenient (lot's of context switching). Unless you have a Visual Studio Enterprise license, you can't run the simulator on your Windows machine.

Conclusion

Yes, you will need a Mac to use Xamarin if you plan to build anything for iOS or macOS, but you have options. If you just want to try out Xamarin without buying a Mac, you could go the virtual machine route, but it is a bit sketchy in terms of whether or not it's legal. You could also try a cloud service, but if you get serious about cross-platform development, you'd be better off to just buy a Mac.

Software developer, building things with code in sunny Scottsdale, AZ.

Comments