CN112585573A - Compilation control method, compilation control device and storage medium - Google Patents

Compilation control method, compilation control device and storage medium Download PDF

Info

Publication number
CN112585573A
CN112585573A CN202080004493.XA CN202080004493A CN112585573A CN 112585573 A CN112585573 A CN 112585573A CN 202080004493 A CN202080004493 A CN 202080004493A CN 112585573 A CN112585573 A CN 112585573A
Authority
CN
China
Prior art keywords
compiling
configuration
file
compiling system
script
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080004493.XA
Other languages
Chinese (zh)
Inventor
王群峰
王亮
魏亮辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SZ DJI Technology Co Ltd
Original Assignee
SZ DJI Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SZ DJI Technology Co Ltd filed Critical SZ DJI Technology Co Ltd
Publication of CN112585573A publication Critical patent/CN112585573A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

A compilation control method, a compilation control apparatus and a storage medium, wherein the method comprises: the first compiling system acquires a configuration item selected by a user (101); the first compiling system passing the configuration item to a second compiling system (102); the second compiling system analyzes a second compiling configuration script and determines a corresponding compiling strategy (103) of the configuration item relative to the second compiling system; and the second compiling configuration script comprises the corresponding relation between the configuration items and the compiling strategy. The method can determine the corresponding compiling strategy through the configuration items selected by the user, can realize the customization of the product without modifying the compiling configuration script, and effectively improves the efficiency and the accuracy of the product development.

Description

Compilation control method, compilation control device and storage medium
Technical Field
The embodiment of the invention relates to the technical field of computers, in particular to a compiling control method, a compiling control device and a storage medium.
Background
In the prior art, a compiling strategy may be stored in the compiling configuration script, and the compiling system may analyze the compiling configuration script and control and implement the subsequent compiling process according to the obtained compiling strategy. In the update iteration process of the system, a plurality of compiling systems often appear, and different compiling configuration scripts are analyzed by different compiling systems. When customizing the equipment, a user needs to modify the compiling configuration script analyzed by the compiling system, and modify the compiling strategy in the compiling configuration script into the compiling strategy desired by the user, so that the efficiency is low, and errors are easy to occur.
Disclosure of Invention
The embodiment of the invention provides a compiling control method, a compiling control device and a storage medium, which are used for solving the technical problem of low product development efficiency in the prior art.
A first aspect of an embodiment of the present invention provides a compilation control method, including:
the first compiling system acquires a configuration item selected by a user;
the first compiling system transfers the configuration item to a second compiling system;
the second compiling system analyzes a second compiling configuration script and determines a corresponding compiling strategy of the configuration item relative to the second compiling system;
and the second compiling configuration script comprises the corresponding relation between the configuration items and the compiling strategy.
A second aspect of an embodiment of the present invention provides a compilation control apparatus, including:
a memory for storing a computer program;
a processor for executing the computer program stored in the memory to implement:
the first compiling system acquires a configuration item selected by a user;
the first compiling system transfers the configuration item to a second compiling system;
the second compiling system analyzes a second compiling configuration script and determines a corresponding compiling strategy of the configuration item relative to the second compiling system;
and the second compiling configuration script comprises the corresponding relation between the configuration items and the compiling strategy.
A third aspect of the embodiments of the present invention provides a computer-readable storage medium, where program instructions are stored, where the program instructions are used to implement the compiling control method according to the first aspect.
According to the compiling control method, the compiling control device and the storage medium provided by the embodiment of the invention, the corresponding compiling strategy can be determined through the configuration items selected by the user, the product can be customized without modifying the compiling configuration script, and the efficiency and the accuracy of product development are effectively improved.
Drawings
The accompanying drawings, which are included to provide a further understanding of the invention and are incorporated in and constitute a part of this specification, illustrate embodiments of the invention and together with the description serve to explain the invention and not to limit the invention. In the drawings:
fig. 1 is a flowchart illustrating a compilation control method according to an embodiment of the present invention;
fig. 2 is a schematic diagram illustrating a compiling control principle according to an embodiment of the present invention;
fig. 3 is a flowchart illustrating a compilation control method according to a second embodiment of the present invention;
fig. 4 is a flowchart illustrating a compiling control method according to a third embodiment of the present invention;
fig. 5 is a schematic diagram illustrating a compiling control principle according to a third embodiment of the present invention;
fig. 6 is a schematic structural diagram of a compiling control device according to a fourth embodiment of the present invention.
Detailed Description
In order to make the objects, technical solutions and advantages of the embodiments of the present invention clearer, the technical solutions in the embodiments of the present invention will be clearly and completely described below with reference to the drawings in the embodiments of the present invention, and it is obvious that the described embodiments are some, but not all, embodiments of the present invention. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present invention.
Unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. The terminology used in the description of the invention herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention.
Example one
The embodiment of the invention provides a compiling control method. The embodiment can be applied to a scenario in which hybrid compilation is performed by at least two sets of compilation systems. Optionally, the first compiling system may be a compiling system capable of directly reading a file in which the configuration item is written by the user, and the second compiling system may be another compiling system of the at least two sets of compiling systems.
For example, in the conventional Android system, the compiling is usually performed by using a make compiling system, from Android7.0, a Soong compiling system is introduced, and the mixed compiling is realized by the Soong compiling system and the make compiling system. In this embodiment of the present invention, the first compiling system may be a make compiling system, and the second compiling system may be a Soong compiling system.
Fig. 1 is a flowchart illustrating a compilation control method according to an embodiment of the present invention. As shown in fig. 1, the compiling control method in this embodiment may include:
step 101, the first compiling system obtains configuration items selected by a user.
The user described in this embodiment may refer to a person who customizes a product in a product development process. The user can realize product customization through configuration items, and different configuration items can correspond to different product parameters or product functions.
Optionally, the first compiling system may directly parse a file for the user to input the configuration item, and obtain the configuration item selected by the user. In the Android system, a user may input a configuration item corresponding to a product in a board-level configuration file, and the first compiling system may parse the board-level configuration file to obtain the configuration item. It is understood that in other development systems, the file for the user to input the configuration item may be other than the board-level configuration file, and the first compiling system may parse the corresponding file to obtain the configuration item.
Step 102, the first compiling system transfers the configuration item to a second compiling system.
In a mixed compiling scenario, the second compiling system often cannot directly parse the board-level configuration file, and thus cannot directly obtain the configuration items input by the user. Thus, the first compiling system may pass the configuration items input by the user to the second compiling system so that the second compiling system is aware of the configuration items selected by the user.
Step 103, the second compiling system analyzes the second compiling configuration script and determines a corresponding compiling strategy of the configuration item with respect to the second compiling system.
The second compiling configuration script may include a corresponding relationship between the configuration item and the compiling policy.
Optionally, determining the compiling policy may specifically include determining parameters corresponding to the product and/or determining a functional module corresponding to the product. Taking the determination of the functional modules as an example, a software system often provides a plurality of functional modules, and for a specific product, only one or a few of the functional modules may be needed, and during compiling, only the one or a few of the functional modules may be compiled, and other modules may not be compiled, thereby improving product performance.
Optionally, one configuration item may correspond to one functional module, or may correspond to a plurality of functional modules. The user may select one configuration item or may select multiple configuration items. Table 1 and table 2 provide examples of the correspondence of configuration items to compilation policies.
Table 1 example of correspondence between configuration items and compilation policies
Configuration item Compilation strategy
FEATURE_01 Compiling basic recording function module
FEATURE_02 Compiling advanced recording function modules
FEATURE_03 Compiling basic camera function modules
FEATURE_04 Compiling advanced camera function modules
FEATURE_05 Compiling basic calendar function modules
FEATURE_06 Compiling advanced calendar function modules
…… ……
As shown in table 1, a configuration item may correspond to a functional module, and the compiling policy is to compile the functional module corresponding to the configuration item. If the user selects FEATURE _01, the basic recording function module is compiled, and if the user selects FEATURE _01 and FEATURE _03, the basic recording function module and the basic camera function module are compiled.
Table 2 example of correspondence between configuration items and compilation policies
Figure BDA0002939201020000041
Figure BDA0002939201020000051
As shown in table 2, one configuration item may correspond to a plurality of functional modules. And if the user selects the FEATURE _10, compiling the basic recording function module, the basic camera function module and the basic calendar function module.
In addition, the compiling strategy may further include information such as parameters of the product, for example, the CPU model of the product corresponding to the FEATURE _10 is a, the CPU model of the product corresponding to the FEATURE _20 is B, and if the user selects the FEATURE _10, the compiling process may be controlled according to the CPU model of a.
A person skilled in the art may set a corresponding relationship between a configuration item and a compiling policy according to actual needs, where the corresponding relationship between the configuration item and the compiling policy may be stored in a second compiling configuration script, and the second compiling system may parse the second compiling configuration script to determine a corresponding compiling policy of the configuration item with respect to the second compiling system.
In practical application, when a user develops different products, the customization of the products can be realized by modifying configuration items according to the scheme provided by the embodiment. Taking the Android system as an example, the Open Source Project (AOSP) of the Android system provides various functional modules of the Android system, and can be applied to various Android devices such as an Android mobile phone, an Android tablet, an Android camera, a kindle reader and the like. The Android system is used on equipment with simple application and few functions, such as an Android camera, a kindle reader and the like, so that the problems of excessive functions, excessive occupied resources, slow starting time and the like of AOSP (automatic object service) can be inevitably encountered, and therefore in the product development process, only part of functional modules can be compiled, so that the product can be customized, and the use requirements of different products are met.
According to the compilation control method provided by the embodiment, the configuration item selected by the user is obtained through the first compilation system and is transmitted to the second compilation system, the second compilation system analyzes the second compilation configuration script, the corresponding compilation strategy of the configuration item selected by the user with respect to the second compilation system can be determined according to the corresponding relation between the configuration item and the compilation strategy contained in the second compilation configuration script, the product can be customized without modifying the compilation strategy in the second compilation configuration script, and the efficiency and the accuracy of product development are effectively improved.
Optionally, the method may further include: the first compiling system may analyze the first compiling configuration script and determine a functional module to be compiled corresponding to the first compiling configuration script.
Fig. 2 is a schematic diagram of a compilation control principle according to an embodiment of the present invention. As shown in FIG. 2, the first compilation system may parse the first compilation configuration script to determine a corresponding compilation strategy for the configuration item with respect to the first compilation system. The second compilation system may parse the second compilation configuration script to determine a corresponding compilation strategy for the configuration item with respect to the second compilation system.
Specifically, in a hybrid compiling system, the corresponding relationship between the configuration items and the compiling strategy may be partially stored in the first compiling configuration script and partially stored in the second compiling configuration script. After the configuration items selected by the user are obtained, the first compiling system and the second compiling system can analyze the corresponding compiling configuration scripts according to the configuration items selected by the user respectively, so that the corresponding compiling strategies are determined.
For example, the first compiled configuration script may include: FEATURE _10 corresponds to a basic recording function module; the second compiled configuration script may include: FEATURE _10 corresponds to a basic camera function module. After the user selects the configuration item "feature10", the compiling strategy determined by the first compiling system may include compiling the basic sound recording function module, and the compiling strategy determined by the second compiling system may include compiling the basic camera function module. In the subsequent compiling process, the basic sound recording function module and the basic camera function module can be compiled according to the determined compiling strategy.
Optionally, the configuration items to which the first compiling configuration script is applied and the configuration items sent by the first compiling system to the second compiling system may also be different. The configuration items passed to the second compiling system by the first compiling system may be configuration items related to the second compiling configuration script.
The configuration item may be related to the second compiling configuration script, that is, a corresponding relationship between the configuration item and the compiling policy occurs in the second compiling configuration script. For example, the compiling policies corresponding to FEATURE _01 to FEATURE _04 in table 1 may be stored in the first compiling configuration script, and the compiling policies corresponding to FEATURE _05 to FEATURE _06 may be stored in the second compiling configuration script, so that in the case that the configuration item selected by the user includes FEATURE _01, FEATURE _03, and FEATURE _05, the first compiling system may transfer FEATURE _05 to the second compiling system, and the second compiling system determines the corresponding compiling policy according to FEATURE _ 05.
In the implementation manner shown in fig. 2, the first compiling system and the second compiling system may analyze the first compiling configuration script and the second compiling configuration script according to the configuration items, respectively, so that cooperative control of the first compiling configuration script and the second compiling configuration script on the compiling process can be realized, the compiling processing efficiency is improved, and the application requirement of hybrid compiling is met.
Example two
The second embodiment of the invention provides a compiling control method. In this embodiment, on the basis of the technical solution provided in the first embodiment, the first compiling system generates the second compiling system to implement the transfer of the configuration items. Fig. 3 is a flowchart illustrating a compilation control method according to a second embodiment of the present invention. As shown in fig. 3, the compiling control method in this embodiment may include:
step 301, the first compiling system obtains the configuration item selected by the user.
Step 302, the first compiling system generates a second compiling system, and the second compiling system comprises the configuration item.
In this embodiment, after the first compiling system obtains the configuration item selected by the user, the second compiling system may be generated according to the configuration item.
Optionally, the second compiling system may include a plurality of executable files, and the parsing of the second compiling configuration script may be implemented by executing the plurality of executable files. The configuration item may be included in the executable file in the second compiling system, so that the second compiling configuration script is analyzed according to the configuration item.
Step 303, the second compiling system parses the second compiling configuration script and determines the corresponding compiling strategy of the configuration item with respect to the second compiling system.
And the second compiling configuration script comprises the corresponding relation between the configuration items and the compiling strategy.
In the compilation control method provided in this embodiment, after obtaining the configuration item selected by the user, the first compilation system generates a second compilation system including the configuration item, so that the second compilation system can determine the compilation strategy corresponding to the configuration item after analyzing the second compilation configuration script, and can quickly and accurately implement transfer of the configuration item from the first compilation system to the second compilation system.
Besides the solution provided by the second embodiment, the first compiling system may also pass the configuration items to the second compiling system in other ways. Optionally, the first compiling system may send the configuration item selected by the user to the second compiling system, so as to implement the transfer of the configuration item.
EXAMPLE III
The third embodiment of the invention provides a compiling control method. In this embodiment, based on the technical solutions provided in the above embodiments, a specific compiling control process is described by taking an Android system as an example. To better describe the embodiment, some concepts involved in the Android system are explained below.
Mk: mk is a compiling configuration script that can be used in AOSP source code engineering. In the old version Android system (version number <7.0), it is read directly by make and executed; in a new version of the Android system (version number > 7.0), Kati is responsible for converting an Android.
Android. bp: the source of the Blueprint project is a compiling configuration script analyzed by a Soong compiling system, and android. In the high Android version, the system is in a state of mixed use of Android.
Kati: kati is a tool to convert android.mk into a Ninja acceptable compilation dependency during the Android compilation system's transition from make to soong.
Soong: soong was designed to replace the compilation system core of the old version of the Android system.
Ninja: ninja is a partial bottom layer compiling system, receives input of a Ninja format compiling rule file, and executes a specific compiling process.
In this embodiment, the first compiling system may be a make compiling system, and the second compiling system may be a Soong compiling system; the first compiling and configuring script is an android.mk file, the second compiling and configuring script is an android.bp file, the make compiling system is used for analyzing the android.mk file, and the Soong compiling system is used for analyzing the android.bp file.
Fig. 4 is a flowchart illustrating a compiling control method according to a third embodiment of the present invention. As shown in fig. 4, the compiling control method in this embodiment may include:
step 401, the first compiling system loads the board-level configuration file to obtain the configuration item selected by the user.
Fig. 5 is a schematic diagram of a compiling control principle according to a third embodiment of the present invention. As shown in fig. 5, the board level configuration file may be a boardconfig.mk file, and the user may enter a selected configuration item in the boardconfig.mk file. After the user invokes the make command, the make compiling system may read the boardconfig.
Optionally, the loading, by the first compiling system, the board-level configuration file to obtain the configuration item selected by the user in step 401 may include: the first compiling system loads a board level configuration file, and if a user declares one or more configuration items in the board level configuration file to be true, the configuration item selected by the user is the one or more configuration items.
Specifically, the user can select the configuration items required by the product by setting the relevant configuration items to true in the boardconfig. In this embodiment, assuming that the configuration item required by the product is featurexxxx, it may be stated in the device/< vector >/< board >/boardconfig.mk file that one configuration item featurexxxx is true, which may refer to the code example specifically:
FEATURE_XXX:=true
step 402, the first compiling system generates a second compiling system, and the second compiling system comprises the configuration items.
Referring to fig. 5, after the user invokes the make command, the make compiling system may generate a Soong compiling system, which is used for parsing the android. In addition, the make compilation system may also pass the variables (Soong variables) of the Soong to the Soong compilation system after parsing the boardconfig.
Optionally, before the first compiling system generates the second compiling system including the configuration item, the method in this embodiment may further include: and the first compiling system analyzes a variable control file of the second compiling system, and the variable control file declares that each configuration item can be selected by a user. The generating, by the first compiling system in step 402, a second compiling system, where the second compiling system includes the configuration item, and may include: the first compiling system sets the configuration items of the second compiling system to comprise the configuration items selected by the user; and the first compiling system generates the second compiling system according to the configuration items of the second compiling system.
Specifically, the make compiling system may parse a variable control file of the Soong compiling system, where the variable control file may be a build/Soong/Android/variable. Specific reference may be made to the code example:
Figure BDA0002939201020000101
go document declares each selectable configuration item, and then can call each configuration item in the subsequent process. In addition, attribute information of the configuration items can be declared in the build/soong/Android/variable. go file, for example, the structural body of the configuration items can include Srcs information, Cflags information and the like, so that the attribute information of the configuration items can be conveniently used in the Android. bp file, and the compiling process can be ensured to be smoothly carried out.
When the make compiling system generates the Soong compiling system, the configuration items of the Soong compiling system can be set to include the configuration item selected by the user, and the Soong compiling system is generated according to the configuration item of the Soong compiling system.
Optionally, setting the configuration item of the Soong compiling system to include the configuration item selected by the user may include: mk file, if the configuration entry is true, then the sonong compilation system's configuration entry is also set to true.
The build/make/core/Soong _ config.mk is a configuration file of the Soong compiling system, and the introduction of configuration items can be implemented in the configuration file, and specific codes can refer to the following examples:
ifeq($(FEATURE_XXX),true)
$(call add_json_str,FEATURE_XXX,$(FEATURE_XXX))
endif
according to the codes, if the configuration item FEATURE _ XXX of the BoardConfig.mk file is true, the value of the configuration item FEATURE _ XXX of the Soong compiling system is set to the value of the configuration item FEATURE _ XXX in the BoardConfig.mk file, so that the configuration item FEATURE _ XXX can be transmitted from the BoardConfig.mk file to the build/make/core/Soong _ config.mk file in a true setting mode, the transmission of the configuration item can be simply and quickly realized, errors are not prone to occurring, and the stability of the program is effectively improved.
And 403, the second compiling system analyzes the second compiling configuration script and determines a functional module corresponding to the configuration item in the second compiling configuration script.
After step 401 and step 402, the first compiling system generates a second compiling system according to the configuration items, and in this step, the second compiling system may parse the second compiling configuration script to determine a corresponding compiling policy. In this embodiment, a function module corresponding to a configuration item is determined as a compilation strategy.
Specifically, the android.bp file may include a corresponding relationship between a configuration item and a function module, and the following examples may be referred to for specific codes:
Figure BDA0002939201020000111
Figure BDA0002939201020000121
in the above example, if the configuration item contains featurexxxx, FEATURE _002.cpp is compiled, and the FEATURE _002.cpp may be a source file corresponding to a certain functional module.
Further, the parsing, by the second compiling system, the second compiling configuration script to determine the functional module corresponding to the configuration item in the second compiling configuration script may include: and the second compiling system analyzes the second compiling configuration script to obtain a second result file, and the second result file indicates the corresponding functional module of the configuration item in the second compiling configuration script.
Referring to fig. 5, the Soong compiling system parses the android.bp file to obtain a second result file, where the second result file is an out/Soong/built.inja file, and the out/Soong/built.inja file indicates a function module corresponding to the configuration item in the second compiling configuration script.
Step 404, the first compiling system analyzes the first compiling configuration script and determines a functional module to be compiled in the first compiling configuration script.
Referring to fig. 5, besides generating the Soong compiling system, the make compiling system also analyzes the android.
Optionally, the method in this embodiment may further include: and the second compiling system generates a dependency relationship file for the first compiling system to use according to the second compiling configuration script, wherein the dependency relationship file indicates the corresponding functional module of the configuration item in the second compiling configuration script. The step 404 of parsing, by the first compiling system, the first compiling configuration script and determining a functional module to be compiled in the first compiling configuration script may include: the first compiling system analyzes the first compiling configuration script, calls a mixed compiling tool, and generates a first result file according to the analysis result of the first compiling configuration script and the dependency relationship file, wherein the first result file indicates the functional module to be compiled in the first compiling configuration script.
Specifically, the Soong compiling system may generate a dependency relationship file for the make compiling system to use according to the android.bp file, where the dependency relationship file is an out/Android _ product.mk file, and the out/Android _ product.mk file is used to process a dependency relationship between the android.bp file and the android.mk file, where a function module corresponding to the configuration item selected by the user in the android.bp file is indicated. In one embodiment, the Android _ product.mk file may be named as a product of other configurations.
The make compiling system can analyze the android.mk file, and call a mixed compiling tool kati, kati generate a first result file according to an analysis result of the android.mk file and an out/Android _ product.mk file, wherein the first result file is an out/built _ product.ninja file, the out/built _ product.ninja file is mainly responsible for compiling a part of functional modules which are not converted into a Soong compiling system to control compiling and outputting a packing rule of a mirror image, and the out/built _ product.ninja file indicates corresponding functional modules to be compiled in the android.mk file.
The beneficial effects of the above process are: mk files are used for enabling the make compiling system to know which functional modules are determined by the Soong compiling system to be compiled, and therefore the make compiling system can conveniently and smoothly conduct subsequent compiling control work. Generating an out/built _ product.ninja file containing a system image packaging rule according to the analysis result of the out/Android _ product.mk file and the make compiling system on the android.mk file, and adding a compiling strategy determined according to the android.mk file in the system packaging rule to prepare for a subsequent compiling process.
The function module to be compiled in the android.mk file may be the function module corresponding to the configuration item selected by the user and acquired in step 401, or may be the function module corresponding to the other configuration item determined by the make compiling system according to the other configuration item, which is not limited in this embodiment.
It can be understood that the process of parsing the android.mk file by the make compiling system and the process of parsing the android.bp file by the Soong compiling system may be two mutually independent processes, and the sequence number of the steps does not limit the sequence of the two processes.
And 405, generating a system image file by the third compiling system according to the function module corresponding to the configuration item in the second compiling configuration script and the function module to be compiled in the first compiling configuration script.
Optionally, the second compiling system may generate a combined file according to the first result file and the second result file; and the third compiling system can compile according to the combined file to generate a system image file.
Referring to fig. 5, the Soong compiling system may combine the out/Soong/built.ninja file and the out/built _ product.ninja file to generate an out/combined _ product.ninja file, and the third compiling system Ninja may compile according to the compiling rules in the out/combined _ product.ninja to generate system images (images), and may also generate output modules (output modules), and the like. The output module may be an object module corresponding to the functional module to be compiled, and the object module may include an executable file solidified in hardware and/or a dynamic library file used by other modules.
In practical application, a user can set configuration items of a product in a BoardConfig.mk file, then, a make command is called to start compiling, the make compiling system can use the configuration items in the BoardConfig.mk file to control corresponding variables set in the Soong compiling system, so that the configuration items in the BoardConfig.mk file are transmitted to the Soong compiling system, a corresponding compiling strategy can be determined in an android.bp file according to the configuration items of the Soong compiling system, customizing of a function module controlled and compiled by the Soong compiling system is achieved, meanwhile, the make compiling system can also determine the corresponding compiling strategy in the android.mk file according to the configuration items, and accordingly, customizing of the whole Android system is achieved.
When equipment needs to be replaced for customization, only the BoardConfig.mk file needs to be modified, the android.bp file or the android.mk file does not need to be modified, and the same set of AOSP source code is suitable for product development of different configurations through configuration of different BoardConfig.mk files on the premise of not damaging the integrity of the AOSP source code.
In the compilation control method provided by this embodiment, a first compilation system obtains a configuration item selected by a user, generates a second compilation system according to the configuration item, the second compilation system parses a second compilation configuration script, and determines a compilation strategy corresponding to the configuration item with respect to the second compilation system, and meanwhile, the first compilation system may also parse the first compilation configuration script to determine a function module to be compiled in the first compilation configuration script, and a third compilation system may generate a system image file according to the function module corresponding to the configuration item in the second compilation configuration script and the function module to be compiled in the first compilation configuration script, thereby quickly and stably implementing a compilation process and ensuring that compilation is performed smoothly.
In the technical solutions provided in the foregoing embodiments, the configuration items selected by the user may be included in a first configuration file and a second configuration file, where the first configuration file is used to parse a first compiled configuration script, the second configuration file is used to parse a second compiled configuration script, and the first configuration file and the second configuration file are different; when the configuration item selected by the user in the first configuration file is changed, the compiling strategy is correspondingly changed.
Specifically, in the Android system, the first configuration file may be a boardconfig.mk for parsing a first compiled configuration script android.mk file, and the second configuration file may be a built/make/core/soong _ config.mk file, which may be applied to parsing a second compiled configuration script android.bp file; when the configuration item selected by the user in the boardconfig.mk file is changed, the compiling strategy obtained by compiling the configuration script android.bp file correspondingly changes.
On the basis of the technical solutions provided by the above embodiments, optionally, the determination of the compiling policy may be further implemented by other means. For example, different function sets may correspond to different compiling configuration scripts, and only the compiling configuration script of the function set selected by the user may be parsed to obtain the corresponding compiling policy therein.
Alternatively, the software system may include a plurality of function sets, and each function set may include a plurality of function modules. For example, in AOSP there are included a number of sets of functions: recording function set, camera function set, calendar function set etc. recording function set can include a plurality of functional module again: basic recording function module, advanced recording function module, etc.
Each function set corresponds to one compiling configuration script, the corresponding compiling configuration script may be a first compiling configuration script or a second compiling configuration script, for example, the recording function set may correspond to one android.mk file, the camera function set may correspond to one android.bp file, and the calendar function set may correspond to one android.mk file.
The compiling configuration script corresponding to the function set stores the corresponding relationship between the function module and the configuration item in the function set, for example, the android.mk file corresponding to the recording function set can state that: FEATURE _01 corresponds to a basic recording function and FEATURE _02 corresponds to an advanced recording function. The user can select the required function set in the device file, and the compiling system can only analyze the function set selected by the user.
In the Android system, the device file may be a device.mk file, and the make compiling system may analyze the device.mk file in addition to analyzing the boardconfig.mk file to determine the function set selected by the user. Mk file, assume that the user declares the required set of functions in the device.m.k file includes a set of recording functions and a set of camera functions. In the compiling stage, the make compiling system traverses all android.mk files, selects the android.mk files corresponding to the recording function set from the android.mk files to analyze, and does not process the android.mk files corresponding to the calendar function set.
Example four
Fig. 6 is a schematic structural diagram of a compiling control device according to a fourth embodiment of the present invention. The compiling control device may execute the compiling control method corresponding to fig. 1, and as shown in fig. 6, the compiling control device may include:
a memory 11 for storing a computer program;
a processor 12 for executing the computer program stored in the memory to implement:
the first compiling system acquires a configuration item selected by a user;
the first compiling system transfers the configuration item to a second compiling system;
the second compiling system analyzes a second compiling configuration script and determines a corresponding compiling strategy of the configuration item relative to the second compiling system;
and the second compiling configuration script comprises the corresponding relation between the configuration items and the compiling strategy.
Optionally, the structure of the compiling control device may further include a communication interface 13 for communicating with other devices or a communication network.
In an implementation manner, the configuration items selected by the user are included in a first configuration file and a second configuration file, the first configuration file is used for analyzing a first compiled configuration script, the second configuration file is used for analyzing a second compiled configuration script, and the first configuration file and the second configuration file are different;
when the configuration item selected by the user in the first configuration file is changed, the compiling strategy is correspondingly changed.
In an implementable manner, when the first compiling system passes the configuration item to the second compiling system, the processor 12 is specifically configured to implement:
the first compiling system generates a second compiling system, and the second compiling system comprises the configuration items.
In an implementable manner, when the first compiling system obtains the configuration item selected by the user, the processor 12 is specifically configured to implement:
and the first compiling system loads the board-level configuration file and acquires the configuration item selected by the user.
In an implementable manner, when the first compiling system loads the board-level configuration file and obtains the configuration item selected by the user, the processor 12 is specifically configured to implement:
the first compiling system loads a board level configuration file, and if a user declares one or more configuration items in the board level configuration file to be true, the configuration item selected by the user is the one or more configuration items.
In an implementable manner, when the first compiling system generates a second compiling system, and the second compiling system includes the configuration item, the processor 12 is specifically configured to implement:
the first compiling system sets the configuration items of the second compiling system to comprise the configuration items selected by the user;
and the first compiling system generates the second compiling system according to the configuration items of the second compiling system.
In an implementable manner, when the configuration item for setting the second compiling system includes the configuration item selected by the user, the processor 12 is specifically configured to implement:
if the configuration item in the board-level configuration file is true, the configuration item of the second compilation system is also set to true.
In an implementation manner, when the configuration item of the second compiling system is set to true if the configuration item in the board level configuration file is true, the processor 12 is specifically configured to implement:
if the configuration item of the board-level configuration file is true, executing the following steps:
setting the value of the configuration item of the second compiling system as the value of the configuration item in the board-level configuration file.
In an implementable manner, before the first compiling system generates the second compiling system including the configuration item, the processor 12 is further configured to implement:
and the first compiling system analyzes a variable control file of the second compiling system, and the variable control file declares that each configuration item can be selected by a user.
In an implementable manner, when the second compiling system parses the second compiling configuration script and determines the corresponding compiling policy of the configuration item with respect to the second compiling system, the processor 12 is specifically configured to implement:
and the second compiling system analyzes the second compiling configuration script and determines the functional module corresponding to the configuration item in the second compiling configuration script.
In an implementable manner, when the second compiling system parses the second compiling configuration script and determines the corresponding functional module of the configuration item in the second compiling configuration script, the processor 12 is specifically configured to implement:
and the second compiling system analyzes the second compiling configuration script to obtain a second result file, and the second result file indicates the corresponding functional module of the configuration item in the second compiling configuration script.
In one implementation, the processor 12 is further configured to implement:
the first compiling system analyzes the first compiling configuration script and determines a functional module to be compiled in the first compiling configuration script.
In one implementation, the processor 12 is further configured to implement:
and the second compiling system generates a dependency relationship file for the first compiling system to use according to the second compiling configuration script, wherein the dependency relationship file indicates the corresponding functional module of the configuration item in the second compiling configuration script.
In an implementable manner, when the first compiling system parses the first compiling configuration script and determines a functional module to be compiled in the first compiling configuration script, the processor 12 is specifically configured to implement:
the first compiling system analyzes the first compiling configuration script, calls a mixed compiling tool, and generates a first result file according to the analysis result of the first compiling configuration script and the dependency relationship file, wherein the first result file indicates the functional module to be compiled in the first compiling configuration script.
In one implementation, the processor 12 is further configured to implement:
the second compiling system generates a combined file according to the first result file and the second result file;
and compiling by the third compiling system according to the combined file to generate a system image file.
In an implementable manner, the apparatus is based on an Android system, the first compiling system is a make compiling system, and the second compiling system is a Soong compiling system.
The compiling control device shown in fig. 6 may execute the method of the embodiment shown in fig. 1 to 5, and the parts not described in detail in this embodiment may refer to the related description of the embodiment shown in fig. 1 to 5. The implementation process and technical effect of the technical solution refer to the descriptions in the embodiments shown in fig. 1 to 5, and are not described herein again.
In addition, an embodiment of the present invention provides a storage medium, where the storage medium is a computer-readable storage medium, and program instructions are stored in the computer-readable storage medium, where the program instructions are used to implement the compiling control method in the embodiments shown in fig. 1 to fig. 5.
The technical solutions and the technical features in the above embodiments may be used alone or in combination when conflicting with the present invention, and all embodiments are equivalent embodiments within the scope of the present invention as long as they do not exceed the scope recognized by those skilled in the art.
In the embodiments provided in the present invention, it should be understood that the disclosed related remote control device and method can be implemented in other ways. For example, the above-described remote control device embodiments are merely illustrative, and for example, the division of the modules or units is only one logical division, and other divisions may be realized in practice, for example, a plurality of units or components may be combined or integrated into another system, or some features may be omitted, or not executed. In addition, the shown or discussed mutual coupling or direct coupling or communication connection may be an indirect coupling or communication connection through some interfaces, remote control devices or units, and may be in an electrical, mechanical or other form.
The units described as separate parts may or may not be physically separate, and parts displayed as units may or may not be physical units, may be located in one place, or may be distributed on a plurality of network units. Some or all of the units can be selected according to actual needs to achieve the purpose of the solution of the embodiment.
In addition, functional units in the embodiments of the present invention may be integrated into one processing unit, or each unit may exist alone physically, or two or more units are integrated into one unit. The integrated unit can be realized in a form of hardware, and can also be realized in a form of a software functional unit.
The integrated unit, if implemented in the form of a software functional unit and sold or used as a stand-alone product, may be stored in a computer readable storage medium. Based on such understanding, the technical solution of the present invention may be embodied in the form of a software product, which is stored in a storage medium and includes instructions for causing a computer processor (processor) to execute all or part of the steps of the method according to the embodiments of the present invention. And the aforementioned storage medium includes: various media capable of storing program codes, such as a usb disk, a removable hard disk, a Read Only Memory (ROM), a Random Access Memory (RAM), a magnetic disk, or an optical disk.
The above description is only an embodiment of the present invention, and not intended to limit the scope of the present invention, and all modifications of equivalent structures and equivalent processes performed by the present specification and drawings, or directly or indirectly applied to other related technical fields, are included in the scope of the present invention.
Finally, it should be noted that: the above embodiments are only used to illustrate the technical solution of the present invention, and not to limit the same; while the invention has been described in detail and with reference to the foregoing embodiments, it will be understood by those skilled in the art that: the technical solutions described in the foregoing embodiments may still be modified, or some or all of the technical features may be equivalently replaced; and the modifications or the substitutions do not make the essence of the corresponding technical solutions depart from the scope of the technical solutions of the embodiments of the present invention.

Claims (33)

1. A compilation control method, comprising:
the first compiling system acquires a configuration item selected by a user;
the first compiling system transfers the configuration item to a second compiling system;
the second compiling system analyzes a second compiling configuration script and determines a corresponding compiling strategy of the configuration item relative to the second compiling system;
and the second compiling configuration script comprises the corresponding relation between the configuration items and the compiling strategy.
2. The method of claim 1,
the configuration items selected by the user are contained in a first configuration file and a second configuration file, the first configuration file is used for analyzing a first compiling configuration script, the second configuration file is used for analyzing a second compiling configuration script, and the first configuration file and the second configuration file are different;
when the configuration item selected by the user in the first configuration file is changed, the compiling strategy is correspondingly changed.
3. The method of claim 1, wherein the first compiling system passing the configuration item to a second compiling system, comprises:
the first compiling system generates a second compiling system, and the second compiling system comprises the configuration items.
4. The method of claim 1, wherein the first compiling system obtaining the user-selected configuration item comprises:
and the first compiling system loads the board-level configuration file and acquires the configuration item selected by the user.
5. The method of claim 4, wherein the first compiling system loads the board-level configuration file and obtains the configuration item selected by the user, and wherein the method comprises:
the first compiling system loads a board level configuration file, and if a user declares one or more configuration items in the board level configuration file to be true, the configuration item selected by the user is the one or more configuration items.
6. The method of claim 3, wherein the first compiling system generates a second compiling system, the second compiling system including the configuration item, and wherein the method comprises:
the first compiling system sets the configuration items of the second compiling system to comprise the configuration items selected by the user;
and the first compiling system generates the second compiling system according to the configuration items of the second compiling system.
7. The method of claim 6, wherein the setting the configuration items of the second compilation system comprises the user-selected configuration items, comprising:
if the configuration item in the board-level configuration file is true, the configuration item of the second compilation system is also set to true.
8. The method of claim 7, wherein if the configuration item in the board-level configuration file is true, then the configuration item of the second compilation system is also set to true, comprising:
if the configuration item of the board-level configuration file is true, executing the following steps:
setting the value of the configuration item of the second compiling system as the value of the configuration item in the board-level configuration file.
9. The method of claim 3, further comprising, before the first compiling system generates the second compiling system including the configuration item:
and the first compiling system analyzes a variable control file of the second compiling system, and the variable control file declares that each configuration item can be selected by a user.
10. The method of claim 1, wherein parsing a second compilation configuration script by the second compilation system to determine a corresponding compilation strategy for the configuration item with respect to the second compilation system comprises:
and the second compiling system analyzes the second compiling configuration script and determines the functional module corresponding to the configuration item in the second compiling configuration script.
11. The method of claim 10, wherein parsing the second compiled configuration script by the second compiling system to determine the functional module corresponding to the configuration item in the second compiled configuration script comprises:
and the second compiling system analyzes the second compiling configuration script to obtain a second result file, and the second result file indicates the corresponding functional module of the configuration item in the second compiling configuration script.
12. The method of claim 11, further comprising:
the first compiling system analyzes the first compiling configuration script and determines a functional module to be compiled in the first compiling configuration script.
13. The method of claim 12, further comprising:
and the second compiling system generates a dependency relationship file for the first compiling system to use according to the second compiling configuration script, wherein the dependency relationship file indicates the corresponding functional module of the configuration item in the second compiling configuration script.
14. The method of claim 13, wherein the parsing the first compilation system to determine the functional modules to be compiled in the first compilation configuration script comprises:
the first compiling system analyzes the first compiling configuration script, calls a mixed compiling tool, and generates a first result file according to the analysis result of the first compiling configuration script and the dependency relationship file, wherein the first result file indicates the functional module to be compiled in the first compiling configuration script.
15. The method of claim 14, further comprising:
the second compiling system generates a combined file according to the first result file and the second result file;
and compiling by the third compiling system according to the combined file to generate a system image file.
16. The method according to any one of claims 1 to 15, wherein the method is based on the Android system, the first compiling system is a make compiling system, and the second compiling system is a Soong compiling system.
17. A compilation control device, comprising:
a memory for storing a computer program;
a processor for executing the computer program stored in the memory to implement:
the first compiling system acquires a configuration item selected by a user;
the first compiling system transfers the configuration item to a second compiling system;
the second compiling system analyzes a second compiling configuration script and determines a corresponding compiling strategy of the configuration item relative to the second compiling system;
and the second compiling configuration script comprises the corresponding relation between the configuration items and the compiling strategy.
18. The apparatus of claim 17, wherein the configuration items selected by the user are included in a first configuration file and a second configuration file, the first configuration file being used to parse a first compiled configuration script, the second configuration file being used to parse a second compiled configuration script, the first configuration file and the second configuration file being different;
when the configuration item selected by the user in the first configuration file is changed, the compiling strategy is correspondingly changed.
19. The apparatus of claim 17, wherein when the first compiling system passes the configuration item to a second compiling system, the processor is further configured to implement:
the first compiling system generates a second compiling system, and the second compiling system comprises the configuration items.
20. The apparatus of claim 17, wherein when the first compilation system obtains a user-selected configuration item, the processor is further configured to:
and the first compiling system loads the board-level configuration file and acquires the configuration item selected by the user.
21. The apparatus of claim 20, wherein when the first compilation system loads a board-level configuration file and obtains a configuration item selected by a user, the processor is specifically configured to:
the first compiling system loads a board level configuration file, and if a user declares one or more configuration items in the board level configuration file to be true, the configuration item selected by the user is the one or more configuration items.
22. The apparatus of claim 19, wherein when the first compiling system generates a second compiling system that includes the configuration item, the processor is specifically configured to implement:
the first compiling system sets the configuration items of the second compiling system to comprise the configuration items selected by the user;
and the first compiling system generates the second compiling system according to the configuration items of the second compiling system.
23. The apparatus of claim 22, wherein when the setting the configuration item of the second compilation system comprises the user-selected configuration item, the processor is specifically configured to:
if the configuration item in the board-level configuration file is true, the configuration item of the second compilation system is also set to true.
24. The apparatus of claim 23, wherein when the configuration item of the second compilation system is set to true if the configuration item in the board-level configuration file is true, the processor is further configured to:
if the configuration item of the board-level configuration file is true, executing the following steps:
setting the value of the configuration item of the second compiling system as the value of the configuration item in the board-level configuration file.
25. The apparatus of claim 19, wherein before the first compiling system generates the second compiling system including the configuration item, the processor is further configured to:
and the first compiling system analyzes a variable control file of the second compiling system, and the variable control file declares that each configuration item can be selected by a user.
26. The apparatus of claim 17, wherein when the second compilation system parses a second compilation configuration script to determine the corresponding compilation strategy for the configuration item with respect to the second compilation system, the processor is specifically configured to implement:
and the second compiling system analyzes the second compiling configuration script and determines the functional module corresponding to the configuration item in the second compiling configuration script.
27. The apparatus of claim 26, wherein when the second compiling system parses the second compiling configuration script and determines the functional module corresponding to the configuration item in the second compiling configuration script, the processor is specifically configured to implement:
and the second compiling system analyzes the second compiling configuration script to obtain a second result file, and the second result file indicates the corresponding functional module of the configuration item in the second compiling configuration script.
28. The apparatus of claim 27, wherein the processor is further configured to implement:
the first compiling system analyzes the first compiling configuration script and determines a functional module to be compiled in the first compiling configuration script.
29. The apparatus of claim 28, wherein the processor is further configured to implement:
and the second compiling system generates a dependency relationship file for the first compiling system to use according to the second compiling configuration script, wherein the dependency relationship file indicates the corresponding functional module of the configuration item in the second compiling configuration script.
30. The apparatus of claim 29, wherein when the first compiling system parses the first compiling configuration script to determine the functional module to be compiled in the first compiling configuration script, the processor is specifically configured to implement:
the first compiling system analyzes the first compiling configuration script, calls a mixed compiling tool, and generates a first result file according to the analysis result of the first compiling configuration script and the dependency relationship file, wherein the first result file indicates the functional module to be compiled in the first compiling configuration script.
31. The apparatus of claim 30, wherein the processor is further configured to implement:
the second compiling system generates a combined file according to the first result file and the second result file;
and compiling by the third compiling system according to the combined file to generate a system image file.
32. The apparatus according to any one of claims 17-31, wherein the apparatus is based on the Android system, the first compiling system is a make compiling system, and the second compiling system is a Soong compiling system.
33. A computer-readable storage medium characterized in that a program instruction for implementing the compilation control method according to any one of claims 1 to 16 is stored in the computer-readable storage medium.
CN202080004493.XA 2020-02-26 2020-02-26 Compilation control method, compilation control device and storage medium Pending CN112585573A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/076849 WO2021168711A1 (en) 2020-02-26 2020-02-26 Compiling control method, compiling control apparatus and storage medium

Publications (1)

Publication Number Publication Date
CN112585573A true CN112585573A (en) 2021-03-30

Family

ID=75145436

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080004493.XA Pending CN112585573A (en) 2020-02-26 2020-02-26 Compilation control method, compilation control device and storage medium

Country Status (2)

Country Link
CN (1) CN112585573A (en)
WO (1) WO2021168711A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113778453A (en) * 2021-09-18 2021-12-10 展讯通信(上海)有限公司 Android platform compiling control method, compiling system, device, medium and equipment

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060041879A1 (en) * 2004-08-19 2006-02-23 Bower Shelley K System and method for changing defined user interface elements in a previously compiled program
CN105138387A (en) * 2015-08-31 2015-12-09 惠州Tcl移动通信有限公司 Method, device and system for compiling software
CN105607941A (en) * 2015-11-25 2016-05-25 上海斐讯数据通信技术有限公司 Apparatus and method for compiling configuration in android project
CN106020921A (en) * 2016-05-16 2016-10-12 广东天波信息技术股份有限公司 Peripheral application transplantation method and system
CN109542446A (en) * 2017-08-14 2019-03-29 中兴通讯股份有限公司 A kind of compiling system, method and compiler
US20190310835A1 (en) * 2017-03-28 2019-10-10 Tencent Technology (Shenzhen) Company Limited Application development method, tool, and device, and storage medium

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103927213B (en) * 2014-04-18 2017-08-25 广州猎豹网络科技有限公司 A kind of file compiling method and compilation device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060041879A1 (en) * 2004-08-19 2006-02-23 Bower Shelley K System and method for changing defined user interface elements in a previously compiled program
CN105138387A (en) * 2015-08-31 2015-12-09 惠州Tcl移动通信有限公司 Method, device and system for compiling software
CN105607941A (en) * 2015-11-25 2016-05-25 上海斐讯数据通信技术有限公司 Apparatus and method for compiling configuration in android project
CN106020921A (en) * 2016-05-16 2016-10-12 广东天波信息技术股份有限公司 Peripheral application transplantation method and system
US20190310835A1 (en) * 2017-03-28 2019-10-10 Tencent Technology (Shenzhen) Company Limited Application development method, tool, and device, and storage medium
CN109542446A (en) * 2017-08-14 2019-03-29 中兴通讯股份有限公司 A kind of compiling system, method and compiler

Also Published As

Publication number Publication date
WO2021168711A1 (en) 2021-09-02

Similar Documents

Publication Publication Date Title
CN108958736B (en) Page generation method and device, electronic equipment and computer readable medium
CN105511873B (en) User interface control display method and device
WO2018210096A1 (en) Rule engine-based rule configuration method, terminal and device, and storage medium
CN111506314B (en) Project development method, device, server and medium
US10496423B2 (en) Method for opening up data and functions of terminal application based on reconstruction technology
CN110727429B (en) Front-end page generation method, device and equipment
CN104049974A (en) Dynamic control assembly method and system
CN111427583A (en) Component compiling method and device, electronic equipment and computer readable storage medium
KR101350798B1 (en) Robot system controlled on the basis of opros platform and control method thereof
CN111026368B (en) Python-based plug-in generation method, device, equipment and storage medium
CN111857709A (en) Mapping method and device for React component and Flutter component, electronic equipment and storage medium
US20210232378A1 (en) Program calling, electronic device, and storage medium
CN111158800A (en) Method and device for constructing task DAG based on mapping relation
CN112585573A (en) Compilation control method, compilation control device and storage medium
CN110312990A (en) Configuration method and system
CN114092590B (en) Electronic device and evaluation method and medium for image rendering performance of electronic device
US20090300648A1 (en) Continuation-Based Runtime Callback Invocation
US20210182041A1 (en) Method and apparatus for enabling autonomous acceleration of dataflow ai applications
CN114253845A (en) Automatic testing method and device for special-shaped architecture integration system
CN113032004B (en) Method, apparatus and program product for managing development jobs in a development environment
CN113961279A (en) Page rendering method, device, server and storage medium
CN117369820B (en) Rendering flow chart generation method, device and equipment
CN114090523B (en) Electronic device, and node parsing method and medium for XML file thereof
CN115167833B (en) Programming method, executable program execution method and device
KR102385381B1 (en) Method and system for generating script forcamera effect

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20210330