Ask HN: What would life be like as an Android Developer?
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?
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?
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.
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.
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.
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.
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.
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.
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.
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.
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.
If that fails, droiddraw looks like a possibility. I just tried it out. Would need to test it further, but has promise.
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-/
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.
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.
Developing games seems to be relatively difficult. Java has GC issues and the NDK APIs don't support most application UI features.
Do i need a developer phone?
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.
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?
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.
Along with the SDK, use the Eclipse plugin.
help > install. Really?
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...
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.
http://www.onebitwonder.com/projects/android
For a text mate android plugin
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.
Really check out how to use ADB (android debugger) from the command line, it's surprisingly easy.
So, could you expand on that please?