# Where to start with Android development?



## salte (Mar 19, 2012)

Hello,


I am really interested in developing for Android. My one problem is that I have no idea where to start. I just need an idea of what order to learn the various topics involved. My goal is to be able to develop new applications in addition to optimizing kernels and ROMs.

Currently, I know the basics of C++ and java (OOP, data structures, etc). I don't know much about operating systems or UNIX/Linux, though.

I'm wondering if I should learn the details of operating systems and Linux first, or just try out making some applications in Java for now? I find it hard to focus on many things at the same time, so I like to learn one subject at a time.

I'm thinking of doing a top down approach, starting with programming apps, then moving on to ROMs, then finally operating systems and kernels. Does this make sense, or should I do this in a different way?

Thanks to anyone who can give me advice!


----------



## frankydroid (Jun 17, 2011)

http://www.amazon.com/gp/product/1430234466?ie=UTF8&ref=aw_bottom_links&force-full-site=1

since you already understand the logic behind programming, this book may be an easy read. I haven't finished it, but it definitely gets you introduced to Android development. It shows how to set up the sdk with Eclipse (which is recommended by google) and it teaches you how to create a simple hello world app. It goes into editing the xml and explains all the different parts of the app's structure. Like I said I haven't finished it, but it was easy to follow and I've only had one semester of java and programming experience. It's not very expensive and your local library might even have it!

Sent from my Galaxy Nexus using Tapatalk


----------



## frankydroid (Jun 17, 2011)

It uses windows, eclipse, and adobe Photoshop for programming and image editing, but I decided to use Ubuntu, eclipse, and gimp (instead of adobe). The only part that this set up caused me any trouble was when it instructs you how to specifically edit an image in Photoshop, I had to use YouTube to find a guide for the gimp equivalent.

Gimp is a free and multiplatform alternative to Photoshop. Can be found here: http://www.gimp.org

Overall, I really like the book so far. It's definitely worth a look!

Sent from my Galaxy Nexus using Tapatalk


----------



## JBirdVegas (Jun 11, 2011)

First off kudos for doing it right. As for an order learning to program apps first will give you a much needed in site on how android handles java and could lead you change what you don't like later in ROM development. I would start by stalking this email list: http://groups.google.com/group/android-developers/topics
Then move to applying what you know here: http://developer.android.com/resources/tutorials/hello-world.html;
Then I would worry about Linux and ROM development


----------



## Ezekeel (Nov 13, 2011)

Learn the real basics first:

1. Watch the movie TRON (the original).
2. Read http://www.amazon.com/Assembly-Language-Step---Step-Programming/dp/0470497025/


----------



## eppo (Nov 28, 2011)

I figured I would track on here rather than starting a new thread....
So I came into this with previous programing knowledge, but not knowing java. I've read a book on java, then the programing android book.
So from those of you that actually write apps for the android platform, what do you think is the next step? Just get to it already? Start using eclipse and its built in tools to get started and learn by doing and googling as I go along? 
Is that the way most of you have got your start? Any other books I should pick up?
Thanks

Sent from my SCH-I500 using Tapatalk


----------



## JBirdVegas (Jun 11, 2011)

That's a good start but it is time to get your hands dirty. Theory is great but till you Google an exception a thousand times you won't really understand why your perfect code is flawed. Start on a hello world from the android dev site and move on to more complex apps.


----------



## eppo (Nov 28, 2011)

Yup, I just started to get my hands dirty. Made an app that plays mp3 when I click buttons. next I want to start playing with list view, it seems cleaner.

Sent from my SCH-I500 using Tapatalk


----------



## JBirdVegas (Jun 11, 2011)

So how are your dirty hands? This forum isn't used to its full potential so if you have questions let us know... I wish this forum would be use more :-( there are after all lots of experts here to help


----------



## doug piston (Jun 10, 2011)

JbirdVegas,

I completely agree. The only sections I read here are the Development and Recoveries sections. I truly wish there was more Development talk and colaboration that I could read and learn from in a public place. IRC is a great place to discuss things in an "openish" atmosphere but with it you get alot of e-thugs as well. Another great forum is Anddev.org. It but default is not nearly as busy as rootz but it's a more focused group.

Anybody looking into development should get to know java and use some serious GoogleFu.


----------



## cantIntoCode (Mar 25, 2012)

Ezekeel said:


> Learn the real basics first:
> 
> 1. Watch the movie TRON (the original).
> 2. Read http://www.amazon.co.../dp/0470497025/


I actually laughed so hard at this it's unreal, thanks for making my day Ezekeel


----------



## yarly (Jun 22, 2011)

If you're doing app development, look into the Busy Coder Series. You can get them on Amazon, but they're not the most recent, as the guy that writes them, releases new ebook versions every few months on his site. If you get them on his site, he gives you a 1 year subscription to updates. They're DRM free as well.

If you're going to try games, I reccomend starting with 2D games as you'll get in over your head with more than that to start. Look at libgdx game engine and this book by the creator of libgdx. Every other 2D free and opensource game framework based in java for android sucks. Stay away from the 2D game engines that claim to be cross platform with the exception of Moai. They all suffer from issues (extendability, performance, restrictions, cost). Moai is not noob friendly though as there's a lack of documentation. Moai, however is opensource and written in lua, which is very easy to learn (it's kind of like the lovechild of python and javascript) and allows you to directly call high performance c/c++ code from it in an easy way.

Also, if you don't already, document the hell out of your code and try to follow a code style standard (even if it's your own, as long as it's consistent). How can you tell you documented enough? If it looks like you can figure out what you wrote in a year from now without a lot of tracing to use it, then you documented enough 

Also learning how to write testable code and doing unit testing will save you a lot of time in the long run debugging if you plan on doing anything medium to large. Look into how to use the junit test framework with Android. Intellij IDEA has support for it built in and I believe eclipse has a plugin for it. I use intellij and consider it the best purchase I ever made for an IDE, but the community (free) version of it has everything you need for Android. The paid version is more for support on other languages than Java. Most documentation out there from Google uses Eclipse, but anything you can do in Eclipse can also be done in Intellij.

Not going to need to do it right away, but read up on threading as well. Any app that's more than just something basic, you tend to need to do lots of things at once and threading tends to be required (especially for games). Learning SQL (mainly SQLite) for data storage and XML basics (as the UI elements are XML) will also help for app development.

You're not going to need to know a TON about the OS to do Android App development, but it can help to know your way around so read a bit on how the filesystem structure is set up.

If you're doing ROM development and such, well a lot of what I said doesn't totally apply directly, but some of it is useful nonetheless. There aren't any formal guides or books on ROM development though, but if someone wrote one, it would sell IMHO.

If there's anything else you have questions on, feel free to ask, but please ask in the thread as it will help others versus a PM. My knowledge is more on app/game development than ROM development though. There's also #android-dev on freenode IRC for app development. I loiter there sometimes when I remember to sign on IRC. If you go on freenode, one thing I can reccommen is not asking android questions on say #java, they will just tell you to go to #android-* instead as most freenode channels try to keep their scope mostly limited to their name and not derivatives.


----------

