Getting to know the Android system

 Android system startup

1, "Introduction to the Android System Startup Process"

2, "Android init process startup process"

3. "Android zygote process startup process"

4. "Android SystemServer Process Startup Process"

5. "Android launcher startup process"

6. "Detailed Explanation of Android Activity Startup Process"

Android System Development Preparation

1, "Android Source Code Download and Compilation"

2. "Android 11 source code compilation and pixel3 flashing"

3. "Android Framework Code IDE Loading and Debugging"

Android System Development Practice

1. "Android Setting Default Input Method"

2, "android framework prefabricated APK application"

3. "Detailed Explanation of Restricting Apps from Starting at the Android System Level"

4. "Android compiles the framework module separately and pushes it"

5. "Android Framework Development System Problem Analysis"

Android System Development Core Knowledge Reserve

1, "Android Compilation System - envsetup and lunch code articles"

2. "Android Compilation System - Concept"

3. "Detailed Explanation of Android Log System"

4. "Android System Handler Detailed Explanation"

5. "Android System Binder Detailed Explanation"

6. "Detailed Explanation of the Relationship between Activity, View and Window in Android"

7. "Detailed Explanation of the Android View Drawing Process"

8. "Detailed Explanation of Android Reading System Attributes"

9. "Detailed Explanation of Android Window Management Mechanism"

10. "Acquaintance with Android System"

11. "The communication method of AMS process in android notifying Zygote process fork new process"

Detailed explanation of Android core functions

1. "Android application market click to download APK installation details"

2, "Android gesture navigation (swipe from bottom to top to enter the multitasking page)"

3. "Android Gesture Analysis (Swipe left to right on the application interface to exit the application)"

4. "Detailed Explanation of Android Application Installation Process"

5, "android11 ​​installation application triggers desktop icon refresh process"

6. "Detailed Explanation of Android System Multitasking Recents"

7. "Android System Navigation Bar View Analysis"

———————————————————————————————————————————

Table of contents

 Android system startup

Android System Development Preparation

Android System Development Practice

Android System Development Core Knowledge Reserve

Detailed explanation of Android core functions

1. Development history

2. System Evolution

3. Technological evolution

Four, the end


1. Development history

        Let’s first take a look at the development process of the Android system. From the release of the Android 1.0 system in 2008 to the upcoming release of the Android 10.0 system in 2019, some important time nodes are listed below.

  • In October 2003, Andy Rubin team founded Android company;

  • In August 2005, Google acquired the Android company, and Andy Rubin continued to be in charge of the Android project as the vice president of Google Engineering;

  • In September 2008, Google officially released the Android 1.0 system;

  • In January 2011, the total number of users of Android system equipment reached 135 million, becoming the system with the largest share in the field of smart phones;

  • In August 2011, Android phones accounted for 48% of the global smart phone market, and dominated the Asia-Pacific market, ending the dominance of the Symbian system and ranking first in the world;

  • In January 2012, Google Android Market had 100,000 developers and launched more than 400,000 applications;

  • In November 2013, Android 4.4 was officially released, with a smarter system and a more modern UI;

  • From 2013 to 2018, Android entered a period of rapid development at this stage. Cameras, memory, fuselages, chips, etc. were upgraded. The original 3.5-inch small screen has withdrawn from the stage of history, and full screens, notch screens, and water drop screens have become the current Mainstream screen solution.

2. System Evolution

  • From Android 1.0 to Android 4.0, the various functions and features of the system have iterated to a more complete stage;

  • For the Android 4.1 system, Google launched Project Butter, in order to make the Android system get rid of the serious lag in UI interaction, hoping to be as smooth as "butter". The core principle is that the rendering and animation in the system framework adopt vertical synchronization technology (VSYNC) and triple buffer technology (Triple Buffer) to make operations such as sliding and page turning more consistent and smooth.

  • For the Android 4.4 system, Google has launched a slimming plan (Project Svelte), trying to reduce the memory usage of the Android system and solve the problem of difficult upgrades for low-end models, so that Android 4.4 can run normally on all Android phones, thereby reducing the continued fragmentation of the Android system . In terms of UI design, the new "immersive mode" is supported. The user interface has changed from the past black and blue tones to light colors with transparency, and the visual language has become brighter and more modern.

  • For the Android 5.0 system, Google launched Project Volta to improve battery life. In this regard, Google lags behind the manufacturers in the industry. Manufacturers are particularly urgent about battery life in the face of users, and often have stricter control over system resources. In addition, the system adopts a new ART, abandons the Dalvik virtual machine, and greatly improves operating efficiency. In terms of UI design, a new flat Material Design design style is used, which is more fresh and textured, and unifies the appearance and user experience of Android devices.

  • In the Android 6.0 system, Google introduced new runtime permissions to allow users to better understand and control permissions; introduced Doze mode to further improve battery life. In terms of UI design, a new night mode has been added, and the notification bar has been greatly improved to make notifications more concise.

  • Android 7.0 system, introduces a new JIT compiler, which is a supplement to the AOT compiler, which can save storage space and speed up the update speed; further optimize the Doze wake-up mechanism; UI design supports split-screen function;

  • For the Android 8.0 system, Google launched a plan (Project Treble) to re-architect Android, decouple the Android system framework from the Vendor layer, and strive to completely solve the persistent problem of Android fragmentation. This is the biggest change in the Android system architecture. At the system level, the management and control restrictions on background services, broadcasting, and location are strengthened. In terms of UI design, improve the notification bar, smart text selection and autofill functions.

  • Android 9.0 system, introduces neural network API, uses machine learning ideas to predict user habits to optimize power saving, and continues to strengthen the Treble plan; file system (sdcardf/F2FS) continues to improve; private API restrictions further standardize the Android ecosystem and strengthen Privacy and security, hardware security modules, and a unified biometric authentication interface. In terms of UI design, the new gesture navigation, enhanced support for Liu Haiping, the UI search interface uses machine learning, and AI is gradually strengthening the Android system.

  • For the Android 10.0 system, Google has launched the Project Mainline. The relevant modules (Modules) are not allowed to be modified directly by the manufacturer. They can only be updated and upgraded by the Google App Store to enhance user privacy, system security and compatibility. Support facial biometrics.

3. Technological evolution

        The Android system is inseparable from various Apps to provide rich functions. Let's briefly talk about some technological evolutions of the applications.

Mobile cross-platform technology: from the Hybrid hybrid development technology based on Cordova (relying on WebView) at the beginning, to the React Native bridging technology (converting JS to Native), and then to the latest Flutter technology. Flutter is a brand new mobile cross-platform UI framework released by Google. The rendering engine is implemented by the cross-platform Skia graphics library. Only the interface related to graphics drawing depends on the system, which can guarantee the experience consistency of different platforms and devices to the greatest extent. , the logic processing uses the Dart language, and the execution efficiency is higher than that of JavaScript. In addition, the UI layer of Fuchsia, another operating system being developed within Google, uses Flutter, which means that Flutter can naturally support Android, IOS and future Fuchsia. In the direction of the big front-end, for cross-platform development, it has been constantly iterating to find better and better solutions. At present, Flutter still has more advantages.

Application architecture: MVC mode (Model–view–controller) but the Activity class is too bloated. To solve this problem, with MVP (Model–view–presenter), the presenter not only needs to operate data, but also needs to update the view; then to MVVM (Model -View-ViewModel) solves the problem of a large number of manual View and Model synchronization in MVP, and provides a two-way binding mechanism.

Hot fix and plug-in technology: The main application scenario of hot fix is ​​to allow users to repair online defects without feeling, such as Tinker, Andfix, Sophix, etc. Plug-in is to reduce module coupling, reduce the size of the main program, and can be loaded on demand, such as DroidPlugin, OpenAtlas, etc. The details of various hot fixes and plug-ins will not be expanded. Let me just say that Android 7.0 has handcuffs on the call limit of Native NDK, especially Android 9.0’s call limit on the Java layer SDK is handcuffs. To engage in black technology such as plug-in is to dance with handcuffs. You can dance, but the dancing posture may not be very beautiful.

App Bundle: With the continuous speech of the application, the functions become more and more complex, and the application is packaged in the same App for different screen devices and language resources of different countries, resulting in the continuous increase of the application package. According to statistics, the size of the application package has increased since 2012 5 times. Although the storage space of mobile phones is getting larger and larger, the quality of media files such as user photos and videos is gradually improving, resulting in a gradual shrinking of the available space of the device. For this reason, Google described at the Google I/O conference last year that Android introduced a new App dynamic framework (that is, Android App Bundle, abbreviated as AAB). Using Split Apk to complete dynamic loading and using AAB dynamic delivery method can significantly reduce the size of the application and reduce the occupation of storage space.

Kotlin: It is the official static programming language recommended by Google, which is interoperable with Java and can be converted to each other. Kotlin is compiled into Java bytecode, and can also be compiled into JavaScript. It runs on devices without JVM, which is simple and safe. Using Kotlin to write Android applications more quickly can improve the developer's work efficiency and write less boilerplate code. It is called the Swift of the Android world. According to a survey conducted by the Google developer community, about 40% of Android developers have used Kotlin. This is not to encourage everyone to use Kotlin. Learning a new language is like an investment, and you have to weigh the pros and cons between team costs and benefits.

Jetpack: It is a development component tool set, its main purpose is to help us write more concise code and simplify our development process. The components in Jetpack have a characteristic that most of them do not depend on any Android system version, which means that these components are usually defined in the AndroidX library and have very good backward compatibility. Jetpack is mainly composed of four parts: foundation, architecture, behavior, and interface. Many of the architecture components are tailored for the MVVM architecture. 

Four, the end

        The android ecosystem involves a wide range of knowledge, and individuals need to specialize in several directions according to their own work and preferences. I am engaged in the development of android framework, focusing on framework-related technologies. The following figure shows the overall architecture of android.

Guess you like

Origin blog.csdn.net/allen_xu_2012_new/article/details/130686397