I have been working on Android for about three years. I have gradually developed into a programmer from a rookie who only knows how to write bugs. In fact, I learn in a complete mess, of course, in the learning process has also accumulated some knowledge, for the friends who did not contact with Android before, or just enter the Android friends, this article as an introduction, it is the most appropriate, I hope to just enter the Android friends help.

1. Java foundation;

2. Build the Android development environment

3. Understand the operating principle of Android and the structure of an engineering project

4. How to systematically learn Android

5. Recommend useful resources

6. Summary



(Note: I have not had time to sort out some link files. Seeing that everyone is so interested in this article, I rearrange the links in my article. Friends can click on them and have a look. Article is only personal opinion, do not like spray, if there is a better opinion and introduction, welcome to exchange! (bow))!

  • Java Language Basics

The first thing you need is the Java language, and while there are other languages that can develop Android, they’re pretty niche. Because the Android SDK is based on Java development, the language is Java, if you have the Java foundation, learning Android will get twice the result with half the effort; For example, in Android to use the interface, abstract class, type conversion, inheritance, overwriting, anonymous inner class, multithreading, these are Java language, if there is no previous foundation, learning Android will be very depressed; Of course, if you have C++ background, of course you can also develop based on NDK, do not use Java;

Kotlin is an official development language supported by Google, but it will take a long time for it to become really popular. My personal recommendation is still Java, but Kotlin also wants to learn as much as possible. How can it be beneficial to learn more than one language

For those of you who have no Java background I recommend some resources:

  1. Mars Java4Android video resources, can be found in 51Cto, a very good video resources, suitable for beginners to learn, I started from here programmers this road of no return.

  2. “Java from Entry to Mastery (3rd edition)” from the perspective of beginners, through easy to understand language, colorful examples, detailed introduction to the use of Java language for program development needs to master the knowledge.

If you need more book resources, please click hereAndroid Books — From getting started to Mastering


  • Build the Android development environment

At present, most developers use Android Studio. After three years of improvement from the end of 2014 to now, AS has become the development artifact of most Android programmers. But I’ve found that people who use AS get so caught up in it that they abandon Eclipse.)

There is no more to say in this, you can go to see my introduction to Studio:

Android Studio,

AndroidStudio improves development efficiency with plugins

  • Understand the operating principle of Android and the structure of a project

There are two popular structures: the old Ant & Eclipse ADT and the new Gradle & Android Studio. You should choose the new one. If your project still uses the old one, consider abandoning it and porting your project to the new one. Here we compare the two project structures

Old structure:

Old-school Exercises - Assets Exercises - ├─ SRC │ ├─ ├─ download.txt/Download.txt/Download.txt/Download.txt Project. The properties └ ─ proguard - rules. ProCopy the code

The new structure

├─ New Structure ├─ Library-Foobar ├─ App │ ├─ SRC │ ├─ androidTest │ ├─ ├─ Java │ ├─ com/ Futurice /project │ │ └ ─ the main │ │ ├ ─ Java │ │ │ └ ─ com/futurice/project │ │ ├ ─ res │ │ └ ─ AndroidManifest. XML │ ├ ─ build. Gradle │ └ ─ Proguard-rules. Pro ├─ Build.gradle ├─ settings.gradleCopy the code

The main difference is that the new structure explicitly separates the ‘source sets’ (main, androidTest), which is an idea of Gradle. You can do this by, for example, adding source groups’ paid ‘and’ free ‘to SRC to make your application have both paid and free source code.

When your project references a third-party project library (for example, library-Foobar), it is useful to have a top-level package name app to distinguish your application from the third-party project library. Settings. gradle then continually references these library projects, where app/build.gradle can reference them.

For more details please click the link below

It covers Android development specifications, architecture, layout tips, and tools to help you develop quickly

  • How to learn Android systematically

Because there are too many things to introduce, I would like to recommend a picture of Android knowledge system. Recently, I saw a good one organized by others, which is very good for me. If necessary, please click on an Android learning roadmap organized by an old bird

  • Recommend some useful resources

Recommend you a website “geek navigation – programmer’s own navigation”, which introduces the common sites, tools, classic blog, the way to progress, source download, guide to job-hopping, boutique websites, some of the common sites of the role of the corner, some of the Android cattle blog are in it, I often see.

  • conclusion

1. If you want to switch to programming as a non-major graduate, you must be confident and motivated after seeing my experience. I can, and you can too, let alone I have taken so many detdetments in the process.

2. If you have been exposed to some data structures, programming languages and so on, and want to learn programming, you should be more confident, you have more foundation than those who do not have a degree, you just need to keep faith, stick to it;

3. Don’t sigh god unfair, I walked all the way is very miserable, left too many detours, too many difficulties, are difficult to forget in my life, but at the same time I was lucky, because I have her, I want to thank my girlfriend countless day and night the understanding and support, god give you to make the rough time will always be some favor to you;

4. If you are preparing or already doing development, do not have confidence or motivation, or confused about the future, let’s take it as an inspirational novel, you have to do is to do what you are doing, believe that your efforts will be rewarded;

  • advice

If you want to give some advice, here are some after-the-fact suggestions as a counter example:

1. Spend an hour reading every day. It is not an hour that is difficult, but persistence.


2. English is very important for programming. Try to get used to reading in English. (Scallop series software)


3. Data structure and algorithm to learn, this is the most important lesson for programming, may not be able to use in the future, but at least when you use the impression;


4. Good at using search engines, starting from Google, learning English keyword search, thinking of searching instead of asking others when there is a problem;


5. Hang out on GitHub, the most popular open source community, get involved in open source projects, read people’s code slowly, and be a 6 yourself when the time comes. It’s safe to say that a year on GitHub will teach you more than four years of college.


7. Your first job is important because you will be influenced by your colleagues and the company atmosphere.

8. And finally, get a girlfriend as soon as possible, because your job puts you in contact with fewer and fewer women.







We all have the same tutorial above, but the difference between people is that others have a stronger heart, and the scary thing is that people smarter than you work harder than you do!

When you make up your mind and you’re ready to move on, all you have to do is stick to it…



If you think my writing is ok, please pay attention to my wechat official number: