Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I became a full time android developer about 45 days ago and had been dabbling before that for about 2 months. A few points and comments about the article.

- If you are going to pick up a phone to do android development, my recommendation would be a used original Droid or the HTC Desire. And its not because these are good phones but because these are the phones that I see a lot of people using. I have a Nexus One and I find that it is too powerful and does things other android phones can't. (read on)

- Understand what device fragmentation means for your development. Are you creating a form based native application? Different handsets generally handle native layouts, text and buttons very similarly so fragmentation may not be a huge issue. Are you creating a game or an application that uses video/audio? Prepare to be buried in a multi-dimensional matrix of hell :) As an example, take for example streaming raw AAC audio from the internet. Android as a base platform does not support this in hardware or kernel, but some sprint phones do support this.

- Keep in mind the relative power of the different devices. As with most emulators, the Android emulator has slow draw times and fast network times (though network can be adjusted). Just keep in mind that, if you have a device, where does it rank in the spectrum of devices. Developing an android app that runs 'smoothly' on a Nexus One can leave a lot of customers having a 'jerky' experience. Some of this, in my experience, is also cause by poor design decisions.

How hard is it? Doing something trivial is, by design, trivial. A todo list app would take you, with knowledge of any other programming language, less then 8 hours. I find that the expensive part of the process is knowledge of the fringe, as with all things. Things like knowing how button requests cascade, how a view hierarchy should be organized or how to stream media (can you tell I'm hung up?) are the sorts of things that aren't extremely well documented and take more time to understand than similar concepts for web programing (IMO).

Like kreci, I'm open to questions.



What turned out to be necessary for me was looking at the source code of the android apps themselves, rather than the sample apps in the SDK. Specifically, I developed an app that used the camera (http://ifdefined.com/blog/post/BugTrackerNET-app-for-Android...) and I couldn't have done it without studying/stealing code from the built-in Camera app: http://android.git.kernel.org/?p=platform/packages/apps/Came...


Seconded. This also gives you a good model to emulate for class structure/app design.


> As an example, take for example streaming raw AAC audio from the internet. Android as a base platform does not support this in hardware or kernel...

Have you tried streaming OGG audio? I've been looking at doing an streaming audio app, and by all accounts, OGG is properly supported by base Android. I'm willing to add an OGG encoder backend because I already had to do that once to get iPhone/AAC support, but if OGG doesn't really work then I might try a different approach.


In my experience streaming raw OGG has worked well. I have very limited experience with anything besides raw AAC as, thats what all my clients were using.


Sounds like a common theme, this is also mentioned in this Tweetdeck Android developer interview. http://www.androidpolice.com/2010/11/14/developer-interview-...

Developing on the N1 was perhaps a mistake. We became used to the speed of it. When I finally started testing on the Droid I had to go back and do a bunch of UI optimizations.


Thanks for the offer. I've been trying to get started with Android development, but I keep getting stuck in the first stages of learning java. I have worked extensively with C and Matlab before, but I have no idea of OOP concepts. Frustrated with Java, I've been learning Python and that's going along at a nice clip. I really want to get over this hump. I have tried skipping the Java tutorials and directly looking at the source code of applications, and after a month of trying, still can't make head or tail of it. I'd appreciate any pointers you may have.


Buena suerte! You'll ease into it. I have a friend who is struggling with OO as well. He really gets lost in the decoupled nature of the language and development environment.

Take a look at Bruce Eckel's free book "Thinking in Java" (3rd Ed)

http://mindview.net/Books/TIJ/DownloadSites


Thanks for great comment. It adds a lot to my post. As you have written the biggest problem is the Android versions fragmentation (but it is getting to look better) and many of devices on the market (as I have written you will never be sure if your app works well on all of them).


Is the Desire really that much different from the Nexus One, they are practically the same handset but with some minor modifications..




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

Search: