CN112965721A - 基于Android的项目编译方法、装置、计算机设备及存储介质 - Google Patents

基于Android的项目编译方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN112965721A
CN112965721A CN202110220438.0A CN202110220438A CN112965721A CN 112965721 A CN112965721 A CN 112965721A CN 202110220438 A CN202110220438 A CN 202110220438A CN 112965721 A CN112965721 A CN 112965721A
Authority
CN
China
Prior art keywords
file
aar
module
compiled
basic
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
CN202110220438.0A
Other languages
English (en)
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.)
Ping An E Wallet Electronic Commerce Co Ltd
Original Assignee
Ping An E Wallet Electronic Commerce 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 Ping An E Wallet Electronic Commerce Co Ltd filed Critical Ping An E Wallet Electronic Commerce Co Ltd
Priority to CN202110220438.0A priority Critical patent/CN112965721A/zh
Publication of CN112965721A publication Critical patent/CN112965721A/zh
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
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

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

本申请涉及研发管理技术领域,揭露一种基于Android的项目编译方法、装置、计算机设备及存储介质,其中方法包括获取项目开发指令,并对项目开发指令进行解析,获取待编译模块;当待编译模块中AAR开关为开启状态时,以获取并解析配置文件,获取配置文件中AAR开关为开启状态的基础AAR文件,再通过接收指令,以获取用户端对基础AAR文件修改后返回的文件,得到编译文件;判断编译文件中AAR开关是否开启,若是,则对编译文件中的模块进行AAR打包,将得到的目标AAR文件进行编译,得到编译结果。本申请还涉及区块链技术,目标AAR文件存储于区块链中。本申请通过将无需修改的基础代码打包成AAR文件,并且实现对AAR文件版本的更新,有利于提高Android编译和开发的效率。

Description

基于Android的项目编译方法、装置、计算机设备及存储介质
技术领域
本申请涉及研发管理技术领域,尤其涉及一种基于Android的项目编译方法、装置、计算机设备及存储介质。
背景技术
目前Android客户端开发中,需要消耗大量时间在等待工程编译上,大大影响开发效率。这是因为现在Android应用开发中,往往同一个应用会有较多功能,自然会产生有许多代码与许多模块,在应用的开发过程中,代码需要进行编译与校验,而编译校验经常会消耗大量时间。
为了解决上述问题,现有的方式是将基层的代码打包为AAR包,将上层的代码参与编译,因为Android开发中可以有多个模块,每一个模块可以打包成一个AAR包,由于AAR文件在编译过程中可以不参与到编译校验中,节省了编译时间;但是,由于AAR包里的代码无法改动,不能引用纯代码,而多数项目中通常包含多模块,各模块之间属于链式引用,这样导致在Android开发过程中,需要人力管理众多模块及其AAR包版本,这样导致Android编译效率下降,进而导致Android开发效率下降。现亟需一种能够提高Android编译和开发效率的方法。
发明内容
本申请实施例的目的在于提出一种基于Android的项目编译方法、装置、计算机设备及存储介质,以提高Android的项目编译和开发的效率。
为了解决上述技术问题,本申请实施例提供一种基于Android的项目编译方法,包括:
获取项目开发指令,并对所述项目开发指令进行解析,获取待编译模块;
判断所述待编译模块中AAR开关是否开启,得到第一判断结果;
若所述第一判断结果为所述AAR开关为开启状态,则获取所述编译模块对应的配置文件;
解析所述配置文件,获取所述配置文件中AAR开关为开启状态的基础AAR文件;
通过接收指令获取用户端对所述基础AAR文件修改后返回的文件,得到编译文件;
判断所述编译文件中AAR开关是否开启,若所述编译文件中AAR开关为开启状态,则对所述编译文件中的模块进行AAR打包,得到目标AAR文件;
对所述AAR文件进行编译,得到编译结果。
为了解决上述技术问题,本申请实施例提供一种基于Android的项目编译装置,包括:
项目开发指令解析模块,用于获取项目开发指令,并对所述项目开发指令进行解析,获取待编译模块;
第一判断结果获取模块,用于判断所述待编译模块中AAR开关是否开启,得到第一判断结果;
配置文件获取模块,用于若所述第一判断结果为所述AAR开关为开启状态,则获取所述编译模块对应的配置文件;
配置文件解析模块,用于解析所述配置文件,获取所述配置文件中AAR开关为开启状态的基础AAR文件;
编译文件获取模块,用于通过接收指令获取用户端对所述基础AAR文件修改后返回的文件,得到编译文件;
目标AAR文件获取模块,用于判断所述编译文件中AAR开关是否开启,若所述编译文件中AAR开关为开启状态,则对所述编译文件中的模块进行AAR打包,得到目标AAR文件;
目标AAR文件编译模块,用于对所述AAR文件进行编译,得到编译结果。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种计算机设备,包括,一个或多个处理器;存储器,用于存储一个或多个程序,使得一个或多个处理器实现上述任意一项所述的基于Android的项目编译方法。
为解决上述技术问题,本发明采用的一个技术方案是:一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的基于Android的项目编译方法。
本发明实施例提供了一种基于Android的项目编译方法、装置、计算机设备及存储介质。本申请实施例通过获取项目开发指令,并对项目开发指令进行解析,以获取待编译模块;判断待编译模块中AAR开关是否开启,得到判断结果;若判断结果为AAR开关为开启状态,则获取编译模块对应的配置文件;解析配置文件,获取配置文件中AAR开关为开启状态的基础AAR文件,实现只需要对指定的模块进行修改,便于后续进行编译;通过接收指令,以获取用户端对基础AAR文件修改后返回的文件,得到编译文件;判断编译文件中AAR开关是否开启,若AAR开为开启状态,则对编译文件中的模块进行AAR打包,得到目标AAR文件;对AAR文件进行编译,得到编译结果。实现对需要更改的基础代码进行修改,将无需修改的基础代码打包成AAR文件,并且实现对AAR文件版本的更新,有利于提高Android编译和开发的效率。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的基于Android的项目编译方法的应用环境示意图;
图2根据本申请实施例提供的基于Android的项目编译方法的一实现流程图;
图3是本申请实施例提供的基于Android的项目编译方法中子流程的一实现流程图;
图4是本申请实施例提供的基于Android的项目编译方法中子流程的又一实现流程图;
图5是本申请实施例提供的基于Android的项目编译方法中子流程的又一实现流程图;
图6是本申请实施例提供的基于Android的项目编译方法中子流程的又一实现流程图;
图7是本申请实施例提供的基于Android的项目编译方法中子流程的又一实现流程图;
图8是本申请实施例提供的基于Android的项目编译方法中子流程的又一实现流程图;
图9是本申请实施例提供的基于Android的项目编译装置示意图;
图10是本申请实施例提供的计算机设备的示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
下面结合附图和实施方式对本发明进行详细说明。
请参阅图1,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、搜索类应用、即时通信工具等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的基于Android的项目编译方法一般由服务器执行,相应地,基于Android的项目编译装置一般配置于服务器中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
请参阅图2,图2示出了基于Android的项目编译方法的一种具体实施方式。
需注意的是,若有实质上相同的结果,本发明的方法并不以图2所示的流程顺序为限,该方法包括如下步骤:
S1:获取项目开发指令,并对项目开发指令进行解析,以获取待编译模块。
具体的,本申请实施例是基于Android端的项目开发,以提高项目的编译速度。在用户端需要进行Android端的项目开发时,用户端针对需要开发的项目,启动该项目,并且用户端在该项目中选择需要编辑的模块,此时用户端会向服务器发送项目开发指令,在该项目开发指令中含有用户端需要编辑的模块标识,服务器接收该项目开发指令,并对所述项目开发指令进行解析,以获取到用户端需要编辑的模块标识,并通过该模块标识以获取到项目开发所对应的模块,将该模块作为待编译模块。需要说明的是,待编译模块是根据用户端实际情况进行指定,此处不做限定。
S2:判断待编译模块中AAR开关是否开启,得到第一判断结果。
具体的,待编译模块中AAR开关相当于一个总的AAR开关,通过判断待编译模块中AAR开关是否开启,以获取是否需要对待编译模块中的AAR文件进行修改,或者是直接对纯代码进行修改和编译。若是待编译模块中AAR开关为开启状态,则说明需要对待编译模块中的AAR文件进行修改,也即需要对基础代码对应的模块进行修改;若是待编译模块中AAR开关为关闭状态,则是直接通过对纯代码进行修改和编译。
其中,AAR开关为衡量是否需要对AAR文件进行操作的开关。AAR(AndroidArchive)文件是一个Android库项目的二进制归档文件,其文件扩展名是.aar,但文件本身是具有以下条目的一个简单zip文件。该AAR文件在编译过程中可以不参与到编译校验中,节省了编译时间。
S3:若第一判断结果为AAR开关为开启状态,则获取编译模块对应的配置文件。
具体的,当判断结果为AAR开关为开启状态,即是要对待编译模块中的AAR文件进行修改,则获取编译模块对应的配置文件。该配置文件包括了基础代码对应模块打包成对应的AAR文件和各个模块之间的链式关系。进一步的,该配置文件可以为json文件。
S4:解析配置文件,获取配置文件中AAR开关为开启状态的基础AAR文件。
具体的,由于配置文件中含有多个不同模块,每个模块都有对应的模块名称、模块对应的版本号以及模块对应的AAR文件。该模块对应的AAR文件都有对应的AAR开关,服务器通过解析该配置文件,获取配置文件中基础AAR文件对应的AAR开关的开启状态,若是对应的AAR开关为开启状态,则是需要对该AAR文件对应的模块进行修改代码。所以获取对模块的AAR开关为开启状态的AAR文件,便于对其进行修改。
S5:通过接收指令获取用户端对基础AAR文件修改后返回的文件,得到编译文件。
具体的,服务器将获取到的基础AAR文件返回到用户端,用户端对该基础AAR文件对应的模块进行代码的修改,当用户端对其修改完成后,会将修改后的文件返回到服务器中。所以服务器通过接收指令,以获取用户端对基础AAR文件修改后返回的文件,从而得到编译文件。
S6:判断编译文件中AAR开关是否开启,若编译文件中AAR开关为开启状态,则对编译文件中的模块进行AAR打包,得到目标AAR文件。
具体的,当判断出编译文件中AAR开关为开启状态,则读取配置文件,以获取配置文件中当前模块,也即是配置文件中最底层的模块,并且由于各个模块之间至呈链式关系的,则还需要获取配置文件中模块之间的链式关系。按照模块间的链式关系,从最低层的模块逐步往上递增,修改其模块对应的版本号,直至到达模块中最高层,此时配置好了新的模块对应版本号,并对其就那些AAR打包,最终生成目标AAR文件。例如,最底层的模块对应版本号为1.2.0,往上递增的话,变成1.2.1、1.2.2等等,实现生成最新的版本号。
其中,AAR文件打包过程为将原先模块(module)下的Application改为Library,调用assembleDebug或assembleRelease时就会在该模块(module)下的build/output目录下生成AAR文件。
进一步的,每个AAR文件都配置有对应的AAR开关,该AAR开关可以由于json配置文件进行配置,也可以由Android的根目录文件进行配置。通过AAR开关的开启和关闭状态,判断是否需要对AAR开关对应的AAR文件进行操作。
进一步的,若是编译文件中AAR开关为关闭状态,则直接对配置文件进行编译,得到编译结果,后续再对其进行SDK构建,形成SDK包。
S7:对AAR文件进行编译,得到编译结果。
具体的,由于目标AAR文件已经包括了用户端对其进行代码的修改,所以对生成的目标AAR文件进行编译,能够生成对应的编译结果;进一步的,后续在对编译结果进行SDK构建,形成SDK包。从而完成Android项目的开发。
本实施例中,通过获取项目开发指令,并对项目开发指令进行解析,获取待编译模块;判断待编译模块中AAR开关是否开启,得到判断结果;若判断结果为AAR开关为开启状态,则获取编译模块对应的配置文件;解析配置文件,获取配置文件中AAR开关为开启状态的基础AAR文件,实现只需要对指定的模块进行修改,便于后续进行编译;通过接收指令,以获取用户端对基础AAR文件修改后返回的文件,得到编译文件;判断编译文件中AAR开关是否开启,若AAR开为开启状态,则对编译文件中的模块进行AAR打包,得到目标AAR文件;对AAR文件进行编译,得到编译结果。实现对需要更改的基础代码进行修改,将无需修改的基础代码打包成AAR文件,并且实现对AAR文件版本的更新,有利于提高Android编译和开发的效率。
请参阅图3,图3示出了步骤S6的一种具体实施方式,步骤S6中判断编译文件中AAR开关是否开启,若编译文件中AAR开关为开启状态,则对编译文件中的模块进行AAR打包,得到目标AAR文件的具体实现过程,详叙如下:
S61:判断编译文件中AAR开关是否开启,得到第二判断结果。
具体的,根据判断编译文件中AAR开关是否开启,来判断是否需要对编译文件中的模块进行版本更新和AAR打包。若是判断编译文件中AAR开关为关闭状态,直接对编译文件进行编译。
S62:若第二判断结果为编译文件中AAR开关为开启状态,则读取配置文件,以获取配置文件中最底层的模块和模块之间的链式关系。
具体的,若第二判断结果为编译文件中AAR开关为开启状态,则是需要对编译文件中的模块进行版本更新和AAR打包。所以需要获取配置文件中最底层的模块和模块之间的链式关系,便于后续进行版本更新和AAR打包。
S63:根据链式关系,将最底层的模块对应的版本号按照往上递增的方式进行版本更新,得到配置好的版本号。
具体的,按照模块之间的链式关系,从最底层的模块对应的版本号开始往上层逐步递增,每上升一层模块,模块对应的版本号进行更新,直至到达模块的最高层。例如,模块a对应版本号为12.0,模块b对应版本号为12.1,模块c对应版本号为12.2,且模块c为最高层的模块,其模块a、模块b和模块c之间的链式关系为模块a→模块b→模块c,则最终得到的配置好的版本号为12.2。
S64:将配置好的版本号对应的模块进行AAR打包,得到目标AAR文件。
具体的,上述配置好的版本号对应的模块进行AAR打包,使得生成目标AAR文件,使得编译过程中不需要对目标AAR文件进行校验,提高编译效率。
在本实施中,通过判断编译文件中AAR开关是否开启,得到第二判断结果,若第二判断结果为编译文件中AAR开关为开启状态,则读取配置文件,以获取配置文件中最底层的模块和模块之间的链式关系,根据链式关系,将最底层的模块对应的版本号按照往上递增的方式进行版本更新,得到配置好的版本号,将配置好的版本号对应的模块进行AAR打包,得到目标AAR文件,实现在进行Android项目开发过程中,进行AAR版本的更新,便于维护AAR文件,并且实现得到目标AAR文件,使得编译过程中不需要对目标AAR文件进行校验,提高编译效率。
请参阅图4,图4示出了步骤S64之后的一种具体实施方式,该实施例包括:
S65:判断目标AAR文件是否被上层模块引用,得到第三判断结果。
具体的,由于模块之间存在引用关系,则需要判断目标AAR文件对应的模块是否还存在着被其他上传模块引用的情况。
S66:若第三判断结果为目标AAR文件被上层模块引用,则根据链式关系,将目标AAR文件对应的版本号按照往上递增的方式,得到重新配置好的版本号。
具体的,通过判断目标AAR文件对应的配置文件中引用是否为空,来判断其是否还被其他上层模块引用。若是目标AAR文件对应的配置文件中引用不为空,为其他模块的标识,则第三判断结果为目标AAR文件被上层模块引用,则需要重新更新对应的版本号,从而得到重新配置好的版本号。
S67:将重新配置好的版本号对应的模块进行AAR打包,得到引用后的AAR文件。
具体的,由于目标AAR文件被上层模块引用,所以为了维护AAR文件,需要将重新配置好的版本号对应的模块进行AAR打包,得到引用后的AAR文件。
本实施例中,通过判断目标AAR文件是否被上层模块引用,得到第三判断结果,若第三判断结果为目标AAR文件被上层模块引用,则根据链式关系,将目标AAR文件对应的版本号按照往上递增的方式,得到重新配置好的版本号,将重新配置好的版本号对应的模块进行AAR打包,得到引用后的AAR文件,实现对AAR文件的版本号进行维护,并且重新生成引用后的AAR文件,有利于提高Android编译和开发的效率。
请参阅图5,图5示出了步骤S65的一种具体实施方式,步骤S65中判断目标AAR文件是否被上层模块引用,得到第三判断结果的具体实现过程,详叙如下:
S651:获取编译文件中每个模块对应的标识。
具体的,在编译文件中每个模块都有对应的标识,该标识可以文件每个模块对应的名称、版本号等等,通过获获取编译文件中每个模块对应的标识,便于后续识别目标AAR文件是否被其他上层模块引用。
S652:判断目标AAR文件对应的引用中是否包含标识,得到第三判断结果。
具体的,通过目标AAR文件对应的引用中是否包含标识,判断其是否被其他上层模块引用,也可以通过识别引用中的标识,判断出是被哪个上层模块进行引用。
S653:若目标AAR文件对应的引用中包含标识,则第三判断结果为目标AAR文件被上层模块引用。
具体的,若目标AAR文件对应的引用中包含标识,则第三判断结果为目标AAR文件被上层模块引用,并且后续需要重新生成AAR文件对应的版本号和重新进行AAR打包,直至AAR文件中不被其他上层模块引用为止。
S654:若目标AAR文件对应的引用中未包含标识,则第三判断结果为目标AAR文件未被上层模块引用。
具体的,若目标AAR文件对应的引用中未包含标识,则第三判断结果为目标AAR文件未被上层模块引用,则后续直接执行文件编译,实现获取编译结果。
本实施例中,通过获取编译文件中每个模块对应的标识,判断目标AAR文件对应的引用中是否包含标识,得到第三判断结果,从而获取到目标AAR文件是否被上层模块引用,便于后续重新进行生成AAR文件对应的版本号和重新进行AAR打包,实现对AAR文件的管理,进而提高Android编译和开发的效率。
请参阅图6,图6示出了步骤S1之前的一种具体实施方式,该实施例包括:
S11:将基础代码对应模块打包成AAR文件,作为基础AAR文件,其中,基础AAR文件配置有AAR开关。
具体的,由于AAR文件在编译过程中可以不参与到编译校验中,节省了编译时间,所以为了提高Android开发和编译效率,将除了需求代码之外的代码对应的模块打包成AAR文件,也即将基础代码对应模块打包成AAR文件,使得每个AAR文件都对应一个基础代码模块,并且基础AAR文件配置有AAR开关。其中,基础代码是指除了需求代码之外的代码。
S12:获取基础AAR文件对应模块之间的链式关系。
具体的,链式关系是指在模块之间,下层模块被上层模块引用所形成的关系;例如,模块a被模块b引用,模块b被模块c引用,这样模块a、模块b、模块c之间就形成了模块a→模块b→模块c的链式关系。获取模块之间的链式关系,便于后续对模块的版本号进行更新。
S13:将基础AAR文件和链式关系写入配置文件中。
具体的,将基础AAR文件和链式关系写入配置文件中,便于后续获取配置文件,从而进行Android项目的开发和编译。
本实施例中,通过将基础代码对应模块打包成AAR文件,作为基础AAR文件,获取基础AAR文件对应模块之间的链式关系,并将基础AAR文件和链式关系写入配置文件中,实现将基础代码打包成AAR文件,使得在项目的编译过程中,不用对其进行校验,提高编译速度,并且将模块之间的链式关系和基础AAR文件写入配置文件中,便于后续获取配置文件。
请参阅图7,图7示出了步骤S4的一种具体实施方式,步骤S4中解析配置文件,获取配置文件中AAR开关为开启状态的基础AAR文件的具体实现过程,详叙如下:
S41:解析配置文件,获取配置文件中AAR文件对应的唯一标识和配置文件中AAR文件对应基础AAR开关状况,其中,唯一标识包括基础AAR文件名称、基础AAR文件对应模块名称以及基础AAR文件版本号。
具体的,由于在上述步骤中,已经判断出来了待编译模块中AAR开关是属于开启状态,故说明需要引用配置文件中的模块进行修改,便于后续进行编译。然而在配置文件中包括有多个基础AAR文件对应的模块,在实际的应用过程中,有可能并不是要引用所有模块,所以需要获取配置文件中AAR文件对应的唯一标识和配置文件中AAR文件对应基础AAR开关状况,进行判断哪些基础文件需要获取。
S42:根据唯一标识,获取配置文件中基础AAR开关状态为开启状态对应基础AAR文件。
具体的,本申请实施例可能只需要引用其中一些模块,所以通过判断配置文件中基础AAR文件对应的AAR的开启和关闭状态,判断出哪一些模块需要引用。而且,由于每个模块都对应这一个AAR文件,这些AAR文件都有对应的名称、版本号和模块名称,这些都是其唯一标识,所以根据这些唯一标识获取对应的基础AAR文件。
本实施中,通过解析配置文件,获取配置文件中AAR文件对应的唯一标识和配置文件中AAR文件对应基础AAR开关状况,根据唯一标识,获取配置文件中基础AAR开关状态为开启状态对应基础AAR文件,实现根据实际情况获取基础AAR文件,便于后续对所述基础AAR文件进行修改和编译。
请参阅图8,图8示出了步骤S5的一种具体实施方式,步骤S5中通过接收指令获取用户端对基础AAR文件修改后返回的文件,得到编译文件的具体实现过程,详叙如下:
S51:根据基础AAR文件,生成发送指令和接收指令。
具体的,由于要将基础AAR文件发送到用户端,需要用户端对基础AAR文件进行修改,然后获取修改后的基础AAR文件。所以服务器先根据基础AAR文件,生成发送指令和接收指令,分别用来发送基础AAR文件和接收修改后的AAR文件。
S52:通过发送指令将基础AAR文件发送到用户端。
具体的,服务器通过执行发送指令,将基础AAR文件发送到用户端,以便用户端根据实际编译场景对基础AAR文件进行修改。
S53:通过接收指令接收用户端对基础AAR文件修改后返回的文件,得到编译文件。
具体的,当用户端发送修改后的额基础AAR文件后,服务器通过执行接收指令,接收用户端对基础AAR文件修改后返回的文件,并将其作为编译文件。
本实施例中,根据基础AAR文件,生成发送指令和接收指令,通过发送指令将基础AAR文件发送到用户端,通过接收指令接收用户端对基础AAR文件修改后返回的文件,得到编译文件,实现获取编译文件,便于后续对编译文件进行编译,从而得到编译结果。
需要强调的是,为进一步保证上述目标AAR文件的私密和安全性,上述目标AAR文件还可以存储于一区块链的节点中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
请参考图9,作为对上述图2所示方法的实现,本申请提供了一种基于Android的项目编译装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图9所示,本实施例的基于Android的项目编译装置包括:项目开发指令解析模块81、第一判断结果获取模块82、配置文件获取模块83、配置文件解析模块84、编译文件获取模块85、目标AAR文件获取模块86及目标AAR文件编译模块87,其中:
项目开发指令解析模块81,用于获取项目开发指令,并对项目开发指令进行解析,以获取待编译模块;
第一判断结果获取模块82,用于判断待编译模块中AAR开关是否开启,得到第一判断结果;
配置文件获取模块83,用于若第一判断结果为AAR开关为开启状态,则获取编译模块对应的配置文件;
配置文件解析模块84,用于解析配置文件,获取配置文件中AAR开关为开启状态的基础AAR文件;
编译文件获取模块85,用于通过接收指令获取用户端对基础AAR文件修改后返回的文件,得到编译文件;
目标AAR文件获取模块86,用于判断编译文件中AAR开关是否开启,若编译文件中AAR开关为开启状态,则对编译文件中的模块进行AAR打包,得到目标AAR文件;
目标AAR文件编译模块87,用于对AAR文件进行编译,得到编译结果。
进一步的,目标AAR文件获取模块86包括:
第二判断结果获取单元,用于判断编译文件中AAR开关是否开启,得到第二判断结果;
配置文件读取单元,用于若第二判断结果为编译文件中AAR开关为开启状态,则读取配置文件,以获取配置文件中最底层的模块和模块之间的链式关系;
版本更新单元,用于根据链式关系,将最底层的模块对应的版本号按照往上递增的方式进行版本更新,得到配置好的版本号;
AAR打包单元,用于将配置好的版本号对应的模块进行AAR打包,得到目标AAR文件。
进一步的,在AAR打包单元之后,该基于Android的项目编译装置还包括:
第三判断结果获取单元,用于判断目标AAR文件是否被上层模块引用,得到第三判断结果;
版本重新配置单元,用于若第三判断结果为目标AAR文件被上层模块引用,则根据链式关系,将目标AAR文件对应的版本号按照往上递增的方式,得到重新配置好的版本号;
引用后的AAR文件单元,用于将重新配置好的版本号对应的模块进行AAR打包,得到引用后的AAR文件。
进一步的,第三判断结果获取单元包括:
标识获取子单元,用于获取编译文件中每个模块对应的标识;
标识判断子单元,用于判断目标AAR文件对应的引用中是否包含标识,得到第三判断结果;
第一标识判断子单元,用于若标AAR文件对应的引用中包含标识,则第三判断结果为目标AAR文件被上层模块引用;
第二标识判断子单元,用于若标AAR文件对应的引用中未包含标识,则第三判断结果为目标AAR文件未被上层模块引用。
进一步的,在项目开发指令解析模块81之前,该基于Android的项目编译装置还包括包括:
基础代码打包模块,用于将基础代码对应模块打包成AAR文件,作为基础AAR文件,其中,基础AAR文件配置有AAR开关;
链式关系获取模块,用于获取基础AAR文件对应模块之间的链式关系;
配置文件写入模块,用于将基础AAR文件和链式关系写入配置文件中。
进一步的,配置文件解析模块84包括:
唯一标识获取单元,用于解析配置文件,获取配置文件中AAR文件对应的唯一标识和配置文件中AAR文件对应基础AAR开关状况,其中,唯一标识包括基础AAR文件名称、基础AAR文件对应模块名称以及基础AAR文件版本号;
基础AAR文件获取单元,用于根据唯一标识,获取配置文件中基础AAR开关状态为开启状态对应基础AAR文件。
进一步的,编译文件获取模块85包括:
指令生成单元,用于根据基础AAR文件,生成发送指令和接收指令;
基础AAR文件发送单元,用于通过发送指令将基础AAR文件发送到用户端;
编译文件接收单元,用于通过接收指令接收用户端对基础AAR文件修改后返回的文件,得到编译文件。
需要强调的是,为进一步保证上述目标AAR文件的私密和安全性,上述目标AAR文件还可以存储于一区块链的节点中。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图10,图10为本实施例计算机设备基本结构框图。
计算机设备9包括通过系统总线相互通信连接存储器91、处理器92、网络接口93。需要指出的是,图中仅示出了具有三种组件存储器91、处理器92、网络接口93的计算机设备9,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
存储器91至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器91可以是计算机设备9的内部存储单元,例如该计算机设备9的硬盘或内存。在另一些实施例中,存储器91也可以是计算机设备9的外部存储设备,例如该计算机设备9上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器91还可以既包括计算机设备9的内部存储单元也包括其外部存储设备。本实施例中,存储器91通常用于存储安装于计算机设备9的操作系统和各类应用软件,例如基于Android的项目编译方法的程序代码等。此外,存储器91还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器92在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器92通常用于控制计算机设备9的总体操作。本实施例中,处理器92用于运行存储器91中存储的程序代码或者处理数据,例如运行上述基于Android的项目编译方法的程序代码,以实现基于Android的项目编译方法的各种实施例。
网络接口93可包括无线网络接口或有线网络接口,该网络接口93通常用于在计算机设备9与其他电子设备之间建立通信连接。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序可被至少一个处理器执行,以使至少一个处理器执行如上述的一种基于Android的项目编译方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例的方法。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。

Claims (10)

1.一种基于Android的项目编译方法,其特征在于,包括:
获取项目开发指令,并对所述项目开发指令进行解析,以获取待编译模块;
判断所述待编译模块中AAR开关是否开启,得到第一判断结果;
若所述第一判断结果为所述AAR开关为开启状态,则获取所述编译模块对应的配置文件;
解析所述配置文件,获取所述配置文件中AAR开关为开启状态的基础AAR文件;
通过接收指令获取用户端对所述基础AAR文件修改后返回的文件,得到编译文件;
判断所述编译文件中AAR开关是否开启,若所述编译文件中AAR开关为开启状态,则对所述编译文件中的模块进行AAR打包,得到目标AAR文件;
对所述AAR文件进行编译,得到编译结果。
2.根据权利要求1所述的基于Android的项目编译方法,其特征在于,所述判断所述编译文件中AAR开关是否开启,若所述编译文件中AAR开关为开启状态,则对所述编译文件中的模块进行AAR打包,得到目标AAR文件,包括:
判断所述编译文件中AAR开关是否开启,得到第二判断结果;
若所述第二判断结果为所述编译文件中AAR开关为开启状态,则读取所述配置文件,以获取所述配置文件中最底层的模块和模块之间的链式关系;
根据所述链式关系,将所述最底层的模块对应的版本号按照往上递增的方式进行版本更新,得到配置好的版本号;
将所述配置好的版本号对应的模块进行AAR打包,得到目标AAR文件。
3.根据权利要求2所述的基于Android的项目编译方法,其特征在于,在所述将所述配置好的版本号对应的模块进行AAR打包,得到目标AAR文件之后,所述方法还包括:
判断所述目标AAR文件是否被上层模块引用,得到第三判断结果;
若所述第三判断结果为所述目标AAR文件被上层模块引用,则根据所述链式关系,将所述目标AAR文件对应的版本号按照往上递增的方式,得到重新配置好的版本号;
将重新配置好的版本号对应的模块进行AAR打包,得到引用后的AAR文件。
4.根据权利要求3所述的基于Android的项目编译方法,其特征在于,所述判断所述目标AAR文件是否被上层模块引用,得到第三判断结果,包括:
获取所述编译文件中每个模块对应的标识;
判断所述目标AAR文件对应的引用中是否包含所述标识,得到所述第三判断结果;
若所述目标AAR文件对应的引用中包含所述标识,则所述第三判断结果为所述目标AAR文件被所述上层模块引用;
若所述目标AAR文件对应的引用中未包含所述标识,则所述第三判断结果为所述目标AAR文件未被所述上层模块引用。
5.根据权利要求2所述的基于Android的项目编译方法,其特征在于,在所述获取项目开发指令,并对所述项目开发指令进行解析,获取待编译模块之前,所述方法还包括:
将基础代码对应模块打包成AAR文件,作为所述基础AAR文件,其中,所述基础AAR文件配置有AAR开关;
获取所述基础AAR文件对应模块之间的所述链式关系;
将所述基础AAR文件和所述链式关系写入所述配置文件中。
6.根据权利要求1所述的基于Android的项目编译方法,其特征在于,所述解析所述配置文件,获取所述配置文件中AAR开关为开启状态的基础AAR文件,包括:
解析所述配置文件,获取所述配置文件中AAR文件对应的唯一标识和所述配置文件中AAR文件对应基础AAR开关状况,其中,所述唯一标识包括所述基础AAR文件名称、所述基础AAR文件对应模块名称以及所述基础AAR文件版本号;
根据唯一标识,获取所述配置文件中所述基础AAR开关状态为开启状态对应基础AAR文件。
7.根据权利要求1至6任一项所述的基于Android的项目编译方法,其特征在于,所述通过接收指令获取用户端对所述基础AAR文件修改后返回的文件,得到编译文件,包括:
根据所述基础AAR文件,生成发送指令和接收指令;
通过所述发送指令将所述基础AAR文件发送到所述用户端;
通过所述接收指令接收用户端对所述基础AAR文件修改后返回的文件,得到所述编译文件。
8.一种基于Android的项目编译装置,其特征在于,包括:
项目开发指令解析模块,用于获取项目开发指令,并对所述项目开发指令进行解析,以获取待编译模块;
第一判断结果获取模块,用于判断所述待编译模块中AAR开关是否开启,得到第一判断结果;
配置文件获取模块,用于若所述第一判断结果为所述AAR开关为开启状态,则获取所述编译模块对应的配置文件;
配置文件解析模块,用于解析所述配置文件,获取所述配置文件中AAR开关为开启状态的基础AAR文件;
编译文件获取模块,用于通过接收指令获取用户端对所述基础AAR文件修改后返回的文件,得到编译文件;
目标AAR文件获取模块,用于判断所述编译文件中AAR开关是否开启,若所述编译文件中AAR开关为开启状态,则对所述编译文件中的模块进行AAR打包,得到目标AAR文件;
目标AAR文件编译模块,用于对所述AAR文件进行编译,得到编译结果。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的基于Android的项目编译方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的基于Android的项目编译方法。
CN202110220438.0A 2021-02-26 2021-02-26 基于Android的项目编译方法、装置、计算机设备及存储介质 Pending CN112965721A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110220438.0A CN112965721A (zh) 2021-02-26 2021-02-26 基于Android的项目编译方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110220438.0A CN112965721A (zh) 2021-02-26 2021-02-26 基于Android的项目编译方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN112965721A true CN112965721A (zh) 2021-06-15

Family

ID=76276140

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110220438.0A Pending CN112965721A (zh) 2021-02-26 2021-02-26 基于Android的项目编译方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN112965721A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542448A (zh) * 2017-08-18 2019-03-29 中兴通讯股份有限公司 Sdk库文件的输出方法、终端及计算机可读存储介质
CN117521569A (zh) * 2023-12-07 2024-02-06 摩尔线程智能科技(北京)有限责任公司 芯片功能仿真方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107256150A (zh) * 2017-05-27 2017-10-17 深圳酷旗互联网有限公司 一种缩短无屏Android设备开机启动时间的设置方法
CN108037927A (zh) * 2017-12-29 2018-05-15 有米科技股份有限公司 开发包打包方法、系统、可读存储介质和计算机设备
CN109358841A (zh) * 2018-08-15 2019-02-19 中国平安人寿保险股份有限公司 网页应用开发编译方法、装置及存储设备、计算机设备
CN109542448A (zh) * 2017-08-18 2019-03-29 中兴通讯股份有限公司 Sdk库文件的输出方法、终端及计算机可读存储介质
CN111399840A (zh) * 2020-03-04 2020-07-10 腾讯音乐娱乐科技(深圳)有限公司 一种模块开发方法及装置
CN112181423A (zh) * 2020-09-04 2021-01-05 招商局金融科技有限公司 基于配置文件的项目构建方法、装置、计算机设备及介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107256150A (zh) * 2017-05-27 2017-10-17 深圳酷旗互联网有限公司 一种缩短无屏Android设备开机启动时间的设置方法
CN109542448A (zh) * 2017-08-18 2019-03-29 中兴通讯股份有限公司 Sdk库文件的输出方法、终端及计算机可读存储介质
CN108037927A (zh) * 2017-12-29 2018-05-15 有米科技股份有限公司 开发包打包方法、系统、可读存储介质和计算机设备
CN109358841A (zh) * 2018-08-15 2019-02-19 中国平安人寿保险股份有限公司 网页应用开发编译方法、装置及存储设备、计算机设备
CN111399840A (zh) * 2020-03-04 2020-07-10 腾讯音乐娱乐科技(深圳)有限公司 一种模块开发方法及装置
CN112181423A (zh) * 2020-09-04 2021-01-05 招商局金融科技有限公司 基于配置文件的项目构建方法、装置、计算机设备及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TONY-老师: "基于Android APP Bundle开发的全新编译模式(编译速度提升70%)", Retrieved from the Internet <URL:https://blog.csdn.net/u014294681/article/details/105967678> *
昂首千丘远: "mysql条件编译_为工程增加条件编译开关", pages 1 - 8, Retrieved from the Internet <URL:https://blog.csdn.net/weixin_36370128/article/details/113613763> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542448A (zh) * 2017-08-18 2019-03-29 中兴通讯股份有限公司 Sdk库文件的输出方法、终端及计算机可读存储介质
CN117521569A (zh) * 2023-12-07 2024-02-06 摩尔线程智能科技(北京)有限责任公司 芯片功能仿真方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN112416327A (zh) 项目构建方法、装置、计算机设备及存储介质
CN110737460A (zh) 一种平台项目管理方法及装置
CN112558946A (zh) 一种生成代码的方法、装置、设备和计算机可读存储介质
CN108958843A (zh) 基于轻量化脚本的插件构建方法、系统、设备及介质
CN112631924A (zh) 自动化测试方法、装置、计算机设备及存储介质
CN112965721A (zh) 基于Android的项目编译方法、装置、计算机设备及存储介质
CN112632071A (zh) 数据库主键id生成方法、装置、设备及存储介质
CN112416458A (zh) 基于ReactNative的预加载方法、装置、计算机设备及存储介质
CN114996619A (zh) 一种页面显示的方法、装置、计算机设备及存储介质
CN111782304A (zh) 分页加载数据逻辑控制方法、装置、计算机设备及介质
CN115098186A (zh) 项目处理方法、装置、计算机设备及存储介质
CN113536185A (zh) 应用页面的加载方法、存储介质、及其相关设备
CN112965731B (zh) 基于Tinker的Flutter热更新方法、装置、设备及存储介质
CN111475468A (zh) 新增系统的日志接入方法、装置、设备及存储介质
CN115712422A (zh) 表单页面的生成方法、装置、计算机设备及存储介质
CN115904317A (zh) 一种前后端接口统一调用方法、装置、设备及存储介质
CN115328764A (zh) 基于自动化测试的测试代码优化方法及其相关设备
CN112988225B (zh) 注解配置方法、装置、设备及存储介质
CN113434582B (zh) 业务数据处理方法、装置、计算机设备和存储介质
CN114637672A (zh) 自动化数据测试方法、装置、计算机设备及存储介质
CN114968822A (zh) 接口测试方法、装置、计算机设备及存储介质
CN114626352A (zh) 报表自动化生成方法、装置、计算机设备及存储介质
CN112764729A (zh) 应用软件开发方法、装置、计算机设备及可读存储介质
CN111580799A (zh) 领域特定语言脚本拼装方法及系统
CN116302847B (zh) 异常信息的动态采集方法、装置、计算机设备及介质

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