[Q] How to become an Android developer? - General Questions and Answers

I've seen all the work you guys here at XDA developer do (and it's all really great).
And i'd really like to be able to develop stuff for android devices like you guys!
I know how to use Eclipse to develop apps and i've made a few apps already (no games or any real good stuff because i'm still learning right now).
But I want to be able to develop ROMs,kernels,...etc.U know!!
I've signed up for a java coarse at "New Horizons" training center and i'm gonna start in about a month.
But that won't teach me everything,it won't even teach me everything about application-creating
So,here I am,asking you guys (android developers):
How can I learn the stuff that you've learned?
What websites should I check out?
Where and how can I learn how to develop complete apps,games,Roms and kernels for any android smartphone?
In other words;Tell me how you learned all this stuff,and how can I learn it too?
Thank U!!!

Custom ROMS are not created from scratch.
Existing ROMs from the manufactors are taken appart, dissected, modified and packed again to be uploaded here.
The best way to start on that is just by taking apart existing ROMs and looking through the files.
Modifiy some, repack them and check if it still works.
Repeat said process .
If you want to go deeper read up about decompiling & recompiling apk files.
Modifying bak smali code.
For creating your own kernels, just use google, so much info about that. Its not an android only topic, but a linux topic and the internet has plenty of info on that.
Good luck on your journy .

The first thing you have to do is to understand the system. This means you have to understand Linux, the kernel, the datasystem(because Android is obvisiously based on Linux).
You have to be able to understand written code or program/code yourself.
The best way to code for android is to learn java.
Read this here: http://developer.android.com/guide/index.html

Ok,thanks for the information.
But let me tell you what I already know and understand:
Android is Linux,I know what linux is,I know everything about it and i'm already using GNU Fedora and Ubuntu (I have spent countless hours reading the "about Ubuntu" and "about GNU"),In Android or Linux everything is a file and everything in the system or the apps has a file .
Now I have some questions that I need you to answer first before adding anything else:
1-Is learning Java enough?don't I need to learn any other programing languages?And if I do,then what languages will I need to learn?
2-how can I learn to build or modify an android kernel (linux)?give me a good site or something?
3-how can i learn to decompile and recompile apks and roms?
4-What will I be needing to learn in order to buid a kernel?
5-What programing langusge is the android source code written in?I think it's java,am I right?
I hope you answer these questions before adding anymore information.
Thanks in advance,and I hope it's not any trouble)

1-No, you need to compile and modify kernels etc. therefore you need to program in C(I guess)
2- Well, buy books about Linux and Kernels etc. Its quite difficult to teach it. You gotta learn yourself.
3- Decompiling and recompiling is not an option. Its like stealing - Dont modify apks without permission. If you got permission then you modify apks with the SDK(Java).
Roms are often compiled in C(I think)
4 - Books and the will to learn.
5. Android Source Code is C(like Linux), Android Apps are Java.

Quinity said:
1-No, you need to compile and modify kernels etc. therefore you need to program in C#(I guess)
2- Well, buy books about Linux and Kernels etc. Its quite difficult to teach it. You gotta learn yourself.
3- Decompiling and recompiling is not an option. Its like stealing - Dont modify apks without permission. If you got permission then you modify apks with the SDK(Java).
Roms are often compiled in C#(I think)
4 - Books and the will to learn.
5. Android Source Code is C#(like Linux), Android Apps are Java.
Click to expand...
Click to collapse
Just making sure you mean c, not c# right??

Try visiting the android website. There is a tutorial on how to get started with android development.
There is a fee that you would need to pay per year in order for your application to appear on the android market where you will be able to sell your product.
Java will be advantageous when it comes to android programming and if you know J2ME that will be a bonus as well.
ps:Learn from examples, buy a good book for beginners: “Hello, Android” and “Beginning Android“.
(i’m not a developer)

Nilurun said:
There is a fee that you would need to pay per year in order for your application to appear on the android market where you will be able to sell your product.
Click to expand...
Click to collapse
I believe it is a one time fee when you sign up, not a yearly fee.

Ok,I'm already using the Android developer website,but the whole thing takes time to read all the guidelines and do tutorials and packages.
So all i'm asking here:
What programming languages do I need to learn in order to be able to understand the native android source code and develop everything starting from kernel down to apps,I already know that I need to learn Java for apps and thanks to "Quinity" I know I need to learn C to understand the native source code.
I can easily learn C at any professional training center.The questions now are:
1-how and where can I learn to edit the Linux kernel and decompile and recompile ROM and APK files?
2-why do I even need to learn Java ME (formerly J2ME)?
I understand that Java ME is the java environment originally running on small devices with limited processors and performance such as mobile phones and smart phones,but what is the use of it when it comes to the app development,or any Android development at all?
And thanks for all the replies.

One more thing,I have to make sure what the android source code written in.And Quick answers;PLEASE.
Is it C,or C#?

C
Check out the wikipedia article, which states at the beginning:
The Android open-source software stack consists of Java applications running on a Java-based, object-oriented application framework on top of Java core libraries running on a Dalvik virtual machine featuring JIT compilation. Libraries written in C include the surface manager, OpenCore[21] media framework, SQLite relational database management system, OpenGL ES 2.0 3D graphics API, WebKit layout engine, SGL graphics engine, SSL, and Bionic libc.

Dark3n said:
C
Check out the wikipedia article, which states at the beginning:
The Android open-source software stack consists of Java applications running on a Java-based, object-oriented application framework on top of Java core libraries running on a Dalvik virtual machine featuring JIT compilation. Libraries written in C include the surface manager, OpenCore[21] media framework, SQLite relational database management system, OpenGL ES 2.0 3D graphics API, WebKit layout engine, SGL graphics engine, SSL, and Bionic libc.
Click to expand...
Click to collapse
Thanks,the article really did help a lot.
So,now I need to learn Java SE (without question),but what about Java EE and Java ME,will they be useful in the app development process,will I need them?
And what If I can't learn C (it's extremely hard to find a training center that teaches C these days),will learning C++ or C# do me any good?
I know that the source code is written in C,but is it really a big difference between the three,If I learn C# or C++ will I still be able to do everything I need to do and fully understand the code?
note that i'm on a tight schedule for now and I need to learn only the stuff I can't do without.

speeed_demon47 said:
Thanks,the article really did help a lot.
So,now I need to learn Java SE (without question),but what about Java EE and Java ME,will they be useful in the app development process,will I need them?
And what If I can't learn C (it's extremely hard to find a training center that teaches C these days),will learning C++ or C# do me any good?
I know that the source code is written in C,but is it really a big difference between the three,If I learn C# or C++ will I still be able to do everything I need to do and fully understand the code?
note that i'm on a tight schedule for now and I need to learn only the stuff I can't do without.
Click to expand...
Click to collapse
I think you are missunderstanding something here.
You should start by just learning java, the different EE ME SE etc. are still java.
The difference is that those are sets of java platforms. They bring, as does the android platform, prebuild libaries along, these contain functions (i.e. print that, create datastructure X) so you don't have to write every tiny bit of code.
Forget about those.
You want to use java on the android platform, which still uses java, but brings along its own libaries with prebuild code you can use ( See http://developer.android.com/reference/packages.html ).
So just learn java, if you want to work with android you can learn java on the android platform, this way you will already be familiar with the libaries provided by android.
I would say C# is more similar to java and C++ is more similar to C.
I don't understand what you mean with "do everything i need to do".
What do you need to do?
"Understand code".
Understanding code does require more than knowing what each line does, you will have to see the bigger picture ,not just few lines of code, to understand what is does. Depending on how the code is written (tidy or confusing), is the code commented? It might take ages to understand it.
Programming is sometimes a bit like art . Code can be beautiful or horrible
You don't have to do everything in a training center either.
The internet, time and interest is enough. There are so many tutorials and pages available...
You could have also found most of the answers by just using google...
Wikipedia article about java holds the information about the differences between EE/ME/SE etc...
Searching for terms like "difference C C sharp" etc. holds the answer to that question...
So maybe a training center is better for you to learn those programming languages, as "google skills" will certainly be required to teach you those things yourself.
What tight schedule are you on?

Dark3n said:
I think you are missunderstanding something here.
You should start by just learning java, the different EE ME SE etc. are still java.
The difference is that those are sets of java platforms. They bring, as does the android platform, prebuild libaries along, these contain functions (i.e. print that, create datastructure X) so you don't have to write every tiny bit of code.
Forget about those.
You want to use java on the android platform, which still uses java, but brings along its own libaries with prebuild code you can use ( See http://developer.android.com/reference/packages.html ).
So just learn java, if you want to work with android you can learn java on the android platform, this way you will already be familiar with the libaries provided by android.
I would say C# is more similar to java and C++ is more similar to C.
I don't understand what you mean with "do everything i need to do".
What do you need to do?
"Understand code".
Understanding code does require more than knowing what each line does, you will have to see the bigger picture ,not just few lines of code, to understand what is does. Depending on how the code is written (tidy or confusing), is the code commented? It might take ages to understand it.
Programming is sometimes a bit like art . Code can be beautiful or horrible
You don't have to do everything in a training center either.
The internet, time and interest is enough. There are so many tutorials and pages available...
You could have also found most of the answers by just using google...
Wikipedia article about java holds the information about the differences between EE/ME/SE etc...
Searching for terms like "difference C C sharp" etc. holds the answer to that question...
So maybe a training center is better for you to learn those programming languages, as "google skills" will certainly be required to teach you those things yourself.
What tight schedule are you on?
Click to expand...
Click to collapse
Yes,I already know all about java,I read the articles on wikipedia,but why would I need to learn java enterprise? Isn't it mostly used around internet applications and servers? Can't I just use the APIs if i'm going to build an app that needs internet or server connectivity?
And why would I need to learn java Micro? Doesn't android use dalvik virtual machine to run apps? I mean,java Micro is mostly used to create feature phone apps,why would I need it with android?
There's something I don't understand though,on wikipedia the article about android says this:"Applications are usually developed in the Java language using the Android Software Development Kit, but other development tools are available, including a Native Development Kit for applications or extensions in C or C++"
So,the question is;what is the difference between apps developed in java and apps developed in C or C++?
The problem about C# is that I don't know anything about it;can't find any articles on wikipedia and other sites really don't help!!!
I meant by "understanding the code",having the ability to understand the command lines,what they do,what each line is responsible for and having the ability to edit or adjust something,.....etc.
And for the tight schedule;I need to learn everything about android within 6 months (I don't need to learn C as much,but it'd be a bonus),and that's why I go to training centers,faster and more efficient than self learning.
What did u mean by "google skills"?
And what did u mean by "learn java on the android platform"?
Thanks for the help and providing quick answers.

speeed_demon47 said:
Yes,I already know all about java,I read the articles on wikipedia,but why would I need to learn java enterprise? Isn't it mostly used around internet applications and servers? Can't I just use the APIs if i'm going to build an app that needs internet or server connectivity?
And why would I need to learn java Micro? Doesn't android use dalvik virtual machine to run apps? I mean,java Micro is mostly used to create feature phone apps,why would I need it with android?
There's something I don't understand though,on wikipedia the article about android says this:"Applications are usually developed in the Java language using the Android Software Development Kit, but other development tools are available, including a Native Development Kit for applications or extensions in C or C++"
So,the question is;what is the difference between apps developed in java and apps developed in C or C++?
The problem about C# is that I don't know anything about it;can't find any articles on wikipedia and other sites really don't help!!!
I meant by "understanding the code",having the ability to understand the command lines,what they do,what each line is responsible for and having the ability to edit or adjust something,.....etc.
And for the tight schedule;I need to learn everything about android within 6 months (I don't need to learn C as much,but it'd be a bonus),and that's why I go to training centers,faster and more efficient than self learning.
What did u mean by "google skills"?
And what did u mean by "learn java on the android platform"?
Thanks for the help and providing quick answers.
Click to expand...
Click to collapse
You miss understood again...
I will try to be clearer:
I meant by google skills, that you would find most answer yourself if you just use a search engine with the right terms.
You DONT need to learn Java ME/SE etc.
You can and will only use the APIs provided by the android toolkit.
So if you already know java, google "android developement tutorial" and start build some apps to get experience.
Forget C#, you don't need that, AT ALL for android.
Android apps, only need java.
If you want to understand the deeper layers of android, those are written in C.
But "int i=0;" is a variable i with value 0 in java and in C. So if you just want to read some of the code of the deeper layers and change small bits, you don't need to take extra courses in C.
So the conclusion is, you need to understand the android architecture and be able to write apps and have experience...
I would recommend to just think of some thing and write an app for that, learning by doing. Occasionally you can read some theory about the underlying concept of what you are doing.
An example would be to write an app that sorts values the user enters.
You would use already premade sort and array functions from the android api
Something like
Code:
Array x;
x.addAll(y);
x.sort(Descending);
To get deeper knowledge you could then browse the android sourcecode and see how x.sort actually sorts the array.

I think Android application is writen in Java ?
But maybe it is not that your question?

Dark3n said:
You miss understood again...
I will try to be clearer:
I meant by google skills, that you would find most answer yourself if you just use a search engine with the right terms.
You DONT need to learn Java ME/SE etc.
You can and will only use the APIs provided by the android toolkit.
So if you already know java, google "android developement tutorial" and start build some apps to get experience.
Forget C#, you don't need that, AT ALL for android.
Android apps, only need java.
If you want to understand the deeper layers of android, those are written in C.
But "int i=0;" is a variable i with value 0 in java and in C. So if you just want to read some of the code of the deeper layers and change small bits, you don't need to take extra courses in C.
So the conclusion is, you need to understand the android architecture and be able to write apps and have experience...
I would recommend to just think of some thing and write an app for that, learning by doing. Occasionally you can read some theory about the underlying concept of what you are doing.
An example would be to write an app that sorts values the user enters.
You would use already premade sort and array functions from the android api
Something like
Code:
Array x;
x.addAll(y);
x.sort(Descending);
To get deeper knowledge you could then browse the android sourcecode and see how x.sort actually sorts the array.
Click to expand...
Click to collapse
Ok,good,thanks.
So,I don't need EE or ME,right? But if I learn them later on (maybe next year or so),would they come in handy or would they be useless?
I've been developing in Eclipse and SDK with ADT plugin,it's very helpful and I've completed most of the tutorials so far (hello world,tom cat,......etc) and started building something of my own.I've been also using Titanium app accelerator,it's really good too (still mainly eclipse but the tutorials and help are better);but so far all i've done is just copy the code and that's all,I didn't write a single line of code (maybe a few lines,but that's it).
I also started a course a week ago (learning Linux kernel),so far so good,And I found a good site to teach me image files.
But a little hung up on the programming languages section,so,conclusion;I need to learn Java Standard,would enterprise or micro be any good?
And about the native source code,will java be enough? won't I need to learn C?
Thanks for the quick responses,it's a lot of help.

HuTcHx said:
I think Android application is writen in Java ?
But maybe it is not that your question?
Click to expand...
Click to collapse
I already know that,but that's not what i'm asking about.

The enterprise edition and what not just offer different sets of libary for other platforms, aslong as long as you program for android devices you will have little use for knowledge of the other editions.
Think of it as being a specialised technican for cars. They all have engines and 4 tires and a steering wheel and all technicans can work with that, but will you work in a VW repair shop or in the Mercedes repair shop?
In this case you will work on the android platform, as long as you don't want to switch to server programming in java (Java EE) or embedded systems (Java ME), there is no need to get familiar with that.
Java SE means standart edition and basicly already included in the android libaries.
If you don't want to keep copy pasting code, try something different that has not been done in a tutorial, or modifiy a tutorial to do something else.
But there is nothing wrong with copying code, if you have written a good piece of code there is no harm in reusing it elsewhere.
The android sourcecode is a mix of java and C, the lower layers are written in C the higher ones in java.
I don't know what you want to achieve with your knowledge? To write apps you don't need to learn C.
It is difficult to master all fields, easier if you choose one.

Dark3n said:
The enterprise edition and what not just offer different sets of libary for other platforms, aslong as long as you program for android devices you will have little use for knowledge of the other editions.
Think of it as being a specialised technican for cars. They all have engines and 4 tires and a steering wheel and all technicans can work with that, but will you work in a VW repair shop or in the Mercedes repair shop?
In this case you will work on the android platform, as long as you don't want to switch to server programming in java (Java EE) or embedded systems (Java ME), there is no need to get familiar with that.
Java SE means standart edition and basicly already included in the android libaries.
If you don't want to keep copy pasting code, try something different that has not been done in a tutorial, or modifiy a tutorial to do something else.
But there is nothing wrong with copying code, if you have written a good piece of code there is no harm in reusing it elsewhere.
The android sourcecode is a mix of java and C, the lower layers are written in C the higher ones in java.
I don't know what you want to achieve with your knowledge? To write apps you don't need to learn C.
It is difficult to master all fields, easier if you choose one.
Click to expand...
Click to collapse
So,learning java enterprise isn't really important;but is it important if I want to excel in the development process?
But what's the use of learning Micro edition AT ALL when it comes to android development???
Isn't it used to develop apps for feature phones and PDAs,not smartphones?
And after I learn Java standard will I need to learn any special libraries for android? I mean,will I be able to get to writing the code right away or do I need to learn about the android files and libraries? or are they java standard already? I know I need to learn to compile the packages,but is that it?
And what about XML files,I can do them with JDK or Apache Ant,right? so,I don't need to worry about them,do I?
I'm trying to learn as much I can from the dev guide and the tutorials on the developers site,but the dev guide is too long to both read and comprehend,and that's basically a huge problem,cuz I have a job and education and I can't find time to know everything in the dev guide.
I know it'll be difficult to master all fields,but the team I'm going to work with needs someone who's able to edit the deeper layers of the code and,so I think I'll need both java and C for that job,it don't matter anyways I have time to learn both.

Related

Best place to get started ? ? ?

. . . with understanding development using Java for Android?
Do I start with Java books?
Where do I read about how to set up an Android development environment? I'm trying to read through everything at the Android Developers website, but I was hoping someone could point me towards better/more information.
I know this is a VERY n00b question, but in order to avoid asking any further n00b questions, I'd like to come to this party better equipped.
TIA -
Darryl
You HAVE to be good at java before you can start programming for android. C/C++ too if you intend to develop something performance hungry.
I suggest that you look at an introduction to developing in Java on desktop and familiarize yourself with Java syntax. If you haven't programmed anything before then also familiarize yourself with programming techniques and object oriented programming in java.
To be honest, it takes 4 years on college to learn that. You may be able to learn it earlier, given that you put enough effort but don't expect programming anything useful anytime soon.
Thank you!! At least I have a starting point. Never too late to begin.
Gonna see if starting with Introduction to Java Programming, Comprehensive Edition is something that works for me.
Thanks again!!
sorry for double post
Ive managed to set up Eclipse 3.5 and the Android SDK.
Then I downloaded the components to develop for Android 1.5, 1.5, and 2.x(.x)
Also installed the USB driver(on an WinXP machine) and that's all there is to it, I think.
As for Java, I have an old book(or bible, judging by the size) on Java 1.5 from Deitel.
But right now, Im just looking at the official trails on sun.com:
http ://java.sun.com/docs/books/tutorial/index.html
I guess learning the syntax is one thing.
Learning programming concepts and OO are two other things.
Then there are algorithms and programming techniques.
Then there is familiarization with how the Android platform differs from regular Java applications/applets/etc.
I think that covers the basic steps towards Android programming in java.
If I missed anything, can someone fill me in please?
Thanks!
maybe someone knows of a open source repos. you can look at examples. Like planet-source-code dot com but with android examples.

I want to develop.

im looking to start developing android apps. should i start goggling how to develop android apps, or should i learn c++ first?
i have a 500 page PDF on c++ ( from the university that my brother goes to). the pdf is for beginner's learning to c++ it starts of with the common hello world code and advances.is this a good start?
ps: i hope this is the right section.
Damn! 500+ Pages and for Beginners. I couldn't write that much if I had a whole life time to do it. And maybe Android Q&A.
And yeah dude Google then Learn. Or maybe, Google and Learn. OR! Google what you should do first. SMART!
I would suggest you take a course on it then do some real world placement with seasoned programmers, you wont really develop all of the required skills using a beginners guide to programming.
Android is Java not C++.
I heard that a good Java introductory book is Head First Java. If you have some programming experience I would recommend Thinking in Java.
After you are confortable with Java, you could move to Android specific things. Good luck!
thanks for the replies. the 500 pages of C++ are pdf, and the font is kind of big. im ganna keep learning from that for a couple of weeks to get the very basics. then ill move on to java.
PS: another nub question, what dose Linux have to do with android? is it better to develop on Linux or windows 7?
Android is based on Linux. But you can develop in any platform you want. It is the same Linux, windows or OSX, whatever you have would work.
janfsd said:
Android is based on Linux. But you can develop in any platform you want. It is the same Linux, windows or OSX, whatever you have would work.
Click to expand...
Click to collapse
im a little confused .
andriod uses the syntax java,while andriod is based off linux which uses syntax c, c++, java and fortan. so dose andriod use the java part of linux only or what?
To be more specific, it is based on the Linux Kernel, which is written in C. All the apps are already Android specific, so written in Java. Google developed their own virtual machine (Dalvik) so the developers can use it. It is Java based (on the 1.5 version), but it doesn't support all Java classes. It is still possible to write in c++ with the NDK, but only if you need the extra performance or maybe write a game in OpenGL. So you would stick to Java.
If you need to communicate with kernel, or your application has to do something with great calculation (Such as encoding or decoding), you may need to through Java layer and native layer by JNI, than you need C/C++. Else you just need to write your application by Java.
okay that clears it up, thanks guys. now i just gotta give it time and dedication.

What language would i have to learn for Android?

If i wanted to help dev for this xda scene and android in general, what language (programming) should i used first?
I know android is in C and java, but just wondering, i really wanna get started
I'm very interested in some basic knowledge as well. I've done some very basic C++ stuff years back, but know nothing of linux. I'd love to star this as a hobby and if nothing more be able to try to read the code and understand what others are making. Anyone have any good links to some starter guides?
I believe it Java
Beastclaw said:
I believe it Java
Click to expand...
Click to collapse
for linux? arent kernels and stuff based in c?
Depends on what you're doing, apps and such are done in Java and XML, but the framework for android is done in C/C++ (best I can tell, I've never made mods to a rom or anything, maybe when I have more time in a couple of weeks).
For C, I like King's book (and it seems to be a popular one):
http://knking.com/books/c/
The first edition can frequently be found for <$10 if you look enough, and needless to say that the basic concepts of the C language haven't changed enough (at all?) to warrant paying SO MUCH MORE for the 2nd edition.
For Java, well I have a couple of books but neither are great. Somebody else probably knows of a book or site. Once you pick up basic Java, look at Google's guides to programming for Android, it contains the little details you'll need to make the code do what you want in the phone.
jasoninator said:
Depends on what you're doing, apps and such are done in Java and XML, but the framework for android is done in C/C++ (best I can tell, I've never made mods to a rom or anything, maybe when I have more time in a couple of weeks).
For C, I like King's book (and it seems to be a popular one):
http://knking.com/books/c/
The first edition can frequently be found for <$10 if you look enough, and needless to say that the basic concepts of the C language haven't changed enough (at all?) to warrant paying SO MUCH MORE for the 2nd edition.
For Java, well I have a couple of books but neither are great. Somebody else probably knows of a book or site. Once you pick up basic Java, look at Google's guides to programming for Android, it contains the little details you'll need to make the code do what you want in the phone.
Click to expand...
Click to collapse
Thanks a lot for the reply! I will look into some book whenever I can, for now, its Google
Sent from my ADR6400L using XDA Premium App
I just started working on programming apps for the droid a few nights ago. I started out with:
http://www.makeuseof.com/tag/write-google-android-application/
After that I went to the Android Tutorials located at:
http://developer.android.com/resources/browser.html?tag=tutorial
Yesterday I purchased Beginning Android Application Development. This has been a good book so far, only on chapter 2 but I've learned a few things in just the HelloWorld app that I didn't learn with the Google Tutorials.
Today I ordered Java Programming 24 Hour Trainer. I am having a hard time finding a good starting Java book but this looks to be the best I could find. I haven't had any hands on with this book yet so I can't give ya my thoughts on this one yet.
Hopefully this helps ya out a little. Good luck!
If you're looking to do native applications that anyone can run, Java with the android SDK is what you need to learn. However, technically you can program in about any language on android, but it generally requires extra installing (which many would consider bloat). Easy to install languages are ones like python http://pygame.renpy.org/. http://news.ycombinator.com/item?id=2476649 and http://code.google.com/p/android-scripting/wiki/SharingScripts. Since android is linux, you can put pretty much anything you want on there as long as you can get past compiling things with the ARM toolchain. You could even stick a small web server on it if you really wanted like nginx or lighttpd.
You could do quite a bit in a web "application" as well if you have hosting somewhere. The native browser and ones like opera and firefox can render just about any sort of ajax initiated effect. The advantage to doing this would allowing what you do to be OS neutral, so it could run on any device, not just android. Obviously, the drawback would be performance.
There is another project besides the python one above for additional languages here http://code.google.com/p/android-scripting/. This supports python, perl, beanshell, bash and lua (as well as contains interpreters for testing code in all of them).
If you're looking to do development for those of us that have rooted and such, C would be the better option (assuming you're interested in kernel and android source code development).
The community (free) version of Intellij IDEA IDE has pretty good android development support (as well is general java support) and testing (junit, phpunit, etc). They're running a 40% off sale currently as well to buy the full IDE (which supports many other programming languages like php, python, ruby, javascript, etc).
Well worth the money imho; I used netbeans, eclipse (which also supports android development through a plugin) and several other IDEs before it and would never go back. They actually care and reply to bug reports you file as well. I've submitted 2 in the past few months and both have either been partially fixed or will be fixed in the next version. They also give roadmaps of what will be in upcoming versions and are very open about software issues and public relations. You'd think such things would be normal for professional apps, but you would be shocked.
http://www.jetbrains.com/idea/
If you're looking for decent books, usually the O'Reilly ones are good (the books with the animals on the front) http://oreilly.com/store/. O'reilly has at least one book that's recent on Android development. Books published by Apress tend to be pretty good as well.
the android kernel is in C, so you would need to know C++ to play aroudn with ROMs and kernels. to just write an app, you only need to know java.
i just wrote my first app last year, and even made my first kernel to go along with it. granted the kernel i only changed one file, a couple hunder lines of new code. and the app was a great starter project for anyone in this position, had a few different semi easy activities, a 4 tabbed app, to show and learn how it all works together.
great experience, just hit me up if you have specific questions.

Best Programming Language to learn for beginners?

Alright before you all have a go on him, I know this isn't the right place to post neither this website but I am active in this site so don't want to create account on another site just to ask this question. I am student and n00b in terms of Programming. I am thinking of joining extra classes in summer vacation. Of course I want to become software engineer. I want to know which will be best language for me to start. C, C++ or dot net? Visual basic looks easy to use but not sure if it has much value in future. I am confused so thought I may get help from these experienced developers. I am in the last year of High School btw.
I am n00b so don't go hard on me If I said anything stupid
friend863 said:
Alright before you all have a go on him, I know this isn't the right place to post neither this website but I am active in this site so don't want to create account on another site just to ask this question. I am student and n00b in terms of Programming. I am thinking of joining extra classes in summer vacation. Of course I want to become software engineer. I want to know which will be best language for me to start. C, C++ or dot net? Visual basic looks easy to use but not sure if it has much value in future. I am confused so thought I may get help from these experienced developers. I am in the last year of High School btw.
I am n00b so don't go hard on me If I said anything stupid
Click to expand...
Click to collapse
Studying C/C++ will be kick start in programming. For future scope, studying Java is good, because Java has its own different fields like Standalone application, web application, and Android of course.
If you're opting for .NET, be sure you're learning the latest version, as .NET versions change from time to time.
And also there are several modern languages like Python, Ruby, Perl etc. Don't know much about its scope.
But everything just emerged from C or Java. So first making a base is what it matters.
EDIT: Don't study Visual Basic as a separate Course, if its included in .NET then its fine. As VB is somewhat a dead technology, most companies are not using it. Studying Silverlight with .NET would be a good choice though.
The best language for me and easy to learn is python programming even noob can create thier own project or apps. bcoz it is embedable in all apps u can understand even if u r n0t a programmer..
Actually any programming language is good to get to know programming in general and to exercise your brain to think/work this way.. oncve you advance a little bit, you will also have the knowledge to know which language to go specific on..
because of my studies, I started with assembler and C, C++, Java, C#.
it depends on what you want to do.
you want to program Android application, use Java, Windows Phone use C#...
i neglected programming on my studies.. i was too lazy. but now i want to be a developer somehow..
so Java for Android applications?
so how about Developing a Rom/Kernel?
Python will be easiest and once you know how to program in one language all others will be much easier to learn.
Sent from my HTC Vision using XDA
Thanks guys, looking forward to it.
The first programing language I used was C.
I've started with C++. But You should try .NET at the beggining. It's so simple. Almost drag&drop method. I used it to create a lot of code generators for my game and other projects.
You should also try AutoIt. Maybe quite harder, but still useable.
I would say, start either with Java or Python.
Why? No specific reason, but they are easy to learn and have a wide area where they can be used later.
I would start with ActionScript 3.0 and/or Java. The first one is the easiest and most fun to program in
If anyone is interested in applications for Android, you should try App Inventor.
http://www.appinventor.mit.edu/
You should try python, becase as others say, it's pretty easy, and if you want to be more motivated, try udacity.com. This is university that operate entirely online. You can view lectures, do quizes, there are also final exams. They start 101 Computer Science (where you learn basics) at 16 april. And guess what, they use python! Even on harder classes.
I wouldn't encourage starting with C or C++. Java and C# are a bit higher level languages and thererfore help you get started faster and let you consentrate on the things that matter most. I would prefer C# over Java as Java has gotten a bit messy in some places, has some gaps in it's standard library, and lacks in standard user interface tools.
Another option to C# would be JavaScript, CSS, and HTML, but the compiler in C# can help you by pointing out mistakes that JavaScript tools can not. Also, if you go this route, don't try to make your code run well on many browsers as that will only cause extra headiche while you are trying to learn the basics. Actually, if you want to use JavaScript over C#, Windows 8 WinRT programming could be a good place to look at. However, it's still in development and lacks in documentation and learning materials when compared to more mature technologies.
If u want work in buisness then go Java. But its very expensive to use because it needs large resources. If u want go for new language try Scala.
JAVA and C++ are the most widely used languages ​​in the world of work today.
But if you want to do web, starts with PHP. It's fairly simple to understand and you can quickly get to Object Oriented concepts, and use simple Design Patterns.

How to Program Own Apps in Android 4.4.4 KitKat

I am a programmer who has programmed in x86 Assembler, Visual C++ under Windows and DOS.
I need to be able to do own applications for Android KitKat 4.4.4
I need any help and information such as manuals, books, lists of commands, lists of functions, C compiler or, best, Assembler compilers for a given processor, etcetera.
I would like to code in Assembler. I guess I need an Assembler for a given processor and cell phone. In case not possible, I need a C compiler for Android 4.4.4 KitKat. I need the basic rules on how to code for this OS as well as the OS calls which I can use, as well as a description of function libraries which may come with the C compiler.
I prefer pure C than C++ or Java.
I have briefly searched the Internet with various key words and I have not been able to find anything relevant.
Please, does anyone have any information where I can get anything helpful.
I am totally new to this OS and I do not even know the shell commands. I do not have much information of the shell, although I have found a basic list on this forum and I use ls and ? and go by the name as a dumb fool.
Please, advise.
While Android is in Java, it also allows you to run C/C++ native code.
Search "Android NDK" and you will find the relevant documentation.
Arws Apps said:
While Android is in Java, it also allows you to run C/C++ native code.
Search "Android NDK" and you will find the relevant documentation.
Click to expand...
Click to collapse
Thanks. I have tried NDK. I am not sure whether I have installed this correctly but I would keep this.
Because NDK is hardware specific and I am not sure whether and how much Moto E XT1023 and others are supported, I have installed Android Studio 1.2 ad started with XML and Java. I have done similar things with HTML and Java for web sites. I would use XML as much as I can and Java only to get and set some variables, then I would use C for programming and then I would set Java variables and methods. I am not very happy with Java but there is not any other way for now. Hopefully, in the future, they would make XML a real language with all the resources available, functions and methods.
At least Java has a very C-like syntax, so in general it shouldn't be that difficult. In some sense it would even be easier (no memory management).
Arws Apps said:
At least Java has a very C-like syntax, so in general it shouldn't be that difficult. In some sense it would even be easier (no memory management).
Click to expand...
Click to collapse
Yes. You are right. I would prefer, however, a pure ANSI C. This can be done either as an interpreter to be hardware independent or as a compiler upon launch, the system would have a compiler, the user would download only the ASCI text. Upon launch, the compiler would be called first to compile and then the application can be launched. Then, the user can either keep the .exe or keep just the ASCI text, in which case, new compilation has to be done with every launch. A compilation would normally take one or a few seconds only for normal applications.

Categories

Resources