But if you want to know more about the Android system, you can take a look at some of my simple summaries.
knowledge
Java language (a computer language, especially for creating websites)
Java is one of the main languages of AOSP. Needless to say, you must master it skillfully.
Skilled Android application development
Linux operating system
Android is based on Linux, and the compilation environment recommended by AOSP is Ubuntu 12.04. Therefore, it is very important to skillfully use and understand Linux system. If you want to understand the underlying code, you must understand the basic program development in Linux environment. If you go deep into the driver layer, you should also have knowledge about the kernel.
manufacture
AOSP is compiled by Make system. Knowing the basic preparation of Makefile will give you a clearer understanding of how AOSP is built.
food/rice bucket
AOSP uses git+repo for source code management. This should be a necessary skill for programmers.
C++
Some performance-sensitive modules and third-party libraries of Android system are all implemented in C++, such as input system and Chromium project (the bottom implementation of WebView).
Hardware appliance
Smooth international network
AOSP code download requires you to have a smooth international network. If you lose the patience to download the code, you will definitely lose the patience to look at the messy AOSP code. In addition, good programmers should all need a fluent Google.
PC running Ubuntu 12.04.
If you just look at the source code, don't make too many changes, and don't need too high configuration.
Nexus device
By default, AOSP projects only support Nexus series devices. It doesn't matter if you don't. You can still read the code. But if you want to go further on the road of Daniel, you'd better change the code and debug it.
High quality USB cable
I broke the wire when I was brushing the machine. There is nothing more gratifying than this.
software
Ubuntu 12.04
Officially recommended, there is no choice.
Oracle Java 1.6
Be careful not to use OpenJDK. This is a pit. Although it was written in the official document, it was mentioned separately.
Installation:
Sudo apt-get Install python- Software-Properties
sudo add-apt-repository PPA:webupd 8 team/Java
Sudo apt-get update
Sudo apt-get installs oracle-java6-installer.
Sudo apt-get installs oracle-java6-set-default.
be cast into the shade
It is estimated that many people will complain about why they use this antique. In fact, the reason is simple and appropriate. When I first started AOSP, I tried Eclipse, IntelliJ Idea, Vim+CTAGs, SublimeText+CTAGs to find the most effective tools. The final result is a solar eclipse. The main advantages are:
There is also syntax analysis (fast and accurate class and method jumps).
Support C++ (IntelliJ's C++ support is too slow).
Embedded debugging tools, such as DDMS, view the hierarchy.
In order to improve efficiency, it is worthwhile to spend 5 minutes memorizing common shortcut keys.
Adjust your classpath and don't import useless code, because there are too many codes in the AOSP project. When you don't need to read C++ code, don't add C++ support to the project, the indexing process will make you crash.
Intelligent concept
It is necessary to develop an App. When you want to debug a function of the system, you often need to write an App to debug it quickly. At this time, the old Eclipse is not easy to use. Itellij IDEA's xml auto-completion function is very powerful.
The giant's shoulder
This must be read first. Project introduction, code download, environment construction, computer brushing and Eclipse configuration are all here. This is the foundation of everything.
This is actually for App developers. But there are also many introductions about the system mechanism, which are worth reading carefully.
Teacher Luo Shengyang's blog is very nutritious and can basically be used as a tutorial to guide you to start reading AOSP source code. You can read them one by one in chronological order. However, there are also some problems in this series of blogs:
Early blogs were based on the old version of Android.
Lots of code flow tracing. When reading an article, you must know the position of what you see in the whole system.
Teacher Deng Fanping is also an Android tycoon, and his blog is also very nutritious. But not as systematic as Teacher Luo Shengyang. More is an in-depth discussion of some technical points.
Official list of Android questions. Some strange bugs were found in the development process, and finally it was found that they were basically recorded here. Of course, you can mention something new. Whether anyone changes it or not is another matter.
Be sure to use this tool skillfully. A lot of related knowledge is not systematically summarized, so you need to do it yourself.
other
Code organization
The compilation unit of AOSP is not in one-to-one correspondence with git project, but in one-to-one correspondence with Android.mk file. Compiling modules with mmm commands will save you a lot of time.
adhesive
This is the most basic interprocess communication of Android. It is widely used between applications and system services. You should not only know how to use AIDL, but also know how to write Binder interface by hand. This is very important for understanding how Android applications interact with system services. You don't have to wait to see how Binder is implemented.
Hardware abstraction layer (abbreviation of hardware abstraction layer)
Don't spend too much time on this floor unless you are particularly interested in hardware or want to work for a solution company.
Cyanogen Maud
This is a third-party Rom based on AOSP. You can learn a lot from the wiki of this project that AOSP officials have not told you, such as how to support devices other than Nexus.
Defense intelligence agency
This is a tool for drawing UML under Linux, which can help you sort out the code you have read.
XDA