preface

Whenever the question “What’s the future of Android?” This question is always on the hot list.

I’m going to answer it here today.

Android cold?

Recently, I have seen a lot of online discussions like “Android cold?” Questions like that. Like the following:

  • Is there a future for Android now?
  • Android development on the decline?
  • Android jobs are hard to find.
  • Is Android dead?

Every time I saw it, I had only one thought: Is this really that important? What’s there to ask?

Here I would like to share with you a picture that recently flooded my wechat moments.

People do not live for a hundred years, but sorrow for a thousand years. However, since you want an answer, I am willing to answer seriously.

In fact, my answer to this question is simple: I can’t predict what the future holds, but Android is still there, and I’m really not at the point where Android development is dead.

Now the major companies are in fact very short of Android RESEARCH and development (senior), constantly in the recruitment, take a lot of first-line Internet, let alone to interview people, on the resume can not get too much, need to spend a lot of time to find a resume.

Therefore, for students with Android development experience, more should think about how to explore deeper, rather than thinking about changing direction, no matter which direction, will face the time point from elementary to senior to senior and then to expert. So I think the right career planning should be pyramid-shaped, the core competitiveness must be solid!

Second, detailed list of knowledge points

For the current Android and mobile Internet, we need to master the technology, I made a list:

Generics Principle Reflection Principle Java Virtual Machine principle Thread Pool principle Annotation Principle Annotation Principle Serialize Activity knowledge system (Activity life cycle, Activity task stack, Activity startup mode, View source code, Fragment kernel related, Service principle, etc.) code Framework structure optimization (data structure, sorting algorithm, design mode) APP performance optimization (user experience optimization, adaptation, code tuning) hot repair hot upgrade Hook technology IOC architecture design NDK (C programming, C++, JNI, LINUX) how to improve development efficiency? MVC, MVP, MVVM wechat applet HybridFlutter

Three, the analysis of knowledge points, why to learn

1. Data structure and algorithm

Data structure and algorithm are actually separate things, we need to master all kinds of data structure first, and then to deepen the algorithm, data structure and algorithm actually belong to the foundation, but it is now more and more important, so I will take out separately.

I also recommend you to see tsinghua or Zhejiang University “Data structure” open class, especially tsinghua, worth repeated research.

As for algorithms, the first thing to do is to do it, directly on LeetCode!

The second stage is to summarize the ideas and routines of various algorithms, such as recursion and dynamic programming, which have routines. In LeetCode, there are also screening categories based on data structure and algorithm, so you can practice and summarize accordingly.

Of course, for an Android programmer, it is very good to be able to brush questions on LeetCode every day, so you must stick to it. When you stick to it for a certain period of time, you will find that you are more and more skilled. I started to brush questions on LeetCode at the end of 2018, and so far I have brushed more than 200 questions. Xiaomi’s interview is also very algorithmic, but also able to write.

And for some companies that are very algorithmic, the algorithm part of the assessment is very strict, yes, strict, not strict.

2. Design patterns

Design principles, design patterns are included with the actually for Android developers, design patterns that 23, know and understand the design pattern is the first stage, is only at this stage is not enough, general interview also won’t ask you the concept of a design pattern, and will give you a specific about your understanding of a certain design patterns and use, Its advantages and disadvantages, so, the second stage is to use them, followed by the Android source code to use the design pattern place to combine learning.

Examples include builder mode, which is used to create dialogs in Andoird, singleton mode, adapter mode, observer mode, etc. These are very common design patterns in Android, and also come up frequently in interviews.

3. Language learning and developing languages

Android applications are developed by Java voice, and the SDK is written in Java, so we need to learn the Java language. In addition, Kotlin is also being compiled into The Java language, although it has been officially promoted by Android. For Android development.

As long as the SDK is not rewritten by Kotlin, the Java language needs to be learned. And Android APK background server procedures are most likely to be built in the Java language, so learning Java is an inevitable.

So those things in Java that are relevant to our slightly more difficult Java basics in Android are almost a threshold, like generics, multithreading, reflection, JVM, JavaIO, annotations, serialization, etc.

4. Knowledge of APP development framework

This piece of knowledge is the most widely used technology today, which we call Android2013-2016. But, even if is such a technology, many developers also often because of the habit of a lot of copy code online familiar with the use of the code and stranger, is familiar with them every day every day in the copy, strange is deal with no further studied their everyday, to study the source code, to imitate the source code, and then hook the source code, That’s how you get the idea.

5.App performance optimization

Whether the west energy of an APP is good or not needs to be analyzed from two aspects:

1, from the time you write code, make your code high performance high availability code, the process is to write high performance code

2, to have formed the code through the tool to detect code problems, through the inspection of the problem to guide us to delete the code this process is called tuning

So how do you write high-performance code?

We need to have a deep code foundation, which is the basis of the code, such as: data structure can be written according to the application scenario of the current scene of the special structure, for example, Google for Android platform features developed SparseArray instead of HashMap. In addition, the commonly used algorithms also have their own unique views

6.NDK module development

Audio and video, high definition pictures, artificial intelligence, Douyin live broadcast and other technologies are closely related to users in recent years. The technologies most relevant to our life have been looking for the final technology landing platform, which used to be Windows system, but now is mobile system. Android has the largest percentage of mobile devices. So NDK can be said to be a must to learn, in addition to audio and video codec technology streaming media protocol, FFMEPEG, C, C ++,JNI, Linux are all audio and video development skills. And OpenCV \OpenGI these are necessary for image processing.

7. How to improve development efficiency?

Gradle doesn’t use gradle, so it takes a lot of time to load code, which is a waste of your work cost. Git also helps us manage our code, which is very important because it allows us to modify code without losing it due to misoperations. In addition, mobile developers at least need to know how to grab web packages. Among them, the most commonly used stetho is a very useful tool that can grab network packages.

8. Mixed development

The Hybrid development of Flutter has gradually become the mainstream hybrid development framework. In addition, due to the strong presence of Alibaba, all alibaba companies are using Weex hybrid architecture. These are essential basic skills for an Android engineer to expand his vision and move into the future.

Four, advanced refers to the north

In today’s Internet climate of layoffs, anxiety is common. You don’t have to worry about Android’s future, you just have to work in a company for a long time, when the ability, the opportunity is ripe, then look at the outside world, you will find your vision and strength is not the same.

Here to mobile development friends to provide a technological advance ideas:

  • Basic skills for architect: Deep Java generics + annotations + simple + concurrent programming + data transfer and serialization +Java Virtual Machine principles + reflection and class loading + dynamic proxy + efficient IO
  • Android advanced UI and FrameWork source code: advanced UI promotion + FrameWork kernel parsing +Android component kernel data persistence
  • 360° all-round performance tuning: design philosophy and code quality optimization + program performance optimization + development efficiency optimization
  • Interpretation of open source framework design ideas: hot repair design + plug-in framework interpretation + component framework design + picture loading framework + network access framework design +RXJava responsive programming framework design +IOC architecture design +Android architecture component Jetpack
  • NDK module development: NDK basic knowledge system + bottom image processing + audio and video development
  • Wechat small program: small program introduction +UI development +API operation + wechat docking
  • Hybrid Development and Flutter: Html5 project Combat +Flutter advanced

For these knowledge points, I have prepared a lot of e-books and notes on hand, and these notes summarize each knowledge point systematically and methodically.

Click on the【 the 】Enter my official account and add remarks [mobileFor free access to the full version of this information

  • The architect builds the base language foundation

Knowledge points:

3. Concurrent programming 4. Data transfer and serialization 5. The Principle of Java Virtual Machine 6

  • Design ideas read open source frameworks

Knowledge points:

1. Hot repair design; 2. Plug-in framework design; 3. Component framework design; 4

  • 360° all-round performance tuning

Knowledge points:

1. Design idea and code quality optimization 2. Program performance optimization startup speed and execution efficiency optimization layout detection and optimization memory optimization power consumption optimization network transmission and data storage optimization APK size optimization

3. Optimization of development efficiency

Git automatic build system Gradle

4. Actual project combat

Start speed fluency Douyin in APK package size resource optimization practice Youku responsive layout technology full analysis network optimization mobile Phone Taobao Double eleven performance optimization project revealed Autonavi APP full link source code dependency analysis completely eliminate OOM actual experience sharing wechat Android terminal memory optimization practice

  • Android framework architecture

Knowledge points:

1. Advanced UI promotion 2. Android kernel components 3

  • NDK module development (Audio and Video development series)

Knowledge points:

1, NDK development of C/C++ introduction 2, JNI module development 3, Linux programming 4, underlying picture processing 5, audio and video development 6, machine learning

  • Flutter learning is advanced

Knowledge points:

1, Build your first Flutter application on Windows 2, Build your first Flutter application on Windows 3, Build your first Flutter Application on Windows 3, Build your first Flutter Application on Windows

  • Wechat small program development

Knowledge points of this article:

Small program overview and introduction 2. Small program UI development 3. API operation 4

  • Android related source code interpretation

Here you can check out this article:Cow bye! Ali P7 big shot half a month, android source code analysis into 508 pages of PDF.

Click on the【 the 】Enter my official account and add remarks [mobileFor free access to the full version of this information

Technology improvement needs a certain process, step by step, first set a small goal, and then to achieve one by one. I hope you can make good use of this information and finally achieve your wishes.

B station learning video series:

  • Tencent/Alibaba/Baidu/Byte/JINGdong…… All included

  • FrameWork layer source code analysis

  • Android Project

  • Android advanced UI combat

  • Performance optimization

  • Basic principles of Android

  • Android zero basis

Write at the end

A lot of people who are new to the industry or hit a brick wall have some problems, such as feeling directionless after learning for a while, which I think will happen in two or three years for Android developers. The reasons are basically the same as above: 1. The economic downturn reduces the demand; 2. Mass production of training institutions and the abundance of open source libraries gradually reduce the threshold of development; 3. The old experience, such as 2.3 compatibility and so on, is completely useless now. 4. Android has a higher threshold rate than ios due to compatibility and other issues, plus the development of smart home framework and so on, which will be later than ios saturation time

But we can refer to the above suggestions, the latter go audio and video, senior Android development engineer, or to the background, front-end development, The Times are evolving, we also go to think more, for our future plan!

It’s a long road, and all we need to do is pack our bags.