This blog post was authored by Andrew Byrne, a Senior Content Developer on the Windows Phone Developer Content team.
Today I’m going to share some of the tools I use to help me build and ship quality apps. I’ll walk you through each phase of my app development process and describe the different tools that I use in each. The main sections of this post include the following:
A great app begins with a great idea. Perhaps it’s a personal pain point or missing feature on the phone that irks you. Or maybe you see a gap in the market, or you might even be bringing your app over from another platform. Whatever your reason is for developing an app for Windows Phone, keep a record of your ideas, sketch out your designs, and make a plan.
I do most of my app inventing and planning in OneNote. I find it easy to organize each of my project ideas into a section in OneNote. One or more pages are tabbed together for each phase of development. I save it to SkyDrive and then it goes everywhere with me. With a pen-based tablet, I can also sketch right onto a page and save a few trees along the way. As I move toward an idea that I want to take seriously and actually build into an app, I reach for more sophisticated ways to capture designs.
While a great idea is the genesis of an app, the app’s success is often determined by how appealing it is to the user. There is a lot of choice in the Store in each app category. Your app should be a pleasure to behold, and easy to use.
The Design tab on the Dev Center is where you’ll find all things design for Windows Phone. It takes you through design principles, app structure and navigation models, and lots, lots more.
An early stage in my app’s development is prototyping. I grab the Sketch Template, print out a few sheets, and start walking through the app screens I want to create, thinking about the flow between pages. Because I am a coder at heart, I drop quickly into the code editor and produce my first prototype.
The presence of some ugly, unintuitive icons in the app bar of an app can be very off-putting. So, I typically hunt around for free icons. If you have any copy of Visual Studio installed, you’ll find a set of icons for your app on your machine under:
Microsoft SDKs\Windows Phone\v8.0\Icons
Bing is also a good resource, and our friends at geekchamp have done a great job compiling a list of Windows Phone icon sets: http://www.geekchamp.com/marketplace/browse?category=icons
Here’s a list of additional Design resources for Windows Phone.
Visual Studio and Blend are the main tools that I use for development. Here are some of the other tools, add-ins, and features I use to help me code my apps.
Manage your app with Team Foundation Service
As your app development experience grows, you’ll have more code and more projects and will want a way to manage this code, including the history of how it has changed over time. Source control is the term given to the process of managing changes to your code. There are lots of products available to help you with this. They all provide functionality to manage the revisions you make to your code, and involve storing the history of changes, as well as the changes themselves, into a repository.
When I started my Windows Phone app development, I used an open-source source control solution for managing my code. I later moved to Team Foundation Service. Team Foundation Service is an online version of Team Foundation Server (TFS), a product from Microsoft that can handle source control as well as lots of other application lifecycle management tasks. By moving my source control into the cloud, I am confident that my code and revisions are backed up and I can access all my projects from anywhere through the web interface. Team Foundation Service is free for up to five users and also integrates nicely with Visual Studio.
You can learn more at http://tfs.visualstudio.com.
Earlier I talked about planning my app development in OneNote. Now that I am using Team Foundation Service, I have the option to use its features to track my app development progress.
Localize with the help of the Multilingual App Toolkit
A great way to expand the reach of your app is by adding more languages, as called out by Bernardo Zamora’s recent post, Tips for localizing and monetizing your app for Windows Phone users. Dan Zucker also gave us two great posts on the subject of localizing your apps (part 1, part 2). So, armed with this knowledge and the Multilingual App Toolkit (MAT) I was able to add French, German, and Spanish into one of my apps in no time. My plan is to extend the number of languages and to update more of my apps to become more appealing globally. Here’s what the Multilingual Editor from MAT looks like.
The Multilingual App Toolkit installs as a standalone tool and also integrates with Visual Studio. One cool feature it offers is the ability to create pseudo-localized strings that you can use to see whether spacing on your UI elements is reasonable, before you even try to localize to a specific language. You can then use the tool to perform machine translation of your app or use the output to work with a localization vendor to refine the translations. Check out the following links for more information:
Tips for localizing Windows Phone apps – Part 2
Multilingual App Toolkit Extension for Visual Studio
Manage libraries and tools through the Package Manager Console
Another tool related to coding that I want to mention is the Package Manger Console. This nifty tool built into Visual Studio interacts with NuGet to manage libraries and tools. For example, if I want to use the powerful Windows Phone Toolkit in my app, I just open the Package Manager Console and do the following:
Adding, removing, and updating libraries and tools has never been so clean and easy!
More resources for coding tools
I want to share some more resources that are also useful for anyone coding for Windows Phone. The first is our set of samples. They’re a great place to start when you are looking at a particular feature for your app. My team has shipped over 80 samples on Code Gallery and you’ll find lots more from the community too.
The Windows Phone developer ecosystem is growing rapidly, and so too is the number of even more great tools, frameworks, and other resources. We’ve put together a list of tools and third-party resources that you might find useful:
Developer downloads for Windows Phone
We’ve said that a great idea is the genesis of a great app, and design will help with its uptake in the Store. App quality helps you avoid bad ratings and promote your reputation as a developer who cares. So, as I code, I test, and test often. I test in the Windows Phone emulator, on devices, and I also do beta testing. I use the following tools along the way.
Windows Phone Emulator
The emulator is a great way to start testing your app. Deploying your app and running it on the emulator is fast. It supports all phone resolutions, and debugging is seamless. You can change the language in the emulator settings to see your app in one of the languages that you translated it to. Expanding the emulator menu bar located to the side reveals an additional set of tools that help you test other scenarios in your app. There’s also a Screenshot tool built in, which comes in very handy when it’s time to harvest some screenshots for your app submission into Dev Center.
I spend a lot of time in the emulator, but I never lose sight of the fact that it is still an emulator that runs on more powerful hardware than the devices on which my app will run. So, when I feel I have something ready for testing, I deploy to a real phone. For an overview of how to deploy your app directly from Visual Studio, or using the App Deployment Tool, see How to deploy and run a Windows Phone app.
You’ll find all the details in our Windows Phone Emulator docs.
Where did I get the snazzy skin for the emulator? I used the WP8 Emulator Skin Switcher available on CodePlex. Some tools can be fun as well as useful, you know.
X-ray vision for isolated storage
If your app stores data, that data is stored in your app’s isolated storage which, as its name suggests, is storage on the phone that is isolated for each app. Your app can’t see other apps’ storage, and vice versa. However, you want to see your app data, and that’s where tooling comes in. For example, if you write some configuration or settings data to a file in isolated storage, you want to be able to examine that file. The Windows Phone SDK comes with a command-line tool called ISETool.exe that you can use to browse your app’s storage as well as to modify it. You can read all about it in How to use the Isolated Storage Explorer tool for Windows Phone.
I’m more of visual person, so I like tools that let me browse the storage. Others have stepped up to the plate with some great free tools, and I should note that all of the tools work with your app running on the emulator or on a developer-registered device.
Isolated Storage Explorer is a free Visual Studio extension that lets you browse your app’s storage. You can import and export files to and from isolated storage. However, it doesn’t work with Visual Studio Express for Windows Phone.
Simulate real life with Simulation Dashboard
If my app uses a network connection, I want to make sure I know how it will handle issues in the wild related to the type of network connection my users have. Enter the Simulation Dashboard for Windows Phone. This is a tool window inside Visual Studio that you can use to test your app with a poor network connection, test what happens when the lock screen comes down, or if an interruption occurs.
I’ve given you a brief intro to some of the tools I use when testing my apps. Craig Horsfield produced three great blog posts recently (part 1, part 2, part 3) about testing your Windows Phone app that dive deeper into this space. Pratap Lakshman gave us a whole series of posts about Memory profiling your app for performance, all of which I encourage you to (re)read.
Beta testing, AKA Phone a friend
Beta testing apps is the process of submitting your app to the Store so that it’s hidden from the general public, yet accessible to people you have designated as beta testers. In the early days of Windows Phone, I was reluctant to submit my apps for beta testing because the process was cumbersome. In recent months, the process has improved vastly and beta testing is now part of the checklist of things I do before shipping an app. Turnaround times are improved and now you can also update the app and the list of beta testers at any time. I’ve found numerous issues this way, without the embarrassment of the general public finding them for me.
For more info, see Beta testing your app and in-app products. Remember to thank those testers for all their hard work making your app better in every way!
Windows Phone Store Test Kit
Another tool that’s invaluable in making sure you pass app submission is the Windows Phone Store Test Kit. Here’s a screenshot, in case you’ve never seen it in action.
This tool, available inside Visual Studio under the Project menu, is a set of automated and manual tests. Make sure to build a release version of your app and then run the kit. It will tell you how ready your app is for app submission. For example, the automated tests evaluate the basic characteristics of your app, such as app size, and the presence and size of app images. I find the Start Windows Phone Application Analysis particularly invaluable. You can use it to profile your app and see how responsive it is, the memory footprint of your app, and a whole lot more.
At this stage of the app development process, I begin to shift my focus to the Dev Center. Its tools help me deploy my app to the Store, monitor it, and monetize my efforts if I have decided to make the app a paid app, and to add in-app purchases or include ads.
Support your users
I make sure my users have a way to contact me, so that they feel connected. I make sure to monitor my email addresses and respond to everyone who sends me feedback. I actually create an email address for every app that I ship. Great idea at the time, but it has led to me monitoring lots of inboxes. Thankfully, I can configure my outlook.com account with multiple email accounts, so I can view them all at once and reply to people using the address to which they sent the feedback. In hindsight, I should have created one support email address for my publisher name, such as firstname.lastname@example.org. You should consider what works best for you.
Consider having a web presence
Monitor your apps
The reports available on the Dev Center dashboard of your account are great for monitoring downloads, purchases, and crash reports. I check in on the site regularly. However, in the mobile world we live in, I find myself using the Dev Center app more and more. It is the official app from the Dev Center folks and it delivers your app info directly to your phone. Everyone loves graphs, and it comes with lots of them.
You can download the Dev Center app here:
Congratulations! You’ve come this far and used tooling along the way to make sure your app is in good shape to be submitted to the Store and reach your audience. I’ll leave you with my last tool in this set – my checklist. I actually consider it one of the important tools in my toolbox and I use it throughout my app development process; it reminds of everything I need to do. You may find yourself doing some of these steps in a different order and that’s fine too.
What’s in your Windows Phone toolbox?
Great post, this is very useful indeed.
I was delighted when I read about TFS, but after signing up I wasn't able to connect it to my "Visual Studio Express 2010 for Windows Phone", it won't install the required GDR.
I installled the 'full' Visual Studio Express 2010, but that doesn't have or even see my Windows Phone dev environment.
Any ideas on how to get TFS integrated and usable from Visual Studio Express 2010 for Windows Phone?
Thanks for you time in any case,
I had no idea making an app could be that simple. Note I said simple, not easy. www.geekchoice.com/washington-dc
Is that last image available in a text-form or higher resolution? It is barely readable.
No apologies needed at all, and I am delighted you added to the list. You were absolutely right, the question at the end was an intentional invitation to the community to add to the list. Thanks very much for contributing! I've used Metro Studio and XAML Spy along the way. All great tools. I limited the set I wrote about, but there's a sea of other brilliant tools and frameworks out there and I am looking forward to seeing what else gets mentioned.
Sorry that it looks like we got our wires crossed - I was offering my entries as answers to your final question "What’s in your Windows Phone toolbox?", having taken that question as an invitation to the community to add to this list. I think in the end we've ended up on the same page.
Great post - please keep it updated as things evolve.
Thanks for the feedback. The purpose of the post was to call out just some of the tools available to developers. It was never intended to be a definitive list and it is great to see the community chiming in with more excellent tools to make a dev's life easier. Keep them coming!
Another good one is Syncfusion's Metro Studio (www.syncfusion.com/.../metrostudio) Metro Studio is a (free - yay!) combination Icon Library / Icon Editor which has some very nice tools for icon sizing/working with themes, and exporting as images or as XAML Paths, which makes using the edited icons in your app a breeze. For those working in HTML/JS/CSS, it also includes export as sprite functionality.
You may have missed a big one with XAML Spy (http://xamlspy.com/)- which is extremely helpful for answering the questions "my XAML is doing what exactly?" and "how would my app react if I was to tweak my XAML thusly?" It also includes a local storage explorer, among several other features.
XAML Spy's additional value is that it bridges over to Windows Store Apps, WPF Applications, and Silverlight Apps. While not free, if you're serious about development on the XAML stack, this tool is IMHO an invaluable investment.