Ask HN: What mobile SDK should I learn

I am starting to digg my head into mobile development. After the events of friday i don't know anymore which mobile SDK i should investigate.

Originally i wanted to learn Qt mobility. My thinking was like this: * open source * cross-plattform * very easy to use * not so much crowded with developers => less competition

Now I am not so sure anymore if it is better to learn another platform like Android or WebOS.

What are your thoughts about this? Any advice welcome.

  • Don't fret about cross-platform. However, if you want to do games, look at Unity3D ($$) - that is cross-platform.

    I'm an iOS developer, now doing a deep-dive into Android.

    Pretty much, the consensus among my iOS developer circle is that to be considered a serious mobile player you need three platforms: iOS, Android, and mobile web.

    To be more marketable as a developer, there is no single platform that you want to learn (the true answer is to strive to become a better designer than coder - the best coder I know personally is a better designer - and that is one of the reasons he's had top-10 App Store apps). Learning Android has less of a learning curve. Knowing both iOS and Android is hard - I'm trying to do that now - and I've given up - shelved all my iOS projects to focus on Android.

    Android is going to win in the long-run. WebOS is going to be a footnote in the history of tablets (unfortunately Nokia didn't buy them 2 years ago). Windows Phone 7 is a wildcard. By mobile web, I don't mean rich HTML5 - I mean decent mobile optimized websites like http://shakeshack.com

    If you are going to study iPhone, just dive right in. The analyzer will save you from the most egregious of memory leaks and retain cycles. You will realize that your code you are writing sucks three or four iterations or generations down the line. Don't fret about that. You will go back and forth between the benefits of IB vs writing code for UIs directly.

    If you are going to study Android, the code from OpenIntents is some of the best written I've seen so far [1]. A lot of the Android examples don't cover non-trivial stuff (like how do you have a ContentProvider that can handle multiple tables, how do you skin). OpenIntents shows a way, maybe not the best way - but decent, how to do all of that.

    [1] http://code.google.com/p/openintents/source/browse/trunk

  • Simple: Android.

    Open source, healthy ecosystem, safe future. Around 60% of my friends with smartphones have Android devices. Don't worry about competition, there's plenty of demand. Just be good at it.

    If open source isn't a requirement and you own a Mac then obviously iOS is a great choice too. For the time being I really wouldn't consider learning any platform apart from these two.

  • The way I see it, manufacturers are going to flood the market with Android phones that just compete on price, while iOS will dominate the high end smartphone market. This means that while Android will win in the long run in terms of market share, the majority of people buying those phones are not likely to spend money on premium apps. iOS, on the other hand, will continue to generate the most profit for its developers, even with a smaller market share.

    Which segment you want to target depends on what types of apps you want to make.

    If you're goal is to make money from the app itself (like a game or utility app), you should invest in iOS where the ROI is far greater. If you are developing an app for a web service, then you are probably looking for the greatest reach instead of trying to generate profit from the app itself. In this case, you can just partner up with an Android developer to cover both market segments.

    On the other hand, if you're fine with making a mass market app that is monetized through ads instead of direct sales, then Android is good choice since it is in need of more consumer-friendly apps. Finally, if you want to make something cool just for the sake of hacking, then Android obviously gives you the greatest access to the underlying system to do whatever you want.

    All of the other mobile OS's are too young to really predict where they'll go.

  • What languages do you know, and what hardware do you own?

    If you know at least basic C, Objective-C isn't hard to learn at all, but you need a Mac to do development on.

    Android requires Java as far as I can tell, but maybe there are other options for that platform. Java is fairly close to C, but you'll probably still find it easier to learn if you've done C++.

    It is also possible to create web apps that are essentially wrapped. Though I'd imagine you still need access to the platform (e.g. a Mac for iPhones) to produce even the wrapper.

    Keep in mind that dynamic languages such as Objective-C and JavaScript will probably make it easier to debug, at least in my experience. If this is something brand new to you, a forgiving platform may be the best way to start.

  • Not sure where you're located geographically, but in the US there's still a major shortage of qualified mobile developers for the major platforms (iOS and Android). Any platform other than those and there will be less competition, but also many fewer jobs. I've started doing some iOS development, haven't even completed my first project yet, and I'm already turning down consulting jobs.

    If you're thinking about launching your own apps, the same logic applies. Go where the users are, then branch out if you're successful. There may be less apps on some of the other platforms, but now that there are successful smartphone companies, they're porting to most major platforms, so you're competing with the big boys for a share of a much smaller pie.

  • If you're a linux geek then Android, if you want to earn money now - iOS, if you don't want much competition - go for WP7 (it's very small now, but it's guaranteed to have a nice chunk of market share in two years).

    WebOS? Did you hear about any good software thing HP ever released? That company doesn't know the stuff and purchasing Palm doesn't change much.

  • undefined

  • Android and iOS, and Qt mobility is still fine since millions of Nokia devices are sold around the world.

  • Learn them all, don't pigeon hole yourself. Or at least lean the basics of all of them, then focus on the one with the best developer tools or the one that you enjoy working in.

  • iOS if you intend to make money any time soon. If not, Android is pretty much the only game in town (I don't see WebOS going anywhere any time soon, and unless Microkia launches some seriously badass WM7 phones, I don't see much traction for it either)

  • you can simply use c# with mono for android, ios and webos(in near future) development also you ca use c# for building wp7 apps. but you need to know differences in api of that platforms.

  • What about platforms or frameworks like Titanium or PhoneGap?

  • Always remember that when you need a broad comparison of a field, Wikipedia might have it: http://en.wikipedia.org/wiki/Mobile_application_development

    I've played with many of these Frameworks, just to have a comprehensive unbiased opinion. I also used the pure Android/iOS SDKs too. My suggestion would be to use the pure Android & iOS SDKs to learn. Then use the Airplay SDK ($$), which covers all Smartphones. (<they offer free education licenses)

    By the way: You can circumvent the slow Android emulator by using an Android Virtual Machine http://www.android-x86.org/ or the latest AVD Platform target, which supports "snapshots".

    Best wishes