Thursday, January 6, 2011

Android vs WP7 for developers - a case study

Introduction

I started my mobile apps "development career" last year by publishing a couple of tools for the Windows Mobile 6.5 platform. I quickly grew fond of the whole apps concept - low threshold for getting started and small programs meaning short projects time-wise. Also the platform took care of the distribution and monetary transactions for me, so that I could care about the thing I find most fun - coding.

It didn't take very long until I realized I had to start thinking about other platforms, though. The Windows Mobile 6.x platform (WM6.x for short) was already lagging behind Apple and Google user experience-wise, and the nail in the coffin came when Microsoft announced Windows Phone 7. Everyone who've done their research know that the Windows Mobile 6.x platform is as different to Windows Phone 7 as Android is to iOS, so although I was already into Microsoft technology, I knew the choice for my next mobile operating system was anything but given. I had already ruled out Apple iOS for several reasons not relevant here, so my choice was between the rising star of Android from Google, and Microsoft's new undertaking in the cell phone world - Windows Phone 7 (WP7).

Microsoft seemed very serious about their new venture. High-ranking Microsoft-guys were preaching the awesomeness of the new platform on conventions and in media all over the world. It seemed like they put a lot of resources into developing the framework and the IDE. At the same time the developers on the WM6.x like me, were given extra attention and information and after a while even offered to get a physical WP7 phone before the official release. It seemed like the path of least resistance to move over to WP7, even though I had to learn Silverlight, but at the same time my friend had bought a HTC Hero phone. Which I found quite cool.

The Android platform, which HTC seemed to embrace here in Scandinavia, was quickly growing in popularity. iPhone had been the sole market leader for a couple of years and I think the public wanted something new and fresh. Android could seem to be exactly that. They had the sleek look and feel of the iPhone, while taking the technology a step further, which entices us geeks. I was beginning to suspect that this over time could be the new market leader or at least compete with the iPhone. I had done a bit of Java programming at the University, so I wasn't afraid to try that again, although I knew I had to read up on the framework.

The technology wasn't a big factor in the decision I had to take. First and foremost I wanted to make money. Most money with least effort - that was basically my goal (isn't everyone's?). Technology is of course a factor when it comes to effort, but most important was which phone was most attractive to the public, hence giving me the largest market. This was of course not possible to say when WP7 wasn't even in the stores yet. I could only assume that Android would have the market lead for at least half a year after the launch of WP7, if not longer (or forever). But money wasn't all - it needs to be fun as well. I'm doing this on my spare time, and if it's not fun, I won't do it. Could WP7 make up for the lack of market share with the fun factor in the development process?

This leads me to the topic of this blog. I decided to do a test. I mean, you can't know which chocolate tastes best before you've tried both, right? (You may quote me on that). For the test to be fair, I decided to make the exact same application on both platforms, and see where it got me. The application had to be simple so that I could do it in a short period of time, but not so simple that it didn't put the framework and IDE to a test. I was going to note down my experiences during the process and write about the result here. I decided this some time in September, and the 20th of November I released the app on the second platform, completing my project.

The App

I decided to go for a simple game I had seen the likes of at the iPhone platform and also on Android: A flag and country quiz. It would require some graphics, some business logic and probably some storage. Enough for a basic test, but far from a thorough. I would not be leveraging any of the more advanced hardware or even a network connection or sound device, but I wanted to be done in a couple of months - and I had to learn not one, but two new frameworks. But most important - the complexity of the programming (or lack of it) is not directly relevant to sales numbers - the prime factor I wanted to compare. This simple game should suffice, was my conclusion.

A quick overview of the game, which is called "Flags and Captital Quiz" on both platform:

There are five game modes:

  • Guess country name from the picture of a flag
  • Guess the flag from the name of a country
  • Guess the capital from the country name
  • Guess the country name from the capital
  • A mixed mode which alternates randomly of the four above
All five modes each give four alternatives for the answer, so the user simply picks one of them by clicking on it. A couple of screenshots:

The IDEs

This chapter describes the differences in the extended IDEs, meaning both the editor, compiler, debugger and emulators.

Android

For those of you who've never developed in Java, the preferred IDE is called Eclipse and can be downloaded for free at www.eclipse.org. In addition you'll need the Android SDK from Google which acts as a plug-in in Eclipse. It will also provide you with the Android emulator to test your software without a physical device.

The installation went smooth, nothing to complain about here. Eclipse in itself is also a pretty smooth IDE. It has some semi advanced features that Visual Studio didn't have until the 2010-version, which is quite impressive. I'm thinking of things like code inspection reporting instantly of non-used variables, syntax errors and more. It also have some refactoring features but I haven't delved into these. The debugger has all the functions you'd expect, although I do have some complaints on usability here. I find inspecting variables and object hierarchies run-time easier in VS2010, but it might be that I haven't understood properly how to use it yet. But all in all the feel of Eclipse is good. It's fast and feels light-weight even though it isn't.

Where Eclipse comes short compared to Visual Studio is in designing UI. There simply is no designer in Eclipse. You need to rely on your XML skills and ability to visualize XML as UI components. Or use a tool like DroidDraw. But even the combination of Eclipse + DroidDraw falls way short of the design capabilities of VS2010 working with Silverlight projects.

Visual Studio 2010

If I would describe Visual Studio 2010 in one word, I would say huge. It's huge in all aspects: Installation process, disk footprint, runtime footprint, features, everything. But as long as you have a machine capable of hauling it, it's a dream to work with. I just had to make space for the 3 GB of disk requirement on C: before I could start (You do need 3 GB free space on C: even if you chose to install it on D:, meaning my tight fragmentation strategy of the C-partition failed).

Visual Studio have basically all the same core features as Eclipse, so the coding experience itself is not much different. There is one aspect I found slightly better in the Microsoft world, and that's the phone emulator. It's better integrated in the IDE for natural reasons (Microsoft produce both the IDE and the emulator), and this results in a lightning fast and stable launch process. The first boot of the emulator takes time, but after it is up an running, I literally only wait two seconds from I've made a code change and hit F5 (debug), until it's up and running in the emulator. Not once did I face any problems running the app, while with the Android emulator I experienced increasing problems towards the end of the project with getting Eclipse to connect to the Android debugger. Frequent restarts had to be done of both Eclipse and the debugger.

Ignoring the slight problems I had with connecting the debugger to the Android emulator, the major difference between the IDEs is the designer (or the lack of in the case of Eclipse). Hard-core coders who frown upon using visual tools to do the design have no respect with me. I use whatever tool gets the job done quickest and with best result. If drag-and-drop creates code 10 times faster than I could write it, no matter how much intellisense support there is in the IDE, I use drag-and-drop. But more important than coding speed itself is how much easier it is to design. Our brain (or the right hand side of it at least), responds much quicker to concrete visual modelling than abstract representation in the form of XML or XAML. This is where the real time-saver is. You instantly see why the three Images underneath the ListBox with four icons is a good or bad idea - no need to compile and run first.

Summary

EclipseVisual Studio 2010
Instant code analysis feedback is good in Eclipse

Changes you do in the left view instantly results in XAML code change in the rigght, and vice versa.
Lightweight / fast / responsive
Quick and stable emulator
Free
Great visual designer
No visual designer
Huge footprint

Update 7th Jan: I was noted that the development tools for WP7 are actually also free - the Visual Studio Express and Blend for Windows Phone 7 are free of charge. They can be installed alongside any other preexisting Visual Studio installation.

The Android emulatorThe WP7 emulator


Boots fast, launches programs fast. Solid. Had some problems connecting to the debugger from time to time, but might be a configuration-problem.


Also solid. The emulators are really not what make the difference.

The development process and the APIs

In this chapter I will describe the development process session by session on the two platforms, emphasizing the events that stand out as positive or negative. Finally I will summarize what I find good and bad about the frameworks (APIs) that is the Android SDK and the WP7 / Silverlight framework.
  • For Android I used the Android 1.6 SDK
  • Windows Phone 7: Standard WP7 project based on .NET 4.0
For those of you who are confused about the Windows Phone 7 SDK stack, this is the gist of it
  • C# is the programming language
  • .NET 4.0 is the core libraries (non-UI-functions)
  • Silverlight is the SDK which enables rich UI for web, Windows and WP7, but:
  • The Windows Phone 7 SDK is a subset of Silverlight and .NET 4.0 - not all functions and UI elements from Silverlight 4 or .NET 4.0 exists on WP7.

Android

#Time spentWhat
1 1h 30min Collected and organized data: Flags, capitals and countries from the CIA World Factbook
2 3h 20min Read basics on Android development, learning Eclipse better
Google have documented Android well. Well structured and written.
3 4h Worked on designing and implementing code for my first pages (Activities). Spent time both in XML and in Java code. Wasted a lot of time trying to figure out how to pass parameters with intents. Ended up using global variables instead.
Soon got tired of XML-juggling. Little IDE-help here.
4 2h 30min Spent most time trying to figure out how to make buttons turn red and green after an answer had been made. Tried three approaches before finally finding the right answer on the net (Hint: Drawable.setColorFilter()).
5 2h 30min Working on business logic. Three out of five quiz modes complete.
6 1h Mixed mode implemented.
7 1h 30min Settings screen (activity) implemented. Functionality for saving/loading said settings still remain.
8 4h Implemented practice and score mode. Textual "fun" feedback on the results. Half done with high score list functionality
Getting problems attaching to the debugger more often. Restarts requried.
Annoyed by the fact that hitting F5 when an XML file is in focus, the app is not launched, but instead Eclipse tries to launch XML files in a special manner, effectively forcing me to clean the entire project and rebuild. Wasting some time on this.
9 4h Spent some time drawing icons. High score list implemented. Icon swapping in high score list. The project is starting to show signs of a lot of copy-pasted code in the activities. Probably because of bad design - for instance, Custom components is a conecpt I did not bother to read up on.
10 3h 30min Last mode, flag from country, implementation beugn. Most demanding activity XML.
11 3h Completed flag from country mode. Implemented saving and loading of settings and high scores with JSON serialization.
Saving and loading user settings is well supported and easy to use in the Android framework
Object serialization in the Java world could have been easier (used for high score object hierarchy). I used standard org.Json-functions. There is a library called Gson that probably could have made my code prettier, but at this point I did not want to introduce additional third-party libraries in my project.
12 1h 30min Completion of diverse functionality
13 5h Some bug-fixing. Fixed memory leak (image data was not freed). Created application icon. Published at Saturday 21th of October..
The publishing process went smooth and was straight forward.

WP7

#Time spentWhat
1 1h 30min Started designing the pages (Activities on Android).
Finding the WP7 documentation pages slightly harder to navigate than the one for Android as I try to read up on Silverlight design concepts.
2 1h Trying to apply databindning.
Having worked with databinding on WinForms, doing the same on Silverlight is a step back. You suddenly need to write XAML and learn meta-syntax in quotation marks that I still haven't quite figured out. Copy-paste is your friend.
3 3h 30min Button colouring, flag animation, practice mode and score mode. Note: I did not implement any animation on the Android version, so I'm slightly deviating from the "same app, different platform" concept of my review here, but I couldn't help myself but leverage the animation capabilities of Silverlight.
The animation features in Silverlight are awesome. Takes a bit of learning, though.
4 1h 30 min High score logic implemented (no storage)
5 1h 30min More work on the high scores screen. Refactoring pages a bit - creating UserControls for the image buttons used in the high scores view and a control for the score bar in the quiz pages
6 3h Applcation icon included in project. Struggled a bit with getting it to display properly. Turned out it had to have the build action property set to "Content". Save and load of high scores. Support for tombstoning (when app sleeps in background) implemented.
The tombstoning concept was a pain in the ass. No such thing on Android, but this is a consequence of the non-multitasking nature of WP7, I guess
Object serialization is fortunately a breeze in .NET, which helps when saving object state when tombstoning.
8 5h Refactored all quiz mode pages to user controls. Now mixed mode was implemented in half an hour. Flag from country mode implemented
The App Manifest is auto-generated as opposed to on Android. Meaning the compiler among other things auto detects what kind of hardware resource your application will be utilizing.
VS2010/XAML editing lacks good support for refactor-renaming things like animation timeline names
9 1h Improved some animation (half hour) and added support for trial mode, which is a feature unique to the Microsoft Marketplace. You may actually provide the user with an option to try before they buy the software, all which is controlled with a single boolean in your code. Simple and effective!
The IsTrial boolean is brilliant
10 0h 30min Submitted at the 20th of November. Read more about submission process below

Summary

  • Total time on Android: 35 hours 30 minutes
  • Total time on WP7: 18 hours

These numbers lie

There are several reasons the WP7-development went faster.

  • I had the resource files ready (flags and data xml's)
  • I could reuse architectural principles i used in the Android project (brain time)
  • I reused actual code by copy-pasting and changing "boolean" into "bool" etc. (code time)
All in all I think this is much closer to a draw time-wise than what my numbers show. I think the main difference is not development time, but what I got out of that time. The WP7-version is simply cooler because of the animation effects I so easily could add.

In any case, I did a breakdown on the numbers, dividing time spent into five categories: Gathering and prepare resources (images, dat), Studying (googling and reading), Coding (actual C# or Java work), UI-develpoment (XML/XAML) and publishing. You do need to take these numbers with a grain of salt. It's very difficult to say exact how much time I spent on each activity, but I think it gives an indication. Instead of presenting the numbers in a table, I made these beautiful pie charts:



AndroidWP7

The most interesting fact I get out of these pie charts is the difference in time spent doing "UI". Now this may be a question of definition, but I did spend proprtionally more time working in the designer and with XAML than with code on WP7 compared to Android. Maybe it's because Silverlight more fun, so I took time to work on things like animation and stuff? Maybe it's because I knew better what to code, so that the business logic was done faster the second time around? Probably a combination.

The submission process

The sumbission process are pretty similar. I suppose Google and Microsoft have learned from each other and copied some ideas. The basic info you need to fill out and upload on both places are:

  • Name
  • Description
  • Binaries
  • Icon, screenshots and artwork
  • Pricing details
There are some slight differences.
  • The android platform requires you to enter a content rating (Teen/Mature, etc)
  • The WP Marketplace allows you to price the product differently in different countries.
  • Android allows advanced copy protection with a licensing server. Takes some implementing. Unsure where WP7 stands here.
  • WP7 allows support for trial mode
The last bullet point here is a big plus for the Windows Phone Marketplace, if you ask me. This allows users to download a single binary that acts as a trial until the user purchases the product. It is then unlocked by setting a bool IsTrial=true, which you must have code for. This way, publishers don't have to upload two separate versions, which I see is very common on the iPhones. On the Android platform though, I see the norm is more to publish ad-based applications. But maybe it would be different with the Trial-option there as well.

All in all, both platforms allow a good user interface for uploading applications. When you have your material ready, the publishing itself is done in half an hour or less. As a side note, for those of you who've worked with Windows Marketplace for Windows Mobile 6.5 and earlier, you'll see that the new interface is a huge step up from that old monster of a form.


About half of the Android app submission form

Page one of five in the WP7 submission process

The report interfaces

When your app is published, it's time to kick back and watch the money flow in. Also here, the interfaces are good on both platforms, but I'd give Google a minor win. Google reports every single purchase with full name, date and country of the buyer, while Microsoft settles for a summary per country. Microsoft gives you a sleek graph, though - that's cool. Another thing that is a big plus for Google is the error report interface. You can actually see each single exception that occur runtime on any single phone in the world - with full stacktrace. There is no such thing at Microsoft's platform.

Since pictures says more than a thousand words:

Android Market Publish Site

Android Market main page
Detailed Sales Report
Android Market Error Report page
Android Market Error Details. Luckily I added a bug just so that I could demonstrate this feature for you!

Windows Phone App Hub

Daily download details
Daily cumulative
Data summary table per country

Sales numbers

Finally some numbers. After each application had been on the market for a month, I gathered the numbered and these are the results:
 AndroidWP7
Trial N/A125
Full version1536

Both were priced at $1.

Now I think there are several reasons why I sold better at the WP7-platform. For one there is less competition there. I could not see any other apps at the time of publishing that had this kind of flag quiz. On Android there were three or four pretty similar. For free. I'm surprised I actually sold any at all.

Summary

So I'm not going to be rich on this application, but it's been a fun project. Before I leave the sales figures: I have plans to release a new version on Android (and maybe also WP7) that will be ad-based and free instead of priced at $1. I suspect I'll compete better with the other free application then, but will I make more money? It will be an interesting experiment as well, and I'll probably post a new blog entry about the results in a couple of months.

But who wins? Where will I go? I do believe it's slightly more fun to work at the WP7 platform, but the differences are not that big. Not big enough to be decisive alone. I do own a vey cool Android-based Samsung Galaxy S phone now, which is a factor that makes me want to develop for Android. I do have a WP7-device as well (on loan from Microsoft), but I actually think the Android device is slightly cooler to use and play with.

Then there is the user base, which I talked about in the introduction. The user base for Android is still quite much bigger than for Windows Phone, and that is the factor that makes me pretty sure that my next project will be on an Android device. I reach a greater audience, and that's always cool both in terms of revenue and feedback. Who want's to work for weeks in a cellar and when the day comes for publishing, you never hear a word of praise or criticism? So the next project: Android, but the next after that? Who knows - I go where the wind blows.

Dice roll comparison chart:

AspectAndroid   WP7
IDEs46
APIs45
Availability of documentation65
Reporting functionality54
Submission process55
Perceived market potential54
Total2929

It's a draw! -Everybody is happy and I'm avoiding Microsoft vs Google, Closed vs Open source-debates in the comments - perfect! :-)

Happy app developing!

63 comments:

  1. Fabulous post and great that you've come out with your numbers. I haven't published for Android (but have for WP7) and it's amazing to see the detailed stats on Android vs. WP7. I really wish WP7 would get this level of detail.

    The comparison has it's flaws as you point out (for example you included the upfront data collection in Android but really it's a separate task). However I think maybe you steered off of the norm for WP7 in how you might have implemented your update logic and databinding. The Model-View-ViewModel (MVVM) pattern is well suited for WP7 and makes working with updates a breeze (you just databind the control and update the viewmodel on the backend and *magic happens*). I think if that was leveraged more in your app (I can't see the specifics of how you did it) it might have been exponentially better on the WP7 for updating the system.

    Still I think this is a great comparison and really hits home on the two platforms. Well done sir and a fun looking app!

    ReplyDelete
  2. Although it's a bit more manual work, you can get all those detailed metrics in wp7 as well by using preemptive's runtime intelligence:
    http://www.preemptive.com/windowsphone7.html

    would be nice if it was baked in automatically though :-)

    ReplyDelete
  3. Great!
    But I just see a big problem, you can only develop applications for Windows phones in countries where this is available on Zune Marketplace. This means that only a small group of developers have access. For example, in Latin America we could not publish or download applications .... Android and iPhone if I could do?

    ReplyDelete
  4. Visual Studio Express can be used to develop WP7 apps and it is free. I think you forgot to add it. It is also light weight and has almost all the features of the paid VS2010.

    ReplyDelete
  5. how you can give the Android an edge on percieved market potential is beyond me. You have a disjointed, fragmented android experience with no guarantee your app will appear/work the same on all android devices. I'm also confused about the huge edge you gave for android documentation, http://create.msdn.com/en-us/education/documentation is pretty much the most well organized set of starter documentation for developmene I've ever seen.

    ReplyDelete
  6. Nice article! I do have some comments, though:

    * You only briefly mention the fact that the Windows Phone SDK includes a free version of Expression Blend. That's a big advantage, IMHO. Especially if you're doing animations.

    * I'm not sure, but I was told once that the Android Market doesn't need a trial mechanism, because you can always undo your purchase within a certain time frame (24 hours?). You'll get a full refund, no questions asked.

    * Does your Android app work well on all Android devices out there? There's a lot of different hardware out there, with different display sizes, etc. With Windows Phone (for now) you know exactly what you're targeting.

    ReplyDelete
  7. The "fragmented experience" argument is pretty meaningless. If you want so sell apps what counts is market share of the devices. WP7 has no market share of any relevance yet so you have not much customers for your app. If you want try to make some real money from apps you have to target Android and/or iOS right now.

    ReplyDelete
  8. You've not talked about Blend for WP7 :( It's a great IDE for making DataBinding and UI / animation.

    ReplyDelete
  9. Thanks for your feedback. My comparison is subjective and constrained. There is a lot of factors I did not include in my test that could change the outcome, like using Blend, or creating a more advanced application or applying a different architecture. You'll just have to take it for what it is.

    To anynomous who said I gave Android a "huge edge" on the documentation: I used the phrasing "slighly harder to navigate" on the msdn-pages. The difference is by no means huge, but my experience in this specific case was better on Android.

    ReplyDelete
  10. "For Android I used the Android 1.6 SDK "

    Why would you use 1.6 ?
    You used the latest cutting edge for win7 but you used the oldest from android world.

    You should have at least went with 2.1

    ReplyDelete
  11. stevoo: I chose to go with 1.6 because at the time of development, I knew that a lot of phones did not have a 2.1 upgrade available, and so I did not want to unneccessarily exclude a large customer base (and here I reveal another weakness with the Android platform that I did not talk about in the post). I don't think my development effort would have been noteably different coding for 2.1.

    ReplyDelete
  12. I'm surprised you said the Android emulator 'boots fast, launches programs fast'. I have a relatively modern computer and it is slower than pitch.

    ReplyDelete
  13. Good stuff. Just want to clarify for those readers of yours who don't know that you mean there is no android gui designer for eclipse. There are for web and desktop.

    ReplyDelete
  14. You should give up both and code for Qt on Symbian (Nokia smartphones). Although not big in the US, it's the biggest smartphone platform in the world by far, more advanced than either Android or WP7, has a better store than either of them with a MUCH better chance of making money, and the Symbian Qt developer tools and IDE is said by multi platform developers to now be the best in the business.

    If you want to make money, Nokia/Symbian is the pot of gold at the end of the rainbow. Oh, and their phones are easily the best too. Try the N8 if you don't believe me.

    ReplyDelete
  15. "Try the N8 if you don't believe me."

    Comedy gold right there.

    ReplyDelete
  16. Am I the only one that sees platform-specific apps as a temporary condition of the market?

    Once all "smartphones" support Flash in an effective way (meaning Flash is optimized for each platform, and phone CPUs become faster), why would developers and software companies bother triple-coding their projects (Android/iPhone/WP7)? Why would they not just write Flash apps, perhaps in a platform-specific container?

    Moreover, with the constant improvement in wireless data speeds and phone screen resolutions, why have apps at all? Why not just touch-optimized web pages with the appropriate content?

    I'll grant that _some_ platform-specific apps are (and will continue to be) necessary. I'm a Droid user, and the Droid Light app probably the one I use the most that would fall under this category. Mail/calendar/etc and contact management apps will likely remain platform-specific. But I would wager that 90% of the apps (especially those that require data connections anyhow) available in the various vendor catalogs will be subsumed by their web counterparts or the Flash platform (either embedded in a webpage or within a Flash container in an app).

    I suppose the moral to this story (as it relates to the article) is that mobile developers should start focusing on learning Flash, and learning the ins-and-outs of touch-friendly Flash app and website development.

    ReplyDelete
  17. Excellent post!

    As others have pointed out on Reddit:

    http://www.reddit.com/r/programming/comments/ezi8t/android_vs_wp7_for_developers_a_case_study/

    1. Most people don't find eclipse lightweight, fast or responsive. Visual Studio seems to be better in this regard. I'm surprised your experience was exactly the opposite.

    2. Android development tools include a visual GUI designer

    3. Could it be possible that your extensive experience with Windows Mobile 6.5 platform made it easier for you to develop the WP7 app?

    ReplyDelete
  18. "Having worked with databinding on WinForms, doing the same on Silverlight is a step back. You suddenly need to write XAML and learn meta-syntax in quotation marks that I still haven't quite figured out. Copy-paste is your friend."
    I really don't get you there. Data-Binding is the sole driving force behind every WPF/SL/WP7 App! And the XAML approach is (not only IMO) a much more natural way to describe UIs. And the binding is (for the most part) actually quite easy and at the same time very powerful. If you use design-time data you can even just click it together.

    About the documentation: You are right, but I don't know why. WPF and .NET in general has a fantastic (IMO the best) documentation with MSDN, but for some reason the SL/WP7 version is severely lacking...

    @scott: Flash is and was always crap. Sorry. It's platform independence is a huge - but its only - selling factor. If you want to do cross platform - this will hopfully be seen be possible with HTML.
    Apart from this, native apps are always needed, because of the look. Would you really create one flash app and then 3 (or more) different UIs to make it fit the platform? I guess not...

    ReplyDelete
  19. When you say that Eclipse has no built-in GUI editor, you're actually pretty mistaken. I don't know what tutorials you were following, but all that I've seen mention the handy "Layout" tab when you're editing XML that allows you to make your layouts with a visual editor. Even if the tutorials didn't mention it, I feel as though the tab should be pretty obvious. It also allows you to view the layout as it would look on various screen sizes and orientations. (Note the menu above and to the left of the layout with the screen size selected.)

    Here's a screenshot I took of the editor:
    http://i.imgur.com/11a8Q.png

    ReplyDelete
  20. Hi Frode,

    Would it be correct to summarize your blog post as "A Microsoft developer tries Android development and finds it harder than WP7 development at first attempt"?

    What do you think would happen if a Java developer does the same, but tries to develop for WP7 in Visual Studio first?

    Thanks!

    ReplyDelete
  21. I've seen cases where the visual UI editor for Android didn't launch automatically for an appropriate XML file. You might need to locate the XML file in your Android project (inside res/layout), right click on it, then choose Open With->Android Layout Editor from the popup.

    ReplyDelete
  22. Very interesting. Regarding the Android sales, did you see a lot of refunds? When you published, was the refund window still 24h? Did you notice any significant effect after that change (both in purchases and refunds)? I guess your sales numbers are too small to draw any conclusions about general market behavior, but I'm still interested.

    Scott, I think it's much easier for HTML5 to dominate cross-platform development than Flash. But either way you'll still suffer from not feeling native on any of the platforms. UI design is different across the three platforms, and users will notice that. Sometimes it will still make sense to go native.

    ReplyDelete
  23. Don't forget to add that WP7 can't use an emulator in a VM - can Eclipse ?

    ReplyDelete
  24. This seems rather biased. Let's propose you never did Silverlight development before.

    That would add another 30 hours of how to use XAML, etc... your hours are skewed.

    ReplyDelete
  25. Why does "Collected and organized data: Flags, capitals and countries from the CIA World Factbook" count as Android time but not WP7?

    ReplyDelete
  26. What was the difference between the trial version and the full version?

    ReplyDelete
  27. Also, why can't I find your app on the market? Canada, G1, Android 1.6

    ReplyDelete
  28. Are you guys forgetting, that while the monthly income is not that great, it potentially multiples for the coming months. I understand that as the market gets bigger, you get less and less hits, but if you have something catchy, the potential income monthly income might be sustainable for a while...

    Would be interesting to see how Nilzor did on the following months.

    ReplyDelete
  29. You used the XAML editor in Visual Studio 2010 rather than using Expression Blend and rated it as stable and a great visual designer?

    Now I know this article is biased. :-) If that was Blend on the other hand..

    ReplyDelete
  30. Great article..

    Just thought I'd throw a couple more options your way.

    For GUI design:
    http://www.droiddraw.org/

    It's no Expression Blend, but it lets you draw controls on a form.

    And for Android/Java editing:
    http://www.jetbrains.com/idea/

    They open sourced this IDE awhile back, and the new version includes support for Android development. Those who want the "VS + Resharper experience" might appreciate this editor.

    ReplyDelete
  31. I think it confirms that its better to be a big fish in a small lake.

    ReplyDelete
  32. You're a worthless imbecile.

    ReplyDelete
  33. I appreciate the info written here, and thanks.

    Looking forward to read more finding/result regarding your android/WP7 programming/business experience.

    ReplyDelete
  34. Really interesting article. So, coming from the Windows side of things - do you think you will do any more Android development in the future?

    ReplyDelete
  35. Thanks for the fine article. BTW, I started with MonoDriod last night and found it quick and easy to use. You should add using it to your article.

    ReplyDelete
  36. Excellent post. As an iOS developer deciding where to expand next, I find this information very enlightening.

    However, I too am confused that you gave the Android platform an edge in "Perceived market potential". Your own numbers suggest the opposite, making over twice as much on WP 7, despite that platform's smaller installed base.

    The fact that the Android market share is larger is irrelevant if those users are being conditioned to expect quality apps for free. That conditioning is by design, on Google's part, since ad-based apps play into their strength in advertising. So you absolutely need orders of magnitude larger numbers of users to get ad revenue equal to selling apps for a price. And on Android, if most apps are free, then price is removed from the developer's marketing toolkit, making competition that much more difficult (and ensuring those with the biggest ad budgets and best PR pros win).

    All in all, your post seems to confirm my growing conviction that WP7 is shaping up to be the better platform to expand to after iOS (especially since I was a .Net developer and have never touched Java). The isTrial flag is indeed brilliant, and I didn't know about it until now. That alone will be a huge factor, until Apple copies it.

    ReplyDelete
  37. I'd like to second the earlier comment about IntelliJ IDEA as an IDE. In my opinion it's much nicer to work with than Eclipse, and there's a free version available with Android support.

    http://www.jetbrains.com/idea/features/google_android.html

    ReplyDelete
  38. Awesome post!!! I generally agree with your view. Rather than coming from a WM6 background I come at from Java/JSP/Eclipse web apps prior ... I wanted a C# project I could do in my spare time and I'm loving C# and Visual Studio. But I still want to do more Android dev soon!

    ReplyDelete
  39. Let's not forget the MonoDroid project! It's still in Preview/Beta mode, but looks promising. Develop Android apps using C# and .NET APIs:

    http://monodroid.net/

    ReplyDelete
  40. Awesome article, but what a crappy app you developed. The fact this is basically a 24-48 hour project shows. A flag quiz? What's next, a meaningless IQ test?

    This is why app stores are so full of junk. Everybody thinks they will get rich with something that took them less than a day to write. Then the decent apps that deserve money get buried in the process.

    ReplyDelete
  41. Thanks. This was an interesting read.

    ReplyDelete
  42. I'm sure Android will be the leader in the Mobile platforms at the end of this year. And at the same time windows will have settled with a good consumer base in the market.

    As far as a developer concern, building Apps in three(iOS, Android and WP7) platforms are equally important. Because you don't know where your Idea gets clicked :)

    ReplyDelete
  43. Anon 11 7:20PM: Interesting comment. I might be wrong about the percieved market potential. Time will tell.

    Anon 1:20 PM: I think you misunderstood the point of the project.

    Anon Jan 11, 12:50 PM: Well that's true - I am a Microsoft developer and I did find Android harder to develop on, but I believe my article has more value than just that information. If a Java developer went to WP7, the numbers would probably be somewhat opposite of mine. As someone pointed out, I had for instance some (but limited) XAML experience. But I did point out that weighted numbers would be closer to 50-50 than 35-18, so I never claim that C#/XAML is easier to code than Java/XML. But the designer is better. This saves you time in the long run.

    ReplyDelete
  44. I didn't read all the comments and don't know if it was posted already but:

    To prevent Eclipse "running" xml files, go to Window -> Preferences -> Run/Debug -> Launching and set "Launch Operation" to "Always launch the previously launched application".

    Also, why do you serialize your settings with JSON? There is also a very good way with the preferences-framework on Android.

    But thank you very much for the comparison.

    I'm an Android developer and tried WP7 and got stuck at designing list views and list view entries. But most likely only because I'm very familiar in Android and stopped .Net at about version 2.0.

    ReplyDelete
  45. Thank you Marcus for the hint on Launch Operation.

    I did not serialize the settings. I serialized the high scores object model (list of 6x10 entries). I will edit the post to correct that. I used the framework for the preferences (last used score mode).

    ReplyDelete
  46. mernen: Only two refund of 17 total. Yes the refund window was 24h. Had almost no sales after the change, so I don't know how that would impact sales vs refunds.

    Ben: Yes, my next project will probably also be on Android as I stated in the conclusion... Or maybe both platforms again?

    Anon Jan10, 2:59PM: The trial version only have 20 of the 200-something countries.

    Anon Jan10, 3:00PM: I don't know why it's not available in Canada. I selected "all countries" when submitting. You do have a touch-screen device, right? It's a requirement.

    Regarding the Android Layout Editor in Eclipse: Yes I know it exist, but I didn't get it to work for more than one of my eight activities, so I gave up on it. Kindof unfair, I know, but from what I've seen it really can't compare to the visual editor of Visual Studio.

    ReplyDelete
  47. Thanks for sharing your experience.

    @prasad: I think you made a very valid point. Your app may not be popular on one platform, but it very well may be on another.

    ReplyDelete
  48. Does Microsoft allow you to see the trial conversion rate, i.e. the number of people who downloaded the trial subsequently bought the app?

    That would be an extremely useful statistic to me.

    ReplyDelete
  49. tomM: No, not directly, as far as I can see. You can calculate the conversion rate by pasting in the numbers shown in this screenshot into Excel, though:

    http://data.nilzorblog.com/android-wp7/reports_wp7_3.png

    Kinda cumbersome...

    ReplyDelete
  50. Thanks for a great post!

    I have worked with various versions of Visual Studio for many years. It is heavy and has a big footprint (and annoyingly, increasingly so with each version). But compared to Eclipse, it's a dream. Eclipse is a frustrating piece of software to work with. I find things very often gets screwed up for seemingly no good reason - suddenly some settings don't work anymore, intellisense is slow, file type bindings start failing (so it doesn't bring up the XML designer for XML files, for example).

    The problem is that, in the end, Android is still a cool platform to develop for :)

    ReplyDelete
  51. I would like to how to hack email in iphone phones

    ReplyDelete
  52. Someone has hacked your comment already :)

    ReplyDelete
  53. Thanks for your work on this. Would be great to get further feedback from your experiences on mobile app's building.

    ReplyDelete
  54. I will accumulate visiting this blog actual often. It is acceptable to see you enunciate from the affection and your accuracy on this important accountable can be calmly observed.

    ReplyDelete
  55. @Android developers (Jan 23, 2012): What? Was that run through Google translate because it makes no sense?

    Sorry for the sidetrack, now to my comment.

    In general I think this is a poor experiment. It doesn't seem to prove much to us at all except that as a developer just beginning to use a platform, they have no idea what they are doing and miss a lot of things like how to use the IDE and SDKs properly. What would be more usefull would be to see what 20 separate developers (10 on WP7 and 10 on android) just starting out making a program with the exact same requirements would find. ...and even that would only prove the learning curve of the platform.

    I personally am interested in the ease of development from the standpoint of someone who is very familiar with each platform. In the long run, that is more important than the initial learning curve.

    ReplyDelete
  56. Anonymous Feb 16: I never intended for this post to be a scientific comparison. Take it for what it is - a guy who's not very proficient in Eclipse who's comparing the experience of using it versus Visual Studio. I too would be very interested in the result of that hypothetical experiment you're talking about, but I think you'll have a hard time finding developers who are VERY familiar with both platforms. They are out there, but they're rare.

    ReplyDelete
  57. There is no comparison of Android with anything. It is the best now-a-days and is getting more popularity.

    ReplyDelete
  58. This comment has been removed by a blog administrator.

    ReplyDelete
  59. This comment has been removed by a blog administrator.

    ReplyDelete
  60. Truly, this article is really one of the very best in the history of articles. I am a antique ’Article’ collector and I sometimes read some new articles if I find them interesting. And I found this one pretty fascinating and it should go into my collection. Very good work!

    Data Science Training

    ReplyDelete