As a veteran Android developer. Since the second half of 2017, we have heard all kinds of comments, such as “Android development is cool”, “mobile terminal development has no way to change industry”, “to be replaced by XXX” and so on, which fully reflects the anxiety of everyone.

Is mobile development really getting cold? I often have private messages from my fans, talking about this topic in the group, today I decided to write down some of my views for your reference.

The state of mobile development

What is the current state of mobile development? We can take a clue from the code we write. In the case of Android, the most common code written by mobile developers at large companies looks like this:

LinearLayout layout = newLinearLayout; layout.addView(xxxx); .Copy the code

Or maybe it goes something like this:

public class XXXView extends RelativeLayout {

public XXXView(Context context) {

this(context, null);

}

public XXXView(Context context, @Nullable AttributeSet attrs) {

this(context, attrs, 0);

}

public XXXView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

initView;

}

private void initView {

LayoutInflater.from(getContext).inflate(R.layout.xxxlayout, this.true); . }public void setData(XXX xxx) {... }Copy the code

Or doing all sorts of dirty things with XML tags — UI development.

Yes, the mobile technology stack has become so mature that even engineers in large companies are doing UI presentation logic for the business. The backend controls most of the business logic. What the client does is fetch the data from the backend and display it via setText(XXX). The Boolean value returned by the interface determines whether the View is displayed or hidden.

I’ve heard a lot of people say that they feel like they haven’t improved in years of work, that they’re building code every day, and that any recent graduate can replace them in a minute, so they get anxious. For those who work for a few years, if they want to avoid being replaced and eliminated prematurely, they need to choose a promising field with potential.


So what is the future of mobile development?

dynamic

Before we talk about dynamics, let’s talk about Android plug-ins.

In the last two years, plugins became popular. Why fire? Because it can realize the dynamic online requirements of Android applications without issuing versions, and hot repair can also dynamically fix the bugs on the line. But what’s the biggest problem with plug-ins? Compatibility. Android models are too many and too complex, plug-in framework will inevitably involve system API hook, compatibility problems will appear, developers will see inexplicable errors reported but helpless.

As Android iterations get more and more difficult, Android P is a signal to developers that they need to stop hooking up to the SYSTEM API and that Google is starting to clean up its act. Plugins weren’t meant to last forever, so developers took a different approach.

At first, H5 Hybrid development was continued, such as the old Hybrid framework Cordova, but performance was not satisfactory. At this point, Facebook developed an epochal framework: React-Native. It offers a whole new way of thinking: js parsing with JScore, rendering with native Views, and the ability for bridge mechanism to call native.

React-native was the first truly high-performance dynamic framework that quickly blurred the line between Web front-end and client. Along came the homegrown frameworks of companies such as Alibaba’s Weex and Meituan Dianping’s Picasso framework. React Native supports only Android and iOS. Weex extends the idea by providing Web support for React and Vue. Picasso is different. Picasso is a pure TS, DSL syntax tree, which is too simple to write, but is ready to provide small application side support on a three-terminal basis.

The first preview version of Flutter was released at the 2018 GMTC Conference. Alibaba’s Xianyu team has already used Flutter technology in its APP. Flutter began development four years ago and only had its first beta last year. APP was written through Dart, and then compiled into machine code to run on Android and iOS at the same time. It achieved native cross-platform and Hot Reload, with good performance and strong customizability. Even the encapsulated system layer Dart code can be changed. This document provides an introduction to Flutter learning for Web, iOS, Android, and React-Native developers. It was one of the few hits of the mobile app last year. It is a completely new way of thinking, different from React-Native. I am currently optimistic about Flutter.

The dynamic mode of Alipay is different from all the above. It is Hybrid development based on its own H5 container. However, due to the self-developed kernel (UC kernel), its performance is better than the native WebView in all aspects. This is also a dynamic approach, but the development cost is too high: homegrown WebView kernel.

At present, the dynamic troika has initially formed:

  • Jscore (V8) bridge communication dynamic scheme led by React-Native;

  • Self-developed WebView kernel, H5 container scheme;

  • Flutter (I think Flutter is fighting for the third carriage position).

Dynamics has changed the way mobile development is done, blurring the line between the Web front end and the client end, and allowing more and more people to understand what a “big front end” is. If experienced developers do in-depth research in this direction, they won’t be obsolete in five years [laughs].

Mobile machine learning

There is no doubt that mobile machine learning has been on the rise since the end of 2017. TensorFlow also launched a mobile framework, and many applications have started to deploy machine learning models on mobile, such as camera applications (FaceU), e-commerce applications (Vipshop), including offline machine learning.

If we dig deep in this direction, I don’t think we will be eliminated in 10 years. Of course, it’s not easy.


AR & VR

The AR of Alipay snatching red envelopes and QQ playing football are more and more people experience, and AR has come into people’s vision. For advertising diversion gameplay, AR can undoubtedly bring huge profits.

Previously, Dianping launched a “fantastic parent-child day” activity, which is based on the AR play of big head’s son and small head’s father. Then develop naturally became the bestselling mobile AR engine developers, or advertisements AR main application fields, but many companies also found some AR landing scenarios, such as electricity selling furniture company can use AR technology allows users before buying can see objects in their own home can really put down, This can greatly improve the purchasing experience of users.

If it is to study OpenGL, computer graphics mobile developers, can develop towards the direction of AR engine development, very promising.

VR in the same way.

Mobile audio and video

The most popular product in this field is Douyin. Even I use Douyin every day. In addition to Douyin, there are major video applications, all need professional developers in the field of audio and video development, image processing, filter, cutting and other operations are required to do professional audio and video development knowledge, mobile developers who study OpenGL and computer graphics also have great advantages in this field.

As far as I know, the talent gap in this area is still very large, and companies are looking for talents. If you have experience in this area and are willing to dig deeply, you will naturally be the hot property of companies.

Mobile blockchain

Blockchain, one of the hottest technologies of 2018.

From everyone talking about Bitcoin to everyone talking about blockchain, it can be seen that blockchain technology has been known by more and more people. Countless blockchain companies have sprung up, and even big companies are starting to dabble in blockchain. For mobile terminals, blockchain applications are still the largest number of digital wallets. However, there will definitely be more applications of mobile blockchain in the future, such as Status. Blockchain caught fire last year. Mobile blockchain applications haven’t caught fire yet, but they’re not far off.

If you are interested in the direction of blockchain, you can start studying it. For those of you who want to learn about smart contract development, I recommend a very good website: Cryptozombies, absolutely the best solidity starter for smart contract development.

At present, there are not many mobile blockchain talents, and major companies are not hiring, but it will explode in two or three years. We are still exploring the landing scene, and we have given time for students who are interested in blockchain technology to learn. The technology that changed the world?

Mobile foundation frame

UI may be taken over by dynamic technologies in the future, but mobile infrastructure will not. In order to develop an APP, network request, log processing, database processing, cache, Push and other frameworks are indispensable, which have little to do with UI and are the lifeblood of APP.

As long as the APP exists, the infrastructure exists. As some of you might say, I use OKHTTP to write a web request every minute, and yes, okHTTP has done a lot of things for us. What is a framework? In one sentence, my understanding is as follows:

A library that allows developers of widely varying abilities to write code with similar functionality and performance.

HttpUrlConnection (HttpUrlConnection) : HttpUrlConnection (HttpUrlConnection) : HttpUrlConnection (HttpUrlConnection) : HttpUrlConnection (HttpUrlConnection) However, if you use the OKHTTP library, if you look at the OKHTTP documentation, novice and veteran code is likely to produce similar code with similar performance and performance, and this is the framework’s biggest contribution.

On the basis of these frameworks, the code written by P5 may not be much different from that written by P6 or P7. However, someone has to develop these frameworks, and open source frameworks often fail to meet the needs of a company’s business. Especially BAT and TMD, most of the mobile terminal frameworks are developed by themselves, and more and more companies have started to develop them by themselves. Therefore, if the mobile developers are experienced in this direction, they will not be eliminated before APP is eliminated. This aspect requires relatively high depth and breadth of knowledge for mobile developers, which requires precipitation and learning.

Android utility applications

This is a special one. Let me give you an example of this kind of application: 360 mobile assistant. For Android users, cleaning up memory, cleaning up garbage and so on has become a habit, this aspect of application development is naturally indispensable, and very test the depth of Android knowledge, you know.

conclusion

The above seven directions of mobile terminal development are the directions with potential and prospects summarized by me. All mobile development students can refer to them and choose a direction to dig deeply. I believe there will be harvest.

There’s no point worrying about it. The best thing to do is take action.