Help starting development.. - Droid Incredible Q&A, Help & Troubleshooting

Hello, I was wondering if someone can steer me the right direction in terms of starting development.
I have no previous programming/development experience whatsoever. I am a somewhat computer nerd but never found the time to get into the developing arena.
Now that I am out of college and have A LOT of time on my hands I want to focus on this because I would absolutely love developing.
I need to know EVERYTHING there is to know about developing for android; for apps and creating roms. What books I need to buy to get everything down? What programs or tutorials? I am very serious about this, someone please help me and tell me all there is to know about accomplishing this goal and where to begin.
Thanks, much appreciated!

Since you mentioned you have no programming experience.. There's three important coding styles you need to master for android.. XML, Java and C/C++. The best way is to write some beginner programs available on the Internet.
In addition to coding, you need to become comfortable with the linux tool set. If you don't already, running a linux distribution will help you learn the environment. I suggest Ubuntu, debian, or gentoo.
I don't mean to make this sound intimidating.. but developing isn't an overnight thing.. a lot of people on these forums learn as they go but have a decent amount of experience with one of these aspects. Many of us are CS or EE/ECE students or grads..

Sam's Teach Yourself Android Development in 24 hours is the book i've been messing with for a couple weeks, very helpful. I got it as a pdf

In the Chef Central -> Android forum of this site, cyanogen has a stickied thread that you need to read.

Related

[Q] Dev Questions

I am a long-term tech enthusiast. I have extensive experience in IT including networking and have a Cisco certification. I was into IT and web development when I was just 13. I'd like to get into development for Droid and do have some basic Linux experience originating several years back in Apache and other systems administration. I've been doing some reading but would like to hear it from the horses mouth. From a developer, what would you recommend I read and learn for Android development, kernels, hacking, etc. ? I'd like to participate in ROM's development, kernels, apps, tweak, tutorials, etc. I'm new to Android so I'm fairly n00b in my own right.
I have learned a metric ****ton just by searching the archives around here
Doward said:
I have learned a metric ****ton just by searching the archives around here
Click to expand...
Click to collapse
classic lol.
I really don't think there is an Android Development manual laying around. I highly doubt many people here took a linux-specific class or anything. Just from searching the forums, different web write-ups, etc.
I would say learn Java...big advantage knowing this for sure.
i agree for apps you will want to start with java. I have nto done much in kernels etc so am not sure what a good starting place is for them but for reading the code and making apps etc start with Java then learn the additional android functions etc.
SysFailure0x5a said:
I am a long-term tech enthusiast. I have extensive experience in IT including networking and have a Cisco certification. I was into IT and web development when I was just 13. I'd like to get into development for Droid and do have some basic Linux experience originating several years back in Apache and other systems administration. I've been doing some reading but would like to hear it from the horses mouth. From a developer, what would you recommend I read and learn for Android development, kernels, hacking, etc. ?
Click to expand...
Click to collapse
I'm just like you sys. Would really like to start getting into development for the android.
Sent from my PC36100 using XDA App
Personally I know nothing of this myself but I would have to trust cyanogen this whole area. Here is what I've been looking at http://forum.xda-developers.com/showthread.php?t=667298 seems to me to be the place to start.

[Q] i want to be a dev! now what?

What books or references are "must haves" for me to get started. I have zero programming experience, but I want to contribute to the android dev community instead of just consuming. I know I could probably find what I need for free online somewhere, but I prefer the structure of a textbook or something similar. Suggestions?
Cyanogen would reccomend starting with app deving and then learning basics about android. Then you'll have enough knowledge to make a decent rom
A drop of Chuck Norris's semen was placed on the IPhone. We now have the Htc Evo.
Application development is a good place to start, except that you have no programming experience. Doesn't mean you can't learn though! developer.android.com is a good place to start, but it kind of assumes you know a little something about software development. As for other resources, I'm not sure what kind of books are out there about Android. However, Android development is essentially in the Java language. You could start with a good general Java programming book, of which there are many.
That said though, there are lots of other ways to contribute. Just learning more about it (not necessarily at a developer level) and offering help to people who need help here on XDA counts as contributing! There are also things you can do around ROM development (which doesn't necessarily involve programming), theming, or any number of other things. It's just a question of where your interests and talents lie.
bkrodgers said:
Application development is a good place to start, except that you have no programming experience. Doesn't mean you can't learn though! developer.android.com is a good place to start, but it kind of assumes you know a little something about software development. As for other resources, I'm not sure what kind of books are out there about Android. However, Android development is essentially in the Java language. You could start with a good general Java programming book, of which there are many.
That said though, there are lots of other ways to contribute. Just learning more about it (not necessarily at a developer level) and offering help to people who need help here on XDA counts as contributing! There are also things you can do around ROM development (which doesn't necessarily involve programming), theming, or any number of other things. It's just a question of where your interests and talents lie.
Click to expand...
Click to collapse
+1 thanks!
Head First Java, 2nd Edition is supposed to be a good place to start. I picked it up a few months ago when I wanted to read up on it myself, but haven't had time to get into it.
Sent from my blah blah blah blah

[Q] Best way to start beginning developing?

I am starting from scratch. I've taken an introductory Visual Basic course in college thus far, as far as any sort of "programming" might go. So, pretty much scratch.
I've read around that learning Java and C++ is a good way to begin.
But, how should I go about that? I'd prefer not to take courses, as those cost money, which I'm a bit lacking in.
Any websites anyone recommends for tutorials on either?
Any recommended books?
If using old books, do those work just fine? Say, using a book based on Java 5. Are there that many new features implemented in Java 6 that I should make sure I seek out a Java 6 book instead of an older, yet at the library, Java 5 book?
Really, any helpful information that anyone can provide about how to go about it. Yes, I could just go out and blindly learn either topic, but I do trust the seasoned developers that are here, especially in the Evo forum!
Thanks for any and all help ahead of time.
Java's what you need to know. Unless you're getting into lower level development (apps using the NDK, or kernels/system level stuff), you won't need C++. Regular android development is done using Java. It gets compiled a little differently than Java, but the language itself is Java.
Once you've got a core understanding of Java, developer.android.com has articles and the SDK documentation.

[Q] Development Help??

Where should one start if they want to begin developing, porting, etc.?? I'm very interested and love the fact that everyone here seems to learn from one another. Any links to recommend?
http://forum.xda-developers.com/showthread.php?t=633246
that is the kitchen you will need. He also recommends using Ubuntu.
Then there is a video at theunlockr.com which is pretty good.
Make us something pretty that can bite the head off of a Liger!!!
LOL I have been following Virus's thread and all the work that Leoisright, TMartin, etc. are doing makes you wanna learn as much as possible to become part of the team. Thanks for the information
Directv QC Software Development
To all developers, I'm looking at creating an app to allow signing into a certain website in order to upload QC photo's and data. More info will be released as I get in contact with someone that is able to help me with this. If this is able to be accomplished, there are hundreds, if not thousands, of service tech's; tech supervisors; & upper management that are willing to pay $10-$15 per app downloaded. This creation will ease the everyday process of QC'ing multiple jobs per day. Please get back to me if you are able to assist me in this project. Thank you in advance for any help provided.

How do I become a DEV?

I was wondering what resources are out there to become a DEV and make my own ROM's. I have googled it a little bit and not really found anything worth while so far. I did run across a good book but its not going to be published for another 2 months. Does anyone know of any tutorials? Books? How to guides?
There are plenty of kitchens right here on xda. And remember when you search on google add on xda to whatever you are searching. I had a bunch of bookmarks for this but never backed them up. Sorry buddy.
Sent from my BAD A$$ EPIC TOUCH 4G
I didn't think about using the term kitchen when searching. I will give that a shot. Thanks.
Sent from my SPH-D710 using Tapatalk
bdpatch said:
I was wondering what resources are out there to become a DEV and make my own ROM's. I have googled it a little bit and not really found anything worth while so far. I did run across a good book but its not going to be published for another 2 months. Does anyone know of any tutorials? Books? How to guides?
Click to expand...
Click to collapse
I would read google's documentation on Android, learn Linux commands, and also learn java. This is a good start. If you use kitchens, you are not dev'ing. After this, reading the cyanogen wiki will teach you some of the less "official" deving methods.
Edit:
Links
First go here and learn all of it. (weeks of hard work and dedication)
http://linuxcommand.org/index.php
Then go to a local library and pick up a recently published book on java programming and learn it. (weeks of hard work)
Then learn all of this (more weeks of hard work)
http://developer.android.com/guide/index.html
Then learn all of this (more weeks of hardwork)
http://www.freeyourandroid.com/index.php
Finally get involved with Cyanogenmod
Becoming a dev is a huge commitment, it is why professional devs are paid so well.
Sent from my SPH-D710 using Tapatalk
kingsway8605 said:
I Becoming a dev is a huge commitment, it is why professional devs are paid so well.
Sent from my SPH-D710 using Tapatalk
Click to expand...
Click to collapse
I'm just curious, how much do devs usually make and who actually pays them?
Sent from my SPH-D710 using Tapatalk
Sn1per 117 said:
I'm just curious, how much do devs usually make and who actually pays them?
Sent from my SPH-D710 using Tapatalk
Click to expand...
Click to collapse
I said professional devs. The hobbyist devs on xda usually are doing it because they enjoy doing it and picked up the skills over the years. But it isn't any easier and that is why the behavior on the forums sometimes annoys them. As far as professional devs who work for a company like Samsung, they make between 50,000-100,000 a year.
As far as independent professional devs, Paper camera has sold over 1,000,000 apks at 2 dollars a pop, do the math.
Sent from my SPH-D710 using Tapatalk
I say make a couple of apps first and learn how Android works. Then move to themeing, then make kernels, then roms
Sent from my Epicâ„¢ 4G Touch
kingsway8605 said:
I said professional devs. The hobbyist devs on xda usually are doing it because they enjoy doing it and picked up the skills over the years. But it isn't any easier and that is why the behavior on the forums sometimes annoys them. As far as professional devs who work for a company like Samsung, they make between 50,000-100,000 a year.
As far as independent professional devs, Paper camera has sold over 1,000,000 apks at 2 dollars a pop, do the math.
Sent from my SPH-D710 using Tapatalk
Click to expand...
Click to collapse
Devs dont get 100% of their sales
Sent from my Epicâ„¢ 4G Touch
Here's where I learned my skills, this determines on what you're trying to develop. Most roms here, with the exception of source builds don't require much actual programming experience since they are closed source, primarily they have small tweaks like de-odexing, XML mods, etc.
Hands-On | 90% - 90% of my skills have come from hands-on experience and learning as I go along. For example, say I'm writing an app for the very first time. (Don't start with an app unless you've practiced with the platforms language first) As I went along on my first app I learned an incredible amount about android developing by reading developer.android.com and SO as I went along and came across something I wasn't sure about. Ditto kernel development, years ago I started with no knowledge and then bam I'm half a pro . Also, I knew nothing about ASP.NET/MVC/C# about a month ago, now it's kinda fluid to me.
School(Computer Science) | 8% - Yeah, it costs all that money for 8% or less. There can be some unique challenges in a software program, but almost everything you do in school is either so off the wall simple or has no real world application. I also think they spend too much time teaching by the syntax of the language, when really you should group them. Syntax is *mostly* trivial, it's better to group languages. Example: learn the Object Oriented Style (Perl, PHP, C++, Java, C#) which should give you a decent foundation in all those languages. Then learn the Procedure-Oriented Style (C, PHP, Perl, Cobol, BASIC (eww)). Then learn the rising in popularity Functional-Style (F#, SQL (mostly, this ones an exception since you often won't write many SQL scripts save for basic queries), Erlang, Haskell, C#). Notice: I listed some languages in multiple categories as the styles of programming are concepts, and some languages support either concept.
Co-Workers | 2% - Sometimes you learn by asking a co-worker or another developer. It's not how I did it primarily, but I know others who work best and learn best working in a team.
So to recap:
If you're trying to learn software programming itself I suggest starting with common scripting languages which are very easy to learn (HTML, XML (this will help for android), PHP). Then move on to some OOP languages (Java (Android*), C++). Then if you plan on working with kernel source code you should work with C and familiarize yourself with the procedure oriented style. Java is by far the easiest first language to learn OOP because of the wide-range of libraries available (to do almost anything) and the JRE, which gives you a nice garbage collector so you don't have the worry of memory management and freeing objects manually like you do in C/C++, etc.
If you just want to bake a rom with minor adjustments or a closed-source rom, I suggest you learn how to create themes first, as many of those concepts will help in baking a rom. And if you have questions this is a development community last time I checked, although sometimes it doesn't seem like it. So ask questions, ask other developers (I used to get questions ), ask on the board (if you follow the rules), ask on StackOverflow, etc. Don't be a nuisance to other developers though, I had someone that constantly blew up my phone nonstop all hours of the day asking silly silly questions. I don't mind questions, but i'd be spending time with my GF and my phone would explode with 20 questions that I already answered 20 times each
Also, some books may not be bad if you have absolutely no idea about programming whatsoever. But nowadays, you can find anything in a book on the internet. The benefits of a book is they include all their source code (usually) and can motivate you more since they give you projects and challenges. I had one Java book, and it drove me crazy because nothing was standardized. Instead of using the Java HashMap methods, or the Java Stack methods they wrote their own APIs for everything it drove me crazy :O
bbedward said:
Here's where I learned my skills, this determines on what you're trying to develop. Most roms here, with the exception of source builds don't require much actual programming experience since they are closed source, primarily they have small tweaks like de-odexing, XML mods, etc.
Hands-On | 90% - 90% of my skills have come from hands-on experience and learning as I go along. For example, say I'm writing an app for the very first time. (Don't start with an app unless you've practiced with the platforms language first) As I went along on my first app I learned an incredible amount about android developing by reading developer.android.com and SO as I went along and came across something I wasn't sure about. Ditto kernel development, years ago I started with no knowledge and then bam I'm half a pro . Also, I knew nothing about ASP.NET/MVC/C# about a month ago, now it's kinda fluid to me.
School(Computer Science) | 8% - Yeah, it costs all that money for 8% or less. There can be some unique challenges in a software program, but almost everything you do in school is either so off the wall simple or has no real world application. I also think they spend too much time teaching by the syntax of the language, when really you should group them. Syntax is *mostly* trivial, it's better to group languages. Example: learn the Object Oriented Style (Perl, PHP, C++, Java, C#) which should give you a decent foundation in all those languages. Then learn the Procedure-Oriented Style (C, PHP, Perl, Cobol, BASIC (eww)). Then learn the rising in popularity Functional-Style (F#, SQL (mostly, this ones an exception since you often won't write many SQL scripts save for basic queries), Erlang, Haskell, C#). Notice: I listed some languages in multiple categories as the styles of programming are concepts, and some languages support either concept.
Co-Workers | 2% - Sometimes you learn by asking a co-worker or another developer. It's not how I did it primarily, but I know others who work best and learn best working in a team.
So to recap:
If you're trying to learn software programming itself I suggest starting with common scripting languages which are very easy to learn (HTML, XML (this will help for android), PHP). Then move on to some OOP languages (Java (Android*), C++). Then if you plan on working with kernel source code you should work with C and familiarize yourself with the procedure oriented style. Java is by far the easiest first language to learn OOP because of the wide-range of libraries available (to do almost anything) and the JRE, which gives you a nice garbage collector so you don't have the worry of memory management and freeing objects manually like you do in C/C++, etc.
If you just want to bake a rom with minor adjustments or a closed-source rom, I suggest you learn how to create themes first, as many of those concepts will help in baking a rom. And if you have questions this is a development community last time I checked, although sometimes it doesn't seem like it. So ask questions, ask other developers (I used to get questions ), ask on the board (if you follow the rules), ask on StackOverflow, etc. Don't be a nuisance to other developers though, I had someone that constantly blew up my phone nonstop all hours of the day asking silly silly questions. I don't mind questions, but i'd be spending time with my GF and my phone would explode with 20 questions that I already answered 20 times each
Also, some books may not be bad if you have absolutely no idea about programming whatsoever. But nowadays, you can find anything in a book on the internet. The benefits of a book is they include all their source code (usually) and can motivate you more since they give you projects and challenges. I had one Java book, and it drove me crazy because nothing was standardized. Instead of using the Java HashMap methods, or the Java Stack methods they wrote their own APIs for everything it drove me crazy :O
Click to expand...
Click to collapse
My school must have a great compsci program because they focus on good programming styles and not syntax. There is no reason to start with any language besides java if your goal is to develop Android. And while I agree with your learning as you go approach, it would be a mistake and overwhelming imo for someone to jump into Android development without having a basic understanding of Linux, java, and Android. My advice given was for helping op to become an Android dev, not someone who posts roms. They are not always the same thing.
Sent from my SPH-D710 using Tapatalk
bbedward said:
Here's where I learned my skills, this determines on what you're trying to develop. Most roms here, with the exception of source builds don't require much actual programming experience since they are closed source, primarily they have small tweaks like de-odexing, XML mods, etc.
Hands-On | 90% - 90% of my skills have come from hands-on experience and learning as I go along. For example, say I'm writing an app for the very first time. (Don't start with an app unless you've practiced with the platforms language first) As I went along on my first app I learned an incredible amount about android developing by reading developer.android.com and SO as I went along and came across something I wasn't sure about. Ditto kernel development, years ago I started with no knowledge and then bam I'm half a pro . Also, I knew nothing about ASP.NET/MVC/C# about a month ago, now it's kinda fluid to me.
School(Computer Science) | 8% - Yeah, it costs all that money for 8% or less. There can be some unique challenges in a software program, but almost everything you do in school is either so off the wall simple or has no real world application. I also think they spend too much time teaching by the syntax of the language, when really you should group them. Syntax is *mostly* trivial, it's better to group languages. Example: learn the Object Oriented Style (Perl, PHP, C++, Java, C#) which should give you a decent foundation in all those languages. Then learn the Procedure-Oriented Style (C, PHP, Perl, Cobol, BASIC (eww)). Then learn the rising in popularity Functional-Style (F#, SQL (mostly, this ones an exception since you often won't write many SQL scripts save for basic queries), Erlang, Haskell, C#). Notice: I listed some languages in multiple categories as the styles of programming are concepts, and some languages support either concept.
Co-Workers | 2% - Sometimes you learn by asking a co-worker or another developer. It's not how I did it primarily, but I know others who work best and learn best working in a team.
So to recap:
If you're trying to learn software programming itself I suggest starting with common scripting languages which are very easy to learn (HTML, XML (this will help for android), PHP). Then move on to some OOP languages (Java (Android*), C++). Then if you plan on working with kernel source code you should work with C and familiarize yourself with the procedure oriented style. Java is by far the easiest first language to learn OOP because of the wide-range of libraries available (to do almost anything) and the JRE, which gives you a nice garbage collector so you don't have the worry of memory management and freeing objects manually like you do in C/C++, etc.
If you just want to bake a rom with minor adjustments or a closed-source rom, I suggest you learn how to create themes first, as many of those concepts will help in baking a rom. And if you have questions this is a development community last time I checked, although sometimes it doesn't seem like it. So ask questions, ask other developers (I used to get questions ), ask on the board (if you follow the rules), ask on StackOverflow, etc. Don't be a nuisance to other developers though, I had someone that constantly blew up my phone nonstop all hours of the day asking silly silly questions. I don't mind questions, but i'd be spending time with my GF and my phone would explode with 20 questions that I already answered 20 times each
Also, some books may not be bad if you have absolutely no idea about programming whatsoever. But nowadays, you can find anything in a book on the internet. The benefits of a book is they include all their source code (usually) and can motivate you more since they give you projects and challenges. I had one Java book, and it drove me crazy because nothing was standardized. Instead of using the Java HashMap methods, or the Java Stack methods they wrote their own APIs for everything it drove me crazy :O
Click to expand...
Click to collapse
This is great info thank you. I have linux experience and I have made a couple of hello world apps but nothing extensive. It looks like maybe i should start with a little theming or something like that. I know html and can read through XML. I think i will try and find some Java tutorials or books to get me going there. Know of any guides on theme's?
kingsway8605 said:
My school must have a great compsci program because they focus on good programming styles and not syntax. There is no reason to start with any language besides java if your goal is to develop Android. And while I agree with your learning as you go approach, it would be a mistake and overwhelming imo for someone to jump into Android development without having a basic understanding of Linux, java, and Android. My advice given was for helping op to become an Android dev, not someone who posts roms. They are not always the same thing.
Sent from my SPH-D710 using Tapatalk
Click to expand...
Click to collapse
My schools good too I'm not saying its all syntax but its a lot of write your code readable in the professors style. I've learned more in 3 months on the job than 2 years of school. I've learned way more from self teaching tho.
And for app development Linux knowledge isn't really necessary since you can develop android apps on any platform, but Java and OOP styles is necessary knowledge.
Sent from my SPH-D710 using Tapatalk
bdpatch said:
This is great info thank you. I have linux experience and I have made a couple of hello world apps but nothing extensive. It looks like maybe i should start with a little theming or something like that. I know html and can read through XML. I think i will try and find some Java tutorials or books to get me going there. Know of any guides on theme's?
Click to expand...
Click to collapse
What you should start with greatly varies with what you want to develop
Sent from my SPH-D710 using Tapatalk
bdpatch said:
I was wondering what resources are out there to become a DEV and make my own ROM's. I have googled it a little bit and not really found anything worth while so far. I did run across a good book but its not going to be published for another 2 months. Does anyone know of any tutorials? Books? How to guides?
Click to expand...
Click to collapse
Read and follow this information from Cyanogen himself
http://forum.xda-developers.com/showthread.php?t=667298
jerdog said:
Read and follow this information from Cyanogen himself
http://forum.xda-developers.com/showthread.php?t=667298
Click to expand...
Click to collapse
Thank you for the link. I got lots of stuff to start reading through now. I also found this book: http://www.barnesandnoble.com/w/xda...7854?ean=9781119951384&itm=1&usri=android+rom
It should hopefully be a good one as well when its published.
bdpatch said:
Thank you for the link. I got lots of stuff to start reading through now. I also found this book: http://www.barnesandnoble.com/w/xda...7854?ean=9781119951384&itm=1&usri=android+rom
It should hopefully be a good one as well when its published.
Click to expand...
Click to collapse
It will be - I know the guys who've put it together.

Categories

Resources