Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: What would life be like as an Android Developer?
28 points by tocomment on April 11, 2010 | hide | past | favorite | 49 comments
I did some casual development on the iPhone about a year ago but got frustrated figuring out all of the certificate stuff to test my app, and then waiting 4 months to get my app denied.

I'm thinking about getting an android phone and making some apps mostly for fun, maybe someday for profit. Is the experience a lot better? What should I know before taking the plunge?



Hope you're in the United States or some other country that Google decided to support. I don't mean to sound bitter, but I'm in Israel and it's seems that even with a decent size Google presence here, Israeli Android devs can not sell apps on the Google Marketplace. I found this out AFTER I paid the signup fee. That was about 9 months ago, and Google still hasn't responded to my emails requesting a solution. So, you should basically check, and double check that your country is supported if you want to sell apps and get paid.


Here is a link to the list of supported locations for developers who want to sell apps. Seems kind of short but I'm keeping my Android developer account open in the hopes that this list will get significantly longer in the near future. http://market.android.com/support/bin/answer.py?hl=en&an...


Hire a proxy in a valid country to sell them.

For instance, I'd happily sell your apps for you on the marketplace after licencing them from you (I run a US based iPhone and Android* development shop[see my profile for contact info])

*Still only 2 projects deep into android.


That sounds like an interesting option but I just think we shouldn't have to do that.


I agree, you shouldn't have to, but there are what we think the world should be and the facts on the ground. For whatever reason, Google doesn't care to expand their checkout regime


Exactly, thank you, that's important for people to know if they are planning to start developing for the Android platform and expect to get paid (directly). Too bad I figured it out AFTER paying the registration fee.


I started writing android apps four months ago. My co-worker started developing iPhone apps two months ago. We have similar levels of "Arrrgh, this is so broken" conversations--but about entirely different things. The android emulator is way slower, but running on a real device is quick and easy. Android has way better support for libraries--you cut and paste far less code. The APIs are saner, in general. Error handling is simpler, and you don't have to allocate as much by hand. Also, the store is a dream. We went from zero to installed via the market in ten minutes.

On the other hand, Android is Java--and all the horror that entails. There are also fewer people developing for android. The source is open, though--you can git clone the official apps and refer to them, which is invaluable. The docs are okay, but a lot of android plumbing is really complicated. Rightly so, when you realize what the platform accomplishes, but it takes longer to spin up.

Overall, I like it.


In my experience it's really tough to make an Android app look good. I started building an Android app, but got frustrated trying to muck with XML, never getting anything to layout how I wanted it to. I decided to give Cocoa Touch a try and found that the built in libraries take care of just about everything you need. I probably just didn't give it enough time though. I do plan on revisiting though.

Objective C is a _giant_ pain in the ass, though. Just adding a property to a class means adding four lines between 2 files. I can't even imagine how people coped before 3.0.


I agree about Object-C being a pain, disagree about making Android apps look good.

Perhaps it's a trade off. The iPhone has Interface Builder, we get the shitty eclipse builder (plus the ability to use straight xml, or do it all programmatically).

We get to use Java, but we have to use eclipse. the iphone has to use objective c, but they get xcode.


I disagree about Objective-C being a pain. When I was doing osx development. Desktop and iPhone, I liked it.

You do not have to use Eclipse at all! I use maven and the community edition of IntelliJ IDEA. But I could also use Netbeans. Or a simple text editor. For the GUI you can use DroidDraw.

And you do not have to use Java. You can use Scala. Although I would recommend using Java until you are familiar with the APIs and concepts.


I've found the Android API itself to be about on par with Cocoa Touch; some things are easier and some things are harder, but it seems to balance out. A major advantage for Android is that it uses Java instead of Objective C, giving you real memory management, no header files, and generally better built-in libraries. Also you don't have to muck with certificates nearly as much; apps can deploy to your phone immediately, and you just pay Google $25 (one time, as opposed to $99/year for Apple) and use a self-signed certificate to put it on the Android Market. And your app shows up on the market a few minutes after you upload it, and won't get pulled unless it's malicious.

For fun, Android easily wins IMO. For profit it's less clear; there are certainly more iPhone users, but it may be easier for a quality Android app to stand out. My paid Android app is earning around $10/day (before Google's cut), which from what I hear is on par with typical iPhone apps.


I'd love a link to your app, if you're comfortable sharing.


I like my pseudo-anonymity here, so I'll respectfully decline.


That's more than valid. Thanks for the response. :)


What's your app?


Sounds like someone is speaking without experience here. I signed up as an app developer for the iPhone, got approved in 3 days. I wrote a new app in 4 days (a decent rss reader that pulls feeds from facebook) and the app was accepted in less than 2 days. Figuring out the certificate stuff was not hard as long as you know how to RTFM. I mean seriously, how about give it a shot before complaining on hacker news?


The audio and video is a alot harder. The Layout issues without an interface builder type tool are rough.

It's possible, for sure, and you can get up on the store in minutes.

If you've never done eclipse, I don't recommend starting now. Develop without it. Learn how to use ADB from the command line.


Also, you can do Flash CS5 and Appcelerator Titanium on it now instead of pure java. Check those out too.


It's not perfect, but if you're learning Android UI, check out http://droiddraw.org/. It's a WYSIWYG interface editor, like Interface Builder. It's not pretty, but I found it to be a good way to understand the fundamentals.


I honestly plan on seeing if CS5 can create anything serviceable as a UI for business apps. I can honestly see adobe going on the warpath there after this bullshit and now they have all the iPhone platform compatibility guys with nothing to do.

If that fails, droiddraw looks like a possibility. I just tried it out. Would need to test it further, but has promise.


was using the command line tools (plus vim, of course) and then installed eclipse and the plugins just to see 'what i was loosing'.

Compiled the Hello world example. 20kb.

Compiled then under the command line tools... 12Kb.

It was by no mean scientific as I used some different titles and app names. but that was it. http://meme.yahoo.com/gbarros/p/1hKEYg-/


It's not a performance thing. It's a productivity thing.

Eclipse is not particularly intuitive for an IDE (and if you're a java developer who uses it all the time, you have no clue if it is as you're past the point where you're learning it).

Eclipse is very testy on some platforms to get working

Eclipse really confuses the issue when there are some compile errors in your android code.

Eclipse is a fullscale ecosystem for some problem you are not solving (largely enterprise java development).

90% of the tool has nothing to do with android.

Most if not all of the "Android Plugin" is calls to standalone EXE's you can use without eclipse, and which make gobs more sense when eclipse isn't doing the calls for you.

I honestly made a pretty pure run using Android via Eclipse, then read 1 article of "Android Without Eclipse" and was able to Compile repeatedly, deploy and debug the apps I was working with easily once I jettisoned it.


The experiences are comparable.

First, I'll address your concerns about code signing:

Android doesn't require you to go through quite the same certificate/provisioning profile insanity, but you will have to sign your applications before distributing them in the Android Market.

See here: http://developer.android.com/guide/publishing/app-signing.ht...

To develop on a device, it's brain-dead simple. Just plug in the device, install the driver (or config udev on Linux), and go!

Details here: http://developer.android.com/guide/developing/device.html

The one case where you need to get anything 'approved' is if you're going to use Google Maps. There's a quick automated process where you submit your development key in return for a maps API key.

See here: http://code.google.com/android/maps-api-signup.html

Regarding development itself:

In terms of learning the development APIs and how everything fits together, I contend that Android is going to be tougher to learn at first, because you'll have to figure out fundamentals like Activity lifecycle, Intents, etc.

However, after you've gotten past the initial hurdles, I find that Android development (at least for the most part) feels more predictable and logically-designed than iPhone development.

In my experience, Android also has some better libraries out of the box. For example, doing basic REST calls, JSON, and SQLite are all in the standard library. On iPhone, you're best off using 3rd party libraries for each of those.

But there's always two sides to the coin. I find that iPhone is less structured, which can be good, depending on your tastes. I also feel that iPhone gives you a better-looking, better-feeling application with less effort (prettier default buttons, colors, animations, and there's always Interface Builder if you need it). If you're a game dev, also, iPhone tends to run faster and can utilize C libraries more readily than Android, whose ability to run C code relies on NDK/JNI, which can be a PITA.

To wrap things up, don't expect an entirely new process when you switch over to Android. If you didn't have the patience to stick it out on iPhone, don't think that Android will be the magic bullet that makes things easy. However, you'll be able to develop applications using the tools you like (not wedded to XCode), under the OS you like (Win/Linux/OS X), and best of all: no approval process to publish your applications. I've found that it takes minutes, as opposed to the App Store's days/weeks, for Android applications to arrive in the market.

I hope that helped.

P.S. I recommend The Busy Coder's Guide to Android. There's plenty of examples to get you started.


I, too recommend the books by Mark Murphy. You can get the uptodate PDFs/mobi/epub versions at commonsware.com.

Real books on Android (or any other fast moving technology) tend to be outdated when they reach the bookstore. For the price of one book you get three (the fourth about the ndk is due late april) with a one year update. Mark does more than one update in a year.


I've only done basic experimentation, but it's not bad at all. You can even download the Android SDK and try developing apps and running them in an Android emulator before committing to a phone.


It is just as frustrating as most other frameworks. Find someone to commiserate with before you jump in.


Be careful with the type of app you want to make. For example, we're trying to port our iPhone dual-thumb shooter and we've run into touch-recognition problems on the Nexus One and Droid.

Nexus One doesn't handle multitouch correctly: http://www.youtube.com/watch?v=dsSUqkh8pcI

Droid doesn't register a tap if one finger is already touching.


I doubt the experience is better than iPhone development from a tools perspective. I often feel like I'm participating in a Google Labs experiment. If you can deal with some rough edges and lack of direct developer support, you will be okay.

Developing games seems to be relatively difficult. Java has GC issues and the NDK APIs don't support most application UI features.


Ask tocomment: try it and let us know!


Any advice on the best phone to get? Droid or nexus maybe? Does it matter for development?

Do i need a developer phone?


Actually it matters a whole hell of a lot.

There is a dev phone you can buy once you create a market account. It appears to be an HTC phone similar to the T-Mobile myTouch. It may be the best longterm solution as you can update the OS with Google Images.

The issue with android is that there are 4 separate versions of it in the wild: 1.5, 1.6, 2.0, and 2.1. If you want your app to have the widest penetration, you need to target 1.5 or 1.6

The moto cliq (one of the the T-Mobile phones) are stuck at 1.5 and haven't been updated to 1.6 or 2.0 yet. The G1 will likely never be able to update to 2.x (too small of on board flash space on the phone).

I've settled on a myTouch from t-mobile as my dev platform as it has 1.6 on it (which was required to run Appcelerator's Titanium). It may get returned for a cliq if they release an upgrade or any 2.x phone that comes out this month while I'm in the 30 day return period which all cells have in the US when bought without contract subsidy, or perhaps even the dev phone.

The Droid has a 2.x series android release on it.

Do not ask the people in the store, they're clueless about what version is on a particular phone. You can see it in the about menu on many of the phones if you dig in the floor models.

The android phones are not user updateable a la the iPhone. They image gets updated over the cellular network semi-randomly.

http://en.wikipedia.org/wiki/List_of_Android_devices

can be very helpful in picking a phone.


My Motorola Milestone (European version of the Droid) actually is user update-able. I did the 2.0.1 and the 2.1 update myself. I had to use Windows and RSD-Lite to do it. I got my 2.1 image from here: http://and-developers.com/motorola_milestone:sbf

I had to do this because the OTA update and the official Motorola Updater for Windows were unable to install either 2.0.1 or 2.1_update1.


Hmm sounds like I should get the dev phone then.

Could I have a dev phone and a personal phone and swa the sims between them as needed?

Or would the dev phone work fine as a personal phone?


The dev phones are fine unless you want to install "copy-protected" apps. They do not appear in the market if you use a dev-phone. At least not for the ADP1. The reason is that you can easily gain root access and copy "protected" apps off the phone.


Dev phone works fine as a personal phone from what I've read if your network is supported.


> What should I know before taking the plunge?

Along with the SDK, use the Eclipse plugin.


I can't disagree more. Eclipse is probably not worth picking up if you're not already a user.


Could you maybe suggest a decent alternative? I picked up android a while ago and I definitely have not been happy with Eclipse, but haven't really found anything better either. Especially with all the instrumentation that google provides.


The instrumentation is still all there. I honestly am an old unix hacker at heart and use a command line and gVIM most of the time. Notepad++ and the terminal might be enough.

Really check out how to use ADB (android debugger) from the command line, it's surprisingly easy.


What tools would you recommend?


It's just programming. Use whatever you normally use for that task.


The SDK cames with a suite of command line tools that are far more easy to understand then the eclipse crud.

help > install. Really?


> The SDK cames with a suite of command line tools that are far more easy to understand then the eclipse crud.

I very much agree with this statement. Here are some resources:

http://benlynn.blogspot.com/2009/01/developing-android-witho...

http://java.dzone.com/articles/google-android-tutorial

http://blogs.nitobi.com/joe/2010/03/26/android-without-eclip...


I'd recommend maven and the maven-android-plugin (http://code.google.com/p/maven-android-plugin/) to be IDE-independent.

I would recommend an IDE (Eclipse, Netbeans, IntelliJ IDEA) because you then have the advantages a statically typed language like Java gives you. Code completion and instant feedback in the editor that your code still compiles.


Thanks guys for the sarcastic responses. Maybe I should clarify my question.

For .NET programming I use visual studio, for iPhone I use XCode, and for rails I use Textmate. I have not done any java programming so I was hoping to get some advice from people who have, particularly in the context of Android programming.


You can probably use TextMate and ADB in the command line.

http://www.onebitwonder.com/projects/android

For a text mate android plugin


$TEXT_EDITOR and $TERMINAL_EMULATOR running $SHELL. What else?


One word: Virtualization.


That probably says a lot to someone who understands the implications in this context, but many of us don't.

So, could you expand on that please?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: