Discussion on the direction of Android's future development

background

This article summarizes the current industry direction and required skills of Android development.

The current development direction of Android is mainly based on the characteristics and system architecture of Android. The characteristics of open source have led to the development of Android application architecture, Android FrameWork development, Android TV development, Android serial port development, vehicle smart seat development, etc.

Target positions appeared: Android application development, Android performance optimization, Android system development, Android system security development.

A more accurate match may be the subdivision of the corresponding business line and product function direction, such as audio and video development, intelligent hardware such as vehicle-machine human-computer interaction development, tool product development, and so on.

The evolution process of the technical architecture developed by Android is also from MVC to MVP/MVI, then to MVVM, and finally a mixture of MVVM and MVI.

Let's start with a classic layered architecture diagram officially provided by Google:

Android system architectureFrom bottom to top, it is divided into five layers: Linux kernel, HAL, system Native library and Android runtime environment, Java framework layer and application layer, each of which contains a large number of sub-modules or subsystems.

For further interpretation of this picture, please refer to:

To master the Android system architecture, it is enough to read this article!

According to the above picture, we can probably get the following directions

The current Android directions are:

  • Android application development (framework development, architecture development, infrastructure construction)

    Such as participating in the development of iterative functional requirements for mobile phones, tablets, and TVs of smart set-top boxes, the construction of Android platform facilities and performance optimization, etc.

  • Andriod cross-platform development (React Native, Flutter development, etc.)

    According to the company's business planning or current company's manpower considerations, the entire project or some functional modules are directly developed with cross-platform development technology.

  • Android security direction (reverse analysis, security penetration, etc.)

Android application development engineer skills reference

Android technical points

Android Infrastructure Construction Skills Reference

Zhongtai Construction

Students who build basic platform facilities can be described as full-stack development. They not only need to make basic common components (basically common components that are difficult to develop in business), but also pay attention to performance optimization, continuous construction, stability, and development of the R&D system. security and more.

For the meaning and practice of infrastructure construction, please refer to:

Youzan's practice and thinking on mobile infrastructure construction

Android reverse development engineer skills reference

1. More than 2 years experience in android rom development/transplantation, familiar with java/c/c++;
2. Familiar with Android framework and working mechanism, ROM modification and development;
3. Familiar with linux kernel, driver programming, bootloader, power management scheme;
4. Familiar with Android The principle and structure of the hal layer, familiar with Qualcomm or mtk chip solution providers for the hal layer structure and implementation of wifi and ril is preferred; 5.
Familiar with Android services, Zygote, JNI, memory management mechanisms, etc.;
6. From the Framework layer to the application layer App vertical development ability, familiar with the development of android native APP;
7. Strong learning ability, strong sense of responsibility, good communication skills, anti-stress ability, innovation ability and teamwork spirit.

Job Responsibilities:
1. Responsible for the risk control confrontation and encryption and decryption algorithm analysis of popular APPs;
2. Handle the usual reverse analysis tasks.
Requirements:
1. Computer, software engineering or related majors, more than 1 year of relevant work experience;
2. Familiar with Thumb, ARM, ARM64 assembly instructions, familiar with smali instructions, familiar with C/C++/Java language, and have a strong sense of reverse engineering Interest;
3. Familiar with dex, elf file structure;
3. Familiar with common Hook tools, understand their principles, and be able to write plug-ins to assist analysis;
4. Familiar with Android common encryption algorithms, interactive protocol analysis;
5. Familiar with common hardening unpacking skills , The principle of shelling.
Bonus points:
1. Familiar with JS reverse engineering;
2. Familiar with browser plug-in development.

Android Framework engineer skills reference (vehicle system, system development direction)

Job Responsibilities
1. Responsible for the architecture design and optimization of the Android framework layer
2. Responsible for the integration of multi-platform framework layer schemes, and Leading to promote the implementation of the scheme
3. Responsible for new function introduction evaluation and framework construction
4. Responsible for tackling difficult problems, including windows 5. Follow
up the evolution direction of the Android platform, track industry-related technical trends, and be responsible for technical insight in the architecture field Job
requirements
1. Have 3 years or more of Android development experience, and more than 1 year of architecture-related work experience Those involved in Qualcomm and MTK are preferred.
2. Have the ability to design system architecture, and those who have led/participated in large-scale architecture design and optimization are preferred.
3. Have a deep understanding of WMS, AMS, PMS, Binder, HAL, etc., and be able to optimize and adjust relevant logic
4. Those who have integrated multi-platform solutions, in-depth understanding of Plugin and mapping mechanism are preferred.
5. Those with Kernel related knowledge background are preferred.
6. Strong self-motivation, in-depth study of FWK knowledge domain, and can form a system.
7. Proficient in Java language, need to have C++, python language background
8, full-time undergraduate degree or above, mathematical analysis, computer, software development and other related majors are preferred

1. Responsible for Android stability optimization and technical research to create the ultimate user experience;
2. Responsible for investigating and solving various difficult problems that affect user experience, such as JE, Native Crash, ANR, SWT, frozen/black screen, memory leaks, etc.;
3. Participate in the development and stability of various tools to improve work efficiency;
job requirements
1. More than 5 years of experience in Android client or system Framework development;
2. Proficient in Java and C++ development languages;
3. Solid programming skills, familiar with multi-threading and network programming, understand operating system principles and computer architecture;
4. Excellent analysis and problem-solving skills, skilled use of lldb/gdb, familiar with ARM assembly.
5. Bonus points: Familiar with the technical architecture of virtual machines (ART, Dalvik), memory optimization, system C library, and Linux Kernel main modules (memory, scheduling, IO, etc.)

Android Performance Optimization Engineer Skills Reference

1. Have rich experience in performance tuning projects, skilled in using commonly used performance analysis tools to analyze system performance (A: systrace, top, vmstat, trace and other tools; B: analyzed two or more of the following problems: occasional freeze, Frame drop, benchmark, frozen screen, aging, game experience, switching speed, slow app startup and exit, memory leak, slow machine, etc.); 2. Familiar with
Android Framework, at least proficient in AMS, WMS / View, PMS, display system
3. Understand the bottom layer of Linux (lmk, lmkd should be familiar; Cgroup, IO, MM, FS, Net, etc. or one of them should be familiar); 4.
Have rich coding experience in java, familiar with c/c++/ python is better;

Android audio and video development skills reference

  1. Responsible for the development and maintenance of screen projection/media transfer framework requirements, and output high-quality code;
  2. Responsible for the development of the core library, SDK and Demo of the screen projection framework, and participate in architecture design, key technology selection, etc.;
  3. Participate in the CodeReview of the screen projection framework, as well as the maintenance and writing of related technical documents;
  4. Responsible for solving the delivery defects of the projection screen framework, ensuring that the version is delivered on time and with high quality, and continuously improving the delivery experience inheritance system.
    job requirements:
  5. Computer and related majors, bachelor degree or above, more than three years of Android full-time development work experience;
  6. Familiar with Java, C/C++, familiar with Android framework, master common data structures and algorithms;
  7. Familiar with the tools and methods of development, debugging and performance optimization on the Android platform, experience in Android machine delivery is preferred;
  8. Familiar with audio and video encoding, encapsulation and common streaming media protocols, such as AVC, HEVC, HLS, MP4, MPEG-TS, RTP/RTCP, etc.;
  9. Familiar with video open source projects, experience in WifiDisplay, FFmpeg, WebRTC and other open source libraries is preferred;

Summarize

The future positioning of Android development is based on the direction. The upward direction is the basic framework (App), the downward direction is the system development (FrameWork), the left direction is the intelligent hardware (vehicle-machine interaction), and the right direction is the large front end (cross-platform).

In our work, the skill tree we need needs to be crossed, which is convenient for systematic analysis, positioning, and problem solving. We can use some technical points, but we must not understand them. Especially in a job interview, this will be a comprehensive test of you. We have to abstract the underlying common skills and continue to learn. We have a long way to go on the road of technology development. Plunging in every direction is enough for us to toss for several years.

Guess you like

Origin blog.csdn.net/jun5753/article/details/126628226