preface

This has been a turbulent year, but it has also been a year of headwinds. A seed to grow into a giant tree, must have indomitable will, this is more important than learning itself. Here’s a look back at what I did in 2020.

I look back on my 2020

First quarter (January-March) :

1. In-depth study of Android performance optimization & Open sourceAwesome-Android-Performance

It is well known that performance optimization is one of the most difficult and knowledgeable segments of the Android field, but if you want to become a top Android engineer, performance optimization segmentation is a great place to combine practice and theory. Therefore, in order to systematically integrate the various layers of knowledge involved in Performance optimization, THE author created a project called awesome-Android-Performance, I hope to lead readers to explore and dig the ultimate technology of performance optimization from the vertical field of application layer, Framework layer, Native layer, ART/Dalvik and even Linux kernel layer in Android system architecture. At present, except for IO optimization and storage optimization, other performance optimization articles have been published as follows:

First, stability optimization

Deeper exploration of Android stability optimization (completed)

Android stability optimization is a process that requires long-term investment, continuous operation and maintenance. Above, we not only discussed in depth the solution process and scheme of Java Crash, Native Crash and ANR, but also analyzed its internal implementation principle and monitoring process. As you can see, to do stability optimization well, we must have a certain level of understanding of virtual machine operation, Linux signal processing, and memory allocation. Only with a deep understanding of these underlying knowledge can we design better stability optimization than others.

Two, start speed optimization

Delve deeper into Android startup optimization (completed)

In order to maximize the startup speed of App, we need to have a certain breadth. In this paper, WE introduce AOP programming from the back end to realize non-invasive function staking, and also need to have a certain depth. From the exploration journey inside, We have covered the Framework layer, Native layer, Dalvik VIRTUAL Machine, and even Linux IO and file system related principles.

Third, memory optimization

Internal Memory optimization for Android Performance Optimization (completed)

Memory optimization can be said to be one of the most important optimization points in performance optimization, it can be said that if you do not master the system memory optimization scheme, you can not say that you have too much research and exploration of Android performance optimization.

Deep dive into Android memory optimization (completed)

The real memory optimization to the extreme, but also don’t click to find out?

Fourth, rendering optimization

Rendering optimization for Android Performance Optimization (completed)

First of all, let’s understand rendering optimization from a global perspective, and lay a good optimization foundation for it.

Deep dive into Android Layout optimization (PART 1) (Completed)

A deep dive into Android layout optimization (Part 2) (Completed)

Layout optimization seems to be the simplest special optimization item in Android performance optimization, but the author has spent a full 30,000 words to impart its core knowledge to everyone. Therefore, do not look down upon each special optimization point, go in, must be full of goods.

Deep dive into Android Caton optimization (part 1) (Completed)

Deep dive into Android Caton optimization (Part 2) (Completed)

Caton optimization can be said to be the most complicated part of the Android performance optimization, the author from caton optimization analysis methods and tools, automation caton detection scheme and the optimization, ANR analysis and actual combat, caton single point problem detection scheme, open, elegant interface seconds monitoring multiple dimensions such as time-consuming blind area to expand to deeply explain App card, optimization, I believe readers will gain something.

Fifth, package volume optimization

Delve deeper into Android package volume optimization (completed)

If we want to do more in-depth optimization of package volume, we must have a deep understanding of APK composition, Dex, So dynamic library and Resource file format, as well as APK compilation process, So that we can have enough internal work literacy to achieve in-depth optimization of package volume, and this article will take us into it.

Sixth, network optimization

“In-depth Exploration of Android Network Optimization (I, Network Core Foundation)” (completed)

“In-depth Exploration of Android Network Optimization (II, Network Optimization Foundation)” (completed)

“In-depth Exploration of Android Network Optimization (III, Network Optimization)” (completed)

Network optimization has always been considered as one of the deepest areas of mobile optimization, so it is necessary for us to study it in depth.

Seven, power consumption optimization

Deep dive into Android power consumption optimization (completed)

In Android application development, we need to consider how to optimize battery usage, so that our App will not be rejected by users because of high battery consumption, or be reported by other security applications, so as to ensure user stickiness. Therefore, power optimization also needs to be considered.

Second quarter (April-June) :

1. Deeply explore compilation piling and Gradle automatic construction technology

Today, Gradle + compiled piling is used in more and more applications. It is used in all kinds of plug-in tools for performance optimization, as well as in all kinds of plug-ins to support plug-in and hot repair. Therefore, to master Gradle + compiled piling technology can greatly improve our technical competitiveness. As follows:

Compiler piling technology

In-depth exploration of compilation piling Technology (I. Compilation Basis) (Completed)

Further exploration of compiled Piling (II, AspectJ) (completed)

Further exploration of compile piling (III, Class bytecode) (completed)

Further exploration of Compilation piling Technology (IV. ASM) (completed)

Gradle builds automatically

An in-depth exploration of Gradle Automated Build technology (1, Configuration) (completed)

An in-depth exploration of Gradle Automated build techniques (Groovy Foundation)

An in-depth exploration of Gradle automation build technology (3, Gradle core decryption) (completed)

An in-depth exploration of Gradle automation build technology (iv. Custom Gradle plugin) (completed)

An in-depth exploration of Gradle automation build technology (5, Gradle core source code analysis) (completed)

In-depth exploration of Gradle automatic build technology (vi. Gradle Plug-in development platform framework ByteX decryption) (completed)

Third quarter (July-September) :

1. Algorithmic map construction & Open sourceAwesome-Algorithm-Study

This is a map from zero to build the core knowledge of the algorithm, it is built on the basis of the algorithm interview, which involves very high frequency algorithm interview questions. Since algorithm is very important, I began to systematically learn data structure and algorithm from 0 since July this year. The specific learning path is as follows:

  • 1, MOOCs “Data Structure Introduction” : handwriting various core data structures, such as dynamic array, linked list, heap, binary tree, AVL, red black tree and so on.
  • 2. “Sword Finger Offer” : After having a solid foundation of data structure, I will learn how to practice algorithms. Then, “Sword Finger Offer” is the most suitable one.
  • 3. Mooc’s “Playing with Algorithm Interview” : it systematically explains the high-frequency interview algorithm questions on LeetCode in great detail, which can quickly improve our algorithmic interview ability in a short time.
  • 4, “algorithm interview clearance 40” : this is a supplement to “play algorithm interview”.
  • 5, handwritten all the algorithm before more than 2 times (estimated about 150 questions).

In the process of systematic learning algorithm, I gradually built my algorithm map, which is briefly as follows:

2, computer foundation consolidation route

Mainly based on “programming essential basic computer composition principle + operating system + computer network” system to learn the composition principle, operating system, network and other core computer basic knowledge, which is very helpful to deepen our internal power.

3. Introduction to NDK

NDK is a necessary technology for in-depth study of Android. Therefore, I started to learn NDK and mainly completed the following contents:

  • 1, C basic review.
  • 2. Basic review of C++.
  • 3. JNI, compiler principle and syntax, Linux basic system learning.
  • 4. Know how to realize incremental update, efficient loading of Gif and MMKV components.

Fourth quarter (October-December) :

1. In-depth study and practice of componentization, plug-in and thermal repair technology

In order to improve the architecture ability and deepen the understanding of the Android Framework layer, it is necessary to learn componentization, plug-in, and hot repair technologies. Here I’ll talk briefly about how to learn them. The key to componentization is knowing how to do componentized refactoring and understanding how to communicate across components. For plugins, here are a few things to think about:

  • How do I circumvent Android P’s restrictions on access to private apis?
  • How to do plug-in refactoring?
  • How plug-ins work: How do you load classes dynamically? How to implement plug-in for the four components? How are resources plug-in? How to plug-in So? What do you know about the current popular plug-in framework implementations? (e.g. VirtualApk, Replugin, Shadow)
  • Understanding the whole technology of plug-ins?

For hot repair, we can first write a simple hot update framework by ourselves, and then learn the use and implementation of a hot repair framework, such as Tinker. For the principle of hot repair, also includes code repair, resource repair, So repair, we should have a deep understanding of these.

2. In-depth study of Android Framework layer

Mainly based on the analysis Framework interview impact Android senior job course will Framework design ideas and implementation details, the overall process of integration, the pursuit of true mastery.

3. Systematic review of knowledge system

Review the old and learn the new, can be a teacher. Learning is not measured by how much you learn, but how much you really master. The pursuit of learning speed can lead us into a black hole: we spend a lot of time learning, but really understand very little. It reminds me of a friend from school days who worked very hard and studied all day long. Sometimes he even asked me to go to the bathroom to read with him after the bedtime light went out (because there was a light in the bathroom), but I didn’t do it for two days. As a result of his hard work, I always thought that his future achievements were unlimited, but A chance contact with him made me know that this was not the case. Why does hard work get no good results? Perhaps the core problem is that we haven’t really integrated knowledge. How do we integrate knowledge? Keep in mind that learning is only the first step, and true mastery requires many repetitions of practice so that your first steps are not wasted. Therefore, since November, I have systematically sorted out and reviewed the knowledge I have mastered and transformed it into a mind map, as shown below:

Computer Fundamentals

A programming language

Android based

Stability optimization

The infrastructure

Framework

NDK

Looking forward to my 2021

With the deepening of the research on performance optimization and infrastructure technology, I find it difficult to provide an APP of sufficient size for my in-depth practice in the current environment. So, given the uncertainty, let me briefly outline the main goals for next year:

  • 1. Have the opportunity to develop and optimize a complex APP.
  • 2. Continue to study in the field of performance optimization based on practice.
  • 3. Practice algorithms every day to cultivate open algorithm thinking.
  • 4. Have the opportunity to learn more about Flutter and even build some Flutter wheels.
  • 5. Continue to study the Framework in depth to deepen the understanding of the Framework layer.
  • 6. The opportunity to practice Google’s JetPack component in depth.

Third, summary

This year, I did make some efforts, and also got some harvest and applause. But effort alone is not enough. Learning how to learn (it’s important to review the past and learn new things) and how to manage our energy and time may make our efforts more efficient and, in turn, make us feel more fulfilled. In 2021, let’s work together for a real transformation!

My 2019 year-end summary (ashes) | Denver annual essay

My 2018 year-end summary (advanced road) | Denver annual essay

Denver annual essay | 2020 technical way with me The campaign is under way…