For a while now I’ve been using a Mac as my laptop for various customer projects dealing with iOS using ObjectiveC, Xamarin (aka MonoTouch & MonoDroid) and PhoneGap. With my history of Windows Phone development I always get asked “Why are you carrying a Mac? Did you dump Windows Phone?” and my answer to that is “No”. I still use one everyday but also building for other platforms using different languages.
I know there are some developers who may want to try Windows Phone but are running OSX. In this article, I’ll just outline some of the things you will need to get started with your existing machine.
To build for Windows Phone 8 you do require Windows 8 or Windows 8 Pro OS and your hardware should be minimum 4GB Ram and 64-bit (x64) CPU. My MacBook Pro is a 2011 model 8GB Ram 2.3GHz i7. You can either buy a version of Windows 8 or download a 90 day evaluation version. Below I have other ways to get the software for special cases.
Running Windows 8 on Mac
When you get your copy of Windows 8, you now need to get it up and running and there are essentially two ways to do that either using a Virtualized Environment or BootCamp.
In my case I use Parallels Desktop 8 but you can also use VMWare Fusion. There is a great article on Interoperability @ Microsoft setting up a virtualized environment with your Mac so I won’t go through those steps. The advantage of this is if you need to switch back into OSx because you are switching between projects throughout the day, this makes things a lot faster. The main disadvantage is you need lots of horse power to keep things moving along. If you go this route, I recommend maxing out your RAM.
BootCamp is available in OSX and essentially allows you to dual boot into either OSX or Windows. OSX v10.8.3 officially supports Windows 8 although with a little ‘hacking’ around, you can get Windows 8 working in previous versions. Make life easy and just upgrade 🙂 Here is a screen shot to lookout for
The advantage of BootCamp is it makes things a lot faster and 4GB of RAM is usually enough but I would still recommend 8GB. The disadvantage is if you need to get stuff done in OSX, you need to reboot which could be a time waster.
To build for Windows Phone, you are going to need to download the Windows Phone SDK which includes Visual Studio Express for Windows Phone. These are all free and can be downloaded from http://developer.windowsphone.com. This is actually the site you want to go to get everything Windows Phone.
Setting up the SDK is pretty straight forward but there are some things to look out for depending on environment you are running in. In either environment, the biggest thing to look out for is if you have the right hardware to run the emulator. These are the specs required
- Windows 8 Pro
- A machine with
- Hardware assisted virtualization
- Second Level Address Translation (SLAT)
- Hardware based Data Execution Prevention (DEP)
This article on System Requirements for Windows Phone Emulator details everything out but when you install the SDK, it will let you know if you can run the emulator or not. If you can’t run the emulator, see below on potentially getting test devices.
Virtualized Environment + Windows Phone
In virtualized environment the main thing to be aware of is if you are impatient, running the emulator is not going to be fun. Essentially, you are running a virtual machine (Windows Phone 8 OS) within a virtual machine (Windows 8 OS) so a lot of resources will be used up. My recommendation here is use a real device to debug with (in next section I explain on how you can possibly get some loaner devices to test). If you really want to try and get it working, basically you have to enable Nested Virtualization in Parallels 8
Once that is done, you can run the emulator but again, it’s slow! Here is a screen grab of VS2012 and the emulator running in ‘Coherence Mode’
BootCamp + Windows Phone
Running bootcamp is essentially the same as running full blown Windows. If I’m spending a lot of time in a Windows Phone project (or Windows 8) I’m usually in bootcamp. The only thing to look out for here is making sure you have the right hardware to be able to run the emulator. Other recommendation is have 8GB of RAM, makes life easier!
Getting Test Devices
There are opportunities to get loaner Windows Phone devices out there. Nokia has Developer Ambassadors across North America and two based in Canada, Atley Hunter and Jan Hannemann, and they usually have loaner phones. See this article on What Can Nokia Do For Me which gives more details.
Since Microsoft owns the Windows Phone operating system, they also have local developer evangelists and in Canada it would Paul Laberge, and they have a loaner phone program also. Now be aware, just sending an email or tweeting them asking for a phone doesn’t usually work, so get to know people first and let them know what you are up to.
Getting The Software
The only software that is free is the Windows Phone SDKs which come with a free version of Visual Studio Express for Windows Phone. Windows 8 unfortunately is not free but you can get a 90 day evaluation version to test things out. If you are a start up check out Microsoft BizSpark, if you qualify you can get yourself an MSDN license which includes Windows 8 for free. If you are a student checkout DreamSpark where again you can get software for free.
The only thing you can’t get free is Parallels Desktop 8 but if you are going BootCamp you don’t need it. Recently Microsoft had a $25 deal for Windows 8 Pro, Parallels Desktop plus other goodies but that sold out right away. It was put out by IE Dev Chat so keep an eye out as I have a feeling there may be more deals!
Existing iOS Developers
If you are running OSX chances that you may be an existing iOS developer are pretty high. For those of you, there are some great resources available on getting your iOS apps to Windows Phone. There are even resources available on getting iOS apps to Windows 8 which may also be of use.
So there you have it, if you have a Mac and want to get your feet wet with Windows Phone 8 development it’s a little bit of effort but doable. If you are already doing this and I have missed something, feel free to leave a comment.