

Ask HN: What would life be like as an Android Developer? - tocomment

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.<p>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?
======
Magneus
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...](http://developer.android.com/guide/publishing/app-signing.html)

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.

~~~
biafra
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.

------
uptownben
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.

~~~
gte910h
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.

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

~~~
gte910h
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

~~~
uptownben
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.

------
aphyr
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.

------
pkulak
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.

~~~
endlessvoid94
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.

~~~
biafra
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.

------
orangecat
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.

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

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

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

------
veemjeem
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?

------
gte910h
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.

~~~
Magneus
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.

~~~
gte910h
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.

------
cheald
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.

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

------
hyung
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.

------
alayne
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.

------
BrianHammond
Ask tocomment: try it and let us know!

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

Do i need a developer phone?

~~~
gte910h
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.

~~~
tocomment
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?

~~~
biafra
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.

------
DrewHintz
> What should I know before taking the plunge?

Along with the SDK, use the Eclipse plugin.

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

~~~
markkanof
What tools would you recommend?

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

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

help > install. Really?

~~~
gte910h
> 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://benlynn.blogspot.com/2009/01/developing-android-without-
eclipse-or.html)

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

[http://blogs.nitobi.com/joe/2010/03/26/android-without-
eclip...](http://blogs.nitobi.com/joe/2010/03/26/android-without-eclips/)

------
gcb
One word: Virtualization.

~~~
mooism2
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?

