[Android Q&A, Help & Troubleshooting] [GR]Frostbyte:
Hello, this is my first post here..

(was not sure where to put it, so I posted here)

So, it happens that I'll be getting an i9001 soon (as a gift), to replace my old W810i..

Android was always my preference, if I ever were to take the leap, and possess a smartphone..

I must say that ever since I researched about this OS; and the possibilities it can offer, I am highly interested in getting involved with it's development..

I've searched and found a similar thread that pointed to "developer.android.com/index.html", which I believe I can use to get me started. But before I do so, I have a few questions to ask, regarding on what kind of knowledge will be needed beforehand.

I'm currently a university student, at informatics and computer science. So I'm no expert in coding, nor I can create commercial-ready stuff as of yet.. However I do believe that I can slowly learn the ropes, and produce something useful, since I can understand the basic principles. (Patience included :P)

I've also read numerous articles regarding the knowledge prequisites, most of them say either Java or C++/C#, yet there's no definitive answer.. So my first question is in regard as to what do I need of the following, and what kind of knowledge "gaps" do I need to fill first, before I can get started with android development.

I currently have:

Some slight experience with Java through NetBeans and JDK (on the next semesters I have subjects that cover more of it)

A significant experience with C/C++ through DevC++ (I can comprehend functions, arguments, structs, pointers, file pointers, and various tricks: such as passing values by reference)

Basic knowledge of simple search, sort and data structure algorithms (such as binary/interpolation search, bubble/insertion sort, linked lists/binary trees.. To name a few)

Basic knowledge of Unix (such as shell commands, fork, pipes, sockets)

Basic theory knowledge on Operating System algorithms (such as cpu scheduling, memory management, disk management and some MPI simulation)

Basic knowledge of Assembly (through SPIM and MPLAB)

Some noobish/entry-level knowledge regarding MySQL and PHP

I may have forgotten a few things, but I suppose this is the core of my currently acquired knowledge.

To this point, I might add that I'm most comfortable in C/C++ than Java.. Namelly because it's the first language I bothered more with, and because I find Java a bit more confusing..

[Because it's similar to C, but it has various alterations.. Or it might be because I was forced to learn it simultaneously while also learning C, and I ended up hating it, because it caused me to mix up the two languages]

I might also say that I've never worked with projects that had more than one *.c/*.cpp file, and I have yet to figure out how these combine..

I may also have some knowledge gaps regarding "classes", even though I can write programs just fine (they were more apparent in Java, than C/C++, I guess)

Plus, all the programs I ever made, were console/bash.. I have no experience or idea, on how to put graphics on screen and how to hook them with my code.

As to what I want to do with Android? Well, at first creating simple apps to get the hang of the situation.. Then maybe bothering with GUI/Graphics to enrich my progress.. And ultimatelly, acquiring the knowledge/skill to mess with the OS/Kernel itself.. (And why not re-inventing the wheel by myself, and creating them from scratch)

Second question would be about safety.. Say that I do gain the knowledge, and I come at a point that I can comfidently mess with operation-critical things like the Kernel.. Is there a way to "failsafe"-test or simulate it, before uploading it to the device?

[As I mentioned, I'll soon be getting my very first android device, and I'm rather very cautious about not damaging or bricking it.. Because it's expensive, and I might not afford a replacement]

Lastly, my final question is about: potential danger of damaging the phone's hardware; when exposed to various things (Since I want to be very cautious, as I said)

However I understand this is definatelly not the right section for this last question; so the actual question for that, is: where can I post/ask about that?

Sorry for my wall of text, I just like to be detailed, in order to be completelly comprehensive. I hope I might get the attention of an experienced developer, maybe get some tips on how I can improve my current knowledge; and lastly how to get involved with this wonderful OS.

Thanks! :)