[Q] Getting started with development - Android Q&A, Help & Troubleshooting

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 )
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!

You may want to brush up your Java skills a bit on classes and packaging. Then, you can download the Android SDK which comes with an emulator to test your programs. To design GUIs, you will have to download and install the Android Eclipse plugin, which is available alongside the SDK.

Related

[Q] [Dev Question] So, here's the thing...

So, I've been a member for a while, and I've done my fair share of using everyone elses ROMs on my phones, starting from HeroC, to Moment, to Epic, to OG Evo, then on to TMo phones like the MT4G and Nexus S.
Now that I'm back on Sprint and rocking this beast of an Evo 3D, I'd like to actually CONTRIBUTE to the community. I give you Dev's/Chefs mad respect for what you do, and I'd like to be a part of that as well.
So, here's the actual questions for this Q&A thread: Is there any special programming knowledge I need to start cooking roms, or starting to dev? Do I need to know code? Do I need to be fearless with my own device? (lol) Is there a *For Dummies*-ish site/thread/forum that would be a good idea to read up on?
I realize that there are probably a million threads like this, spread all over the interwebz and these are PROBABLY some "OMG NOOB SEARCH" questions, but in my opinion the best place to go for information is directly from the source
Believe or not...the best source of info IS searching...not us...learn the basics...adb, java, XML, start small...learn Linux and learn, learn, learn....all great developers and chefs...are self taught...because what you learn on your own...you learn to ask questions to yourself,,,for yourself...it is either in you or not..a passion for knowledge in programming and or modifications of system cannot be taught for the drive..because if you search first and learn by doing with the tutorials...then and only then can you ask the right questions..
^^^ I've never seen so many ellipses. :s
@OP Yeah, I'm trying to do the same thing. I've picked up a book at B&N titled "Android Apps for Absolute Beginners", by Wallace Jackson. It's pretty up-to-date, and includes Honeycomb bits.
It's readable (as opposed to reference-able), and it's taught me quite a bit. I recommend you have a super basic background in Java (any object-oriented language would be good, but all the code in the book is Java and XML), something like Introduction to Computer Science or similar would do fine.
Good luck with that, and lemme know if you find any resources I should know about.
Zak Jones! said:
^^^ I've never seen so many ellipses. :s
@OP Yeah, I'm trying to do the same thing. I've picked up a book at B&N titled "Android Apps for Absolute Beginners", by Wallace Jackson. It's pretty up-to-date, and includes Honeycomb bits.
It's readable (as opposed to reference-able), and it's taught me quite a bit. I recommend you have a super basic background in Java (any object-oriented language would be good, but all the code in the book is Java and XML), something like Introduction to Computer Science or similar would do fine.
Good luck with that, and lemme know if you find any resources I should know about.
Click to expand...
Click to collapse
It's a bad habit.. I commend you on what you are doing...my background was I taught myself 8086 assembler for the at class back awhile ago. Nobody would help so I digested book after book and line after line of assembler and a language called Force. To make a Long story short, I wrote my first commercial assembler library with over 1600 functions! That's a lot of code. I was one person that wrote it, the manual and support over compuserve. I was very proud of and I believe no other language library even came near it. It was at the time the most feature rich one available with another library called Funcky II with around 1400+ functions. Both were C callable, large memory model. Today's hardware do not need that crap. Then eventually went into programming full time a little after that. So I speak from experience. It is one thing to ask for guidance and another for specific items. Every good programmer, without exception was self taught..yes they went to college for computer programming or others like me that did not..they shared a common theme which is self motivation and the discipline not to quit. I once asked a very good programmer what is the secret to becoming a great one and his reply was simply code and code away. A very good reference for programmers is in fact the library source. It is invaluable. Hope this helps a little bit. I did tout my horn, yes, but you needed to get a background so you would not think I was as my dad used to say "speaking out of my a?s".
life64x said:
It's a bad habit.. I commend you on what you are doing...my background was I taught myself 8086 assembler for the at class back awhile ago. Nobody would help so I digested book after book and line after line of assembler and a language called Force. To make a Long story short, I wrote my first commercial assembler library with over 1600 functions! That's a lot of code. I was one person that wrote it, the manual and support over compuserve. I was very proud of and I believe no other language library even came near it. It was at the time the most feature rich one available with another library called Funcky II with around 1400+ functions. Both were C callable, large memory model. Today's hardware do not need that crap. Then eventually went into programming full time a little after that. So I speak from experience. It is one thing to ask for guidance and another for specific items. Every good programmer, without exception was self taught..yes they went to college for computer programming or others like me that did not..they shared a common theme which is self motivation and the discipline not to quit. I once asked a very good programmer what is the secret to becoming a great one and his reply was simply code and code away. A very good reference for programmers is in fact the library source. It is invaluable. Hope this helps a little bit. I did tout my horn, yes, but you needed to get a background so you would not think I was as my dad used to say "speaking out of my a?s".
Click to expand...
Click to collapse
Nice, programming in assembler is no small feat. If you're familiar with Linux and Java you should have no problem figuring ROMs out. Dsixda has a kitchen he posted in the Android Chef's section that is very useful and apktool along with either WinMerge or Meld can be used to learn from the different ROMs.
It was a labor of love. I just seemed so cool in asm. Actually, what I want to write is a decompiler for the android with near perfect retrieval of code back. I seen the engine in smali and just do it for the heck of it. It has the parser in it..but I don't know java that well. Can't even write a hello world..) I was darn good in Delphi with windows and would be more comfortable with that. If somebody wrote simply a lexical for the small/ Bali output then that would all you would need for that type of program. I did not study java's reflection that good and it's another route. I want to give others who want develop the fun and passion I had. This was a hobby when I started. Years later, that hobby never left me. I respect the **** out of you and other developers out there, no matter what phone, tablet or computer because yes you are programming..you are giving something of yourself to others. Non programmers really do not know that developers for all the bugs and crap that comes with it...it is our soul, hearts and emotions that go into every line..every file we put out.
This you don't learn from a book..this you learn by making come alive what is inside our brains.
Thanks for the responses guys! Much appreciated. Looking forward to diving in head first!
Bigirish said:
Thanks for the responses guys! Much appreciated. Looking forward to diving in head first!
Click to expand...
Click to collapse
Have fun! I took xHausx suggestion and went to chefs central and it will help all new developers. Last night, went to the android forum section in there..hit last page of it and went backwards reading page by page and in that night investment..I found resources that are invaluable. I recommend you do the same. One thing I should tell you many out developer wanna bees out there...the only thing that sperates the ones who are and not is the simple fact..if they had a problem, they did give up. This may sound simple..but when you get frustrated...it is easy to throw in the towel.

I want to become as a developer, what should I do

I am a high school student inchina, I want to become a Android developer, what should I do
Sent from my XT910 using xda premium
Hi,
If you're looking for information regarding development of ROMS, working on the actual Android operating system itself or developing hacks for the hardware, you are in the right place. XDA is an absolute goldmine of information regarding this. There are many many posts on how to cook your own ROM, how to use tools such as RSDLite and QPST; all you have to do is read inbetween the lines and dig a little deeper to understand how these tools could be used for your own purposes (retrieving/modifying Android system files for example) and you are well on your way.
If you are looking to develop Android apps and games, then take a look here and here. The reason I link to a Java Beginners site is that Android development can be done in Java, and it is a fairly good, solid language for anyone who has not previously used object orientated programming techniques or ever developed deployable applications before.
I hope this helps a little as a starting point. There is so much more I could write here but I'm not going to - as a developer, you will run into issues that people aren't going to be able to answer to you as these issues are going to be unique to you and you alone. That means you are going to have to go off and research these issues either via Google or searching online resources (such as XDA).

[Q] Starting Android Development with no experience in Software Programming

Hi xda-developers,
I am an Embedded developer with vastnexperience in Firmware development in C programming (for microcontrollers), pcb designing, corel draw/photoshop (intermediate level) . Now I am looking to stretch my self a lil further by trying my hands on Android Programming. I have no prior experience in Software development. It would be kind of experienced developers out here to guide me with possible approaches that I can give to Android development without a much steep learning curve. As I would be practicing android development mostly on weekends (as of now), I would like to get started with things that I can relate with already. That way it would keep me going. Help me out with:
1. Possible applications I should work on. Something that can also be helpful for the community of users and developers.
2. Starting point and other obstacles I would come across while development.
3. Application ideas.
P.S: I also have a rPi lying around catching dust.
Some of the features still cant use on this. Libraries could be use.
Start with "Hello World"
Regardless of your software development capabilities you should always just mess around with the tools that are available and see what you like and what you don't like.
Try every tool you can, when you feel like you know those inside out have a go at extending the functionality of one of those.
For me when it comes to learning a new technology like Android SDK just playing with it inspires me to want to create real and practical applications.
Goodluck and have fun.
PS: I would stick around and see what happens with the release of Qt 5.2 Hint hint...
Yea. Android like embedded requires you to set up a Dev environment so get that up first. ROM building vs app developing are hugely different. Decide which and download the tools. (May require you to install a whole new os and tweak it heavily. Last time I ventured to compile a ROM it was a day to set up my Linux distro of choice)
And like what was said before start with hello world and move up in small bites. You will gain better understanding of how things work and will be less frustrated. Don't expect a full featured app to appear. Once you play around with all the little components eventually you will see a big picture and the building blocks for the "big app" will be there ready to use.
Sent from my One using xda app-developers app

[Q] I want to learn Linux programming

Greetings,
I'm starting to learn some programming and I wanted to set some things straight about this.
Obviously, I found that it's best to start off with the easier languages like html, php, java, python, then move to C/C++.
Although I did some html and css, I'm not really into web development, but more attracted to Linux and app development.
So I'm asking, besides python (which I'm learning now) and C/C++, what should I do as general practice? Where can I find more about how an app works, how the hardware works (or drivers) or how could I get involved in the Linux community?
Is bug testing a good starting point?
I've learned the hard way that even after working with a programming language for a while, if you take a break you start forgetting stuff, so I guess I'd better learn something that I can practice.
And even if it might seem like an odd question, what do you do to learn better and faster? How do you keep your brain trained?
You're approaching the world all at the same time. Decide what you want to do and start from there. You're talking about web programming, then Linux programming, then C++. Learning C++ alone decently will take months of effort, not to say learning how to use it to create a real application. Decide what you want to do and don't change way a month after you decided.
Bye.
bogdan2011 said:
Greetings,
I'm starting to learn some programming and I wanted to set some things straight about this.
Obviously, I found that it's best to start off with the easier languages like html, php, java, python, then move to C/C++.
Although I did some html and css, I'm not really into web development, but more attracted to Linux and app development.
So I'm asking, besides python (which I'm learning now) and C/C++, what should I do as general practice? Where can I find more about how an app works, how the hardware works (or drivers) or how could I get involved in the Linux community?
Is bug testing a good starting point?
I've learned the hard way that even after working with a programming language for a while, if you take a break you start forgetting stuff, so I guess I'd better learn something that I can practice.
And even if it might seem like an odd question, what do you do to learn better and faster? How do you keep your brain trained?
Click to expand...
Click to collapse
You need to dive headfirst into one language and stick with it for a month or two.
Then you will know where your head is at.
Java or C is great for general practice.
The linux community is not hard to support.
There are forums that need help, bug testing(Linux kernel too, and you could help with Linux-next), etcetera.
To stay with it/learn faster/keep your brain trained it is best to either get involved in some sort of project or create your own project to keep you working with your language of choice.
const_char is right. Concentrate on what you are really intersting now and take the way. Achieve adequate level of experience in some area, and it clarifies next steps.
Yes, I would recommend starting with Java as well.
Java is a relatively simple language, and it abstracts away some of the machine details, so it is easier to stay out of trouble than with a low-level language such as C.
Once you're good at Java, you could move to C/C++. They are very similar languages, you just need to learn about the machine details now. How to use pointers, and manage your own memory, that sort of thing.
The language isn't important, once you got the basic principles.
If you've already started with python and are making good progress, stay with it. It's good language to learn and for a wide range of real-world tasks.
The Language isn't important...
Get Ideas of what you want to accomplish, and simple find the tools you need to get it done. Python has lots of libraries to access everything you wanted
To much...
Keeping your mind trained is not the problem, but your letting your mind wonder to other programing languages, most people don't get into all the languages at the same time... I found Python to be the easiest for me to start on and work with Linux now. But just because your curious does not mean you should try them all, it's like trying to learn Russian, German, and Spanish all at the same time...
To Learn How An Application Works Or How A Hardware Works It Is a must to have a profound knowledge of C programming Language.
Also I Would Recommend you to spend some time Reading The Book "The Design Of Unix Operating System" By Author "Maurice Bach" So as to gain some knowledge of some basic system-level topics like File-IO and Processes in Linux Before Starting to learn any of the complicated topics of Linux.
Assembly!
You could try learning Assembly first! Its a little weird for a beginner I guess but if your assembly is rock solid then C should be pretty easy and from there on everything else should be pretty simple. Assembly is as low as you can get before you start writing plain 0's and 1's and having a good foundation in Assembly to begin with will really help you in your endeavour. Also, Assembly is as lightweight as it gets so your apps will be blazing fast but its also a pain in the ass to write with so... I'd say start off with either assembly or C and work your way up.
I can't believe all these advice and not one of them tells you to learn shell script! Shell script is the first thing you should learn if you want to programming within the Linux/Unix environment. I mean how else will you be able to compile c/c++ object files without writing make script?
I think at first you should learn bash script language
After try to build some system multithreading apps, forks(with sygnals), etc. Its very useful, when you'll start code something more serious.

[Q] Old developer needs serious learning advice

Hello All,
Will try and keep this short: Am an old time developer, since 1979. I was self-taught, as a kid, never one class. The weakness there is that I never learned most of the terms.
So when learning new languages, it was harder since I didn’t have a reference point. i.e. may no longer be used, but I created “linked lists”, just never knew they were called that.
Anyway, I never got past using C and WinSDK. And I learned just enough Perl on the fly as I needed it to create some backend parts to some of my apps.
I am desperate to start a new project, preferring to do it on Android first. As hard as I looked for LOCAL developers with serious programming experience, and preferably some Voice SDK experience I failed. I tried Craigslist and Meet Up. Nothing.
So I need to do this MYSELF. Or at least start it and come up with the alpha-prototype on my own.
After all that explaining, what’s the BEST (and least expensive) means I can purchase to teach myself programming an Android device?
I always loved forums, we’re talking back when NEWSGROUPS were the way to go. Because out there was always someone who knew…and was willing to share their point of view.
Currently using a PC-Windows environment, so any IDEs in that arena would be preferred.
So any help, any direction would be so appreciated.
Many thanks ahead all,
Sergio
I would definitely recommend grabbing Android studio and looking through Androids developer docs. If you're familiar with java all you really need to know is the Android framework and how everything works together (lifecycles, passing data around, working with various sensors/hardware, etc).
Android studio is free so no cost to you there. If you're not familiar with java there are tons of good resources online
Sent from my XT1254
Hi!
I agree with @blackangus, i started programming for android with eclipse at that time and some tutorials i found online.
In my experience is a little bit frustrating at the beginning because is has some hard to understand concepts if you come from low level languages.
you can try to follow a basic lessons to start understanding the different parts like,
1) Views ( it cost me pretty much to understand how views and activities work)
2) Networking and async threads (restfull services calls and json manipulation)
3) Play services (push notifications, account registration and such)
this was the approach i took and it helped me a lot, i hope my humble guide helps you too.
5 years ago I got my intro to Android via Android App Inventor: http://appinventor.mit.edu/explore/
Good intro to Android concepts but drawing pictures instead of writing code still can't produce professional apps.
So I dove into learning Android Java. Nice...
My background was in C ; I never quite figured out C++ and have heard since that Java is superior anyway, written for OO instead of adapted from C.
I still program plenty of C for Android NDK low level code.
Before C, I did various assembly/machine languages, including the first CPUs in the mid 1970's and in early 80's front panelled a simple OS into an old PDP-11/05 to use an Apple clone keyboard and a "TV Typewriter" type 6847 Video board I built...
Now I'm wondering about iOS Objective C. Much more money still it seems in iPhones/Pads.
I am a newbie too. My background is microcontroller programmer, so i use C very often. When i start learning android programming, i begin with learning java and eclipse first, after i got the OOP concept, i begin learn to use android API and Android Studio....when we start from low level language, learning Java is easier... Java basic first then android API....
I am a serious coder, usually working with enterprise applications at my job. In my experience, if you need to learn something new, it is better if we get help from some friends or professional trainers. Saves us a lot of time and trouble. If you want to learn the basics of OOP and are going to build something, I suggest you get help of a professional trainer. You will be clear about the subject matter easily and with your experience, you will achieve progress within no time.
Wow. I don't feel so bad now. I'm and old geek too. I'm looking at trying to develop a simple game for Android. My last coding was in 1988 using COBOL. I'm a System Analysist but most of my experience was in medical systems and Digital Radiography. I'm basically a College Freshman.
Thanks for the information.
Can we keep this thread open or create another for Q&A from you wiz kids?
A funny note: I was involved with Search and Rescue in 1979. We were a driving force to get SAT phone's going but our budget only allowed for 2 satellites that year. We tested with a fellow driving in California while talking to us in Milwaukee. We only had a 20 minute window , then had to wait till the next.flyover 3 hours later. We've come a long way. Let's keep the momentum going!

Categories

Resources