Android growth path of a great God

This article is written by one of my friends, sums up the path of technological growth of these years, I think for a lot of people have learn the role of technology, technology is the same, I do not want to breath all day to eat into a fat man, not a short step a thousand miles, having chosen this path technology, it is not afraid of hard, bitter sweet, bitter sweet, I saw summary Xiao'er, they would feel very ashamed, I read perseverance no two brother so strong.

Each person learns there may be some differences, but the goal is the same, you think you can easily read into the state, then read a book, if you look at the video very easy to enter the state, then went to see the video, if you hands it is easy to enter the state, then buy a development board back research. However, they must have their own accumulation.

The following article, I refer to the author Wangxiao C.


Foreword

I was nearing a six-year working experience in Android engineer, I want to share my personal growth path, we can help take some detours less, or have some new inspiration.


February 2014 - January 2015:

I was the senior half of the semester, the company wanted me to go to practice, because before I was doing javaweb direction, so I was almost seven days in the winter time, finished school "crazy android handouts," the beginning of practice, mainly to resolve the bug this time an unusual string of UI change, it has been very happy, just a colleague to leave, he has developed a similar development of APP to me, this time I gradually mastered the custom control, animation, Handler , use the four basic components. Because it is working in the mobile phone manufacturers, so the concept has also been compiled APK processes, understanding compiled APK and source code under the Eclipse compiler similarities.

February 2015 - May 2015:

A business trip to India, an increase of a lot of knowledge, is the first time know what native crash, found that Qualcomm engineers the ability to log analysis is very strong, this time I had a Diudiu concept for the entire android system. The key is to understand that Qualcomm role in the mobile phone manufacturers.

May 2015 - May 2017:

After coming back from India, I was assigned to the FWK group, primarily responsible for the stability of the phone, this time there will be a lot of crash, reboot the phone and other issues, and gradually to system_server process, the boot process, the boot animation, zygote process, Input subsystems have some concept, luckily I took part in a project about VR, so I SurfaceFlinger a certain concept, but this time to tell the truth, I am native development capabilities, will also be able to see code, when still do not understand, and find a lot of information, we can not grasp the native ability to develop, and I continued in school Binder mechanism, but always felt did not learn to understand, the old law of "Android system source code" open countless times , and the disappointment together.

June 2017 - June 2018:

I carefully studied JNI, etc. after completing studies JNI, I found that no matter Binder mechanism, or the original look of some of the native code FWK not understand, but also be able to read, and there are also more understanding Looper source, but said let I have to develop a native of the program, or a little virtual

June 2018 - June 2019

I slowly began to contact with Linux kernel, review the C language, slowly understand some of Linux IO multiplexing mechanism such as Epoll mechanisms, such as inter-process communication socket communication, pipe, anonymous shared memory, to drive almost understand Binder percentage the 70, all of a sudden the knowledge I have learned a few years ago the series up.
Looper: Epoll + Pipe
the Input subsystem: Socket + Epoll + Binder mechanisms
Surface GUI: Binder + anonymous shared memory
fork virtual machine: Socket

June 2019 - Present

I began to learn the official Linux kernel, the main method is IO direction, just learning the VFS, also read books Linux driver development, all of a sudden discovered the almost complete understanding of Binde mechanism, and in turn understand the mechanism by Binder Linux process management, memory management, synchronization lock, I watched "programmer's self-cultivation" this book, the status of a C language program running on a Linux system, with a full understanding, all of a sudden I found myself the whole Kernel + Fwk + App are opened up. The mind can emerge out of each process running the entire state of mobile phones, each thread is doing.

Borrowing gityuan passage describe my current state:

Android systems is profound, including the Linux kernel, Native, virtual machine, Framework, through the system call communication kernel and user space, through the JNI to get through the Java layer and Native layer user space, by Binder, Socket, Handler and other get through cross-process and cross threads exchange of information. Only really read and understand the core system architecture design, problem solving and design in order to achieve a mind free from the sword speaks sword, can we know these know why. When practicing this, congratulations, you have a higher level of understanding of the system, as tai chi sword, forget all the moves, also excel tai chi sword.

And then go back and look at those API, see will no longer be code line by line, call one interface, but the pass interworking of a variety of information, but behind the dynamic execution of thousands of tiny tadpoles flow. Remember the "knight-line" inside the dragon wooden two main island their lives can not fathom Tai Xuan, Dan Potian but just a few days to excel at magic masterpiece, its root is Longmucuo two main island in a static perspective to interpret Tai Xuan while Dan Potian the wall pattern imagined into numerous swimming tadpoles, the ultimate success of magic masterpiece. In a nutshell, the program code is dead, is alive operation of the system, should take a dynamic perspective to understand the system architecture.

future

Currently my main job is responsible for the android phone performance optimization, kernel of IO optimization, I found the work so many years, can only say that now they really have the ability to study something, and his knowledge has been established, you can contribute a.

Over the years I have read the book

But I still recommend this five books

Currently looking at books



to sum up

1. open up from the APP layer -FWK layer -Kernel layer cycle is far greater than the difficulty and Kernel layer -FWK layer -APP layer, I belong to the former, take too many detours, road of development of the latter, I believe it will much faster than me, gityuan belong to the latter.

2.Binder mechanism will be able to study, or you can basically impossible to get through the entire android system. Inter-process communication, inter-thread communication are all we need to carefully study.

3. You can not proficient in C ++, but we must achieve development capabilities Linux C language, in fact, our ability is not the lack of Android NDK, but missing was the ability to develop Linux C.

4. read more books, I used several times in the article all of a sudden, all of a sudden the whole really is all of a sudden epiphany, as it has accumulated a lot of knowledge before me, so pierce the windows of paper, you can suddenly open to let of course my colleagues very fast hardware, but also help me a lot of windows pierce the paper.

5. Multi to answer questions of colleagues and friends, in a time of answered questions are asked in your own understanding of knowledge will continue to deepen.

6. When you find more and more knowledge when they do not understand, prove that you know more and more knowledge.


Scan code or press attention

Reply to "  basketball belly " into the technical group chat

Published 395 original articles · won praise 788 · views 720 000 +

Guess you like

Origin blog.csdn.net/weiqifa0/article/details/103849720