技术领域
[0001] 本发明涉及动态编译技术领域,特别是一种远程动态编译Android工程的方法及装置。
相关背景技术
[0002] 编译整个android系统软件版本,是一个非常耗时的过程(编译一个软件版本大概4小时左右),通常编译一个软件版本,工程师需要一直待在公司,在公司编译服务器上进行相应的操作。如果编译的软件版本需要在晚上进行编译,需要工程师一直待在公司编译软件版本,将会给工程师带来极大的不便。并且,不同的编译项目有时需要多个编译工程师,这就会导致不同工程师在不同工作环境下进行编译的繁琐工作,而且还浪费了电脑的CPU,造成了效率低下等问题。
具体实施方式
[0020] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0021] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0022] 本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0023] 在本发明中,“模块”、“装置”、“系统”等指应用于计算机的相关实体,如硬件、硬件和软件的组合、软件或执行中的软件等。详细地说,例如,元件可以、但不限于是运行于处理器的过程、处理器、对象、可执行元件、执行线程、程序和/或计算机。还有,运行于服务器上的应用程序或脚本程序、服务器都可以是元件。一个或多个元件可在执行的过程和/或线程中,并且元件可以在一台计算机上本地化和/或分布在两台或多台计算机之间,并可以由各种计算机可读介质运行。元件还可以根据具有一个或多个数据包的信号,例如,来自一个与本地系统、分布式系统中另一元件交互的,和/或在因特网的网络通过信号与其它系统交互的数据的信号通过本地和/或远程过程来进行通信。
[0024] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”,不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0025] 下面结合附图对本发明作进一步详细的说明。
[0026] 图1示意性地显示了根据本发明的一种实施方式的远程动态编译Android工程的方法流程图,如图1所示,本实施例中包括如下步骤:
[0027] 步骤S101:搭建构建环境,并在搭建的构建环境中配置构建代码地址。其中,搭建构建环境是通过jenkins实现,由于Jenkins是一个功能强大的应用程序,可以允许持续集成和持续交付项目,可以通过在linux系统中安装jenkis工具完成搭建构建环境。配置构建代码地址可以应用安装后的jenkins工具实现,在jenkins工具内配置git代码(分布式版本控制代码)的远程地址,配置的时候代码地址主要是起到了存储代码的作用。
[0028] 步骤S102:根据配置的构建代码地址组建Android工程。具体实现为:首先通过jenkins工具的远程下载功能获取配置的构建代码地址;之后执行jenkins构建,在执行jenkins的构建操作时,jenkins工具会自动拉取远程代码库中的的代码,生成代码库配置文件,示例性地,下载到本地后,会生成一个manifest.xml的代码库配置文件。
[0029] 之后对该代码库配置文件通过调用python脚本工具进行动态解析,该python脚本工具在jenkins中事先配置,根据动态解析出的代码库配置文件中的内容,例如代码库的地址和目录信息,从构建代码地址拉取远程代码,组建Android工程,该工程的展示图如图5所示。
[0030] 步骤S103:接收远程配置的代码分支地址,根据配置的代码分支地址和组建的Android工程进行动态编译。具体实现为:先根据配置的代码分支地址动态构建代码库配置文件,代码分支地址的配置通过在jenkins中配置,从而可以构建出属于不同项目的apk文件,实现了动态编译的目的。再解析动态构建的代码库配置文件,根据动态构建的代码库配置文件在Android工程下创建相应的配置目录,这样可以实时对构建的代码库进行更新,实现了动态编译Android工程。
[0031] 根据本实施例提供的方法可以通过Jenkins构建代码地址,根据不同的代码地址实时更新代码库,解决了项目中本地Android构建需要由不同人员不同环境进行配置的繁琐,以及浪费本地电脑的cpu资源的问题,只需要通过远程云端部署,各项目人员远程根据需求编译Android工程即可完成编译任务,大大的提高了处理效率。
[0032] 图2示意性地显示了根据本发明一实施方式的远程动态编译Android工程的服务器原理框图,如图2所示,
[0033] 该远程动态编译Android工程的服务器上包括构建模块2,该构建模用作构建环境,实现为jenkins工具。该模块还用于配置构建代码地址和接收远程配置的代码分支地址,并根据配置的构建代码地址和代码分支地址执行构建操作,具体实现方式可以参照上述的方法部分。
[0034] 构建模块2中配置有工程组建模块201,实现为python脚本工具,用于根据配置的构建代码地址组建Android工程,和根据配置的代码分支地址对组建的Android工程进行动态编译。
[0035] 根据本实施例公开的服务器可以实现解决项目中本地Android构建需要由不同人员不同环境进行配置的繁琐,以及浪费本地电脑的cpu资源的问题,只需要通过远程云端部署,各项目人员远程根据需求编译Android工程即可完成编译任务,大大的提高了处理效率。
[0036] 图3示意性地显示了根据本发明一实施方式的远程动态编译Android工程的的系统原理框图,如图3所示,
[0037] 该远程动态编译Android工程的的系统包括至少一个用户接口3、服务器4。
[0038] 在本实施例用户接口3实现为一个,其用于接收代码分支地址的配置,输出至服务器4,改代码分支地址的配置可以参照上述的方法部分。
[0039] 该服务器4能够与用户接口3进行远程通信,用于根据接收到的代码分支地址执行动态编译处理,其中,该服务器4实现为图2的远程动态编译Android工程的服务器。用户接口3实现为用于与服务器4的构建模块2通信的web页面。
[0040] 根据本实施例提供的系统,可以实现智能化的构建Android工程,并且可以远程编译,实时动态更新,解决了现有技术中的问题,只需要通过远程云端部署,各项目人员远程根据需求编译Android工程即可完成编译任务,大大的提高了处理效率。
[0041] 在一些实施例中,本发明实施例提供一种非易失性计算机可读存储介质,存储介质中存储有一个或多个包括执行指令的程序,执行指令能够被电子设备(包括但不限于计算机,服务器,或者网络设备等)读取并执行,以用于执行本发明上述任一项远程动态编译Android工程的方法。
[0042] 在一些实施例中,本发明实施例还提供一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,使计算机执行上述任一项远程动态编译Android工程的方法。
[0043] 在一些实施例中,本发明实施例还提供一种电子设备,其包括:至少一个处理器,以及与至少一个处理器通信连接的存储器,其中,存储器存储有可被至少一个处理器执行的指令,指令被所述至少一个处理器执行,以使至少一个处理器能够执行远程动态编译Android工程的方法。
[0044] 在一些实施例中,本发明实施例还提供一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时远程动态编译Android工程的方法。
[0045] 上述本发明实施例的远程动态编译Android工程的服务器可用于执行本发明实施例的远程动态编译Android工程的方法,并相应的达到上述本发明实施例的实现远程动态编译Android工程的方法所达到的技术效果,这里不再赘述。本发明实施例中可以通过硬件处理器(hardware processor)来实现相关功能模块。
[0046] 图4为本发明一实施例提供的执行远程动态编译Android工程的方法的电子设备的硬件结构示意图,如图4所示,该设备包括:
[0047] 一个或多个处理器310以及存储器320,图4中以一个处理器310为例。
[0048] 执行远程动态编译Android工程的方法的设备还可以包括:输入装置330和输出装置340。
[0049] 处理器310、存储器320、输入装置330和输出装置340可以通过总线或者其他方式连接,图4中以通过总线连接为例。
[0050] 存储器320作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的远程动态编译Android工程的方法对应的程序指令/模块。处理器310通过运行存储在存储器320中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例远程动态编译Android工程的方法。
[0051] 存储器320可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据远程动态编译Android工程的服务器的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器320可选包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至远程动态编译Android工程的服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0052] 输入装置330可接收输入的数字或字符信息,以及产生与远程动态编译Android工程的服务器的用户设置以及功能控制有关的信号。输出装置340可包括显示屏等显示设备。
[0053] 上述一个或者多个模块存储在所述存储器320中,当被所述一个或者多个处理器310执行时,执行上述任意方法实施例中的远程动态编译Android工程的方法。
[0054] 上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。
[0055] 本申请实施例的电子设备以多种形式存在,包括但不限于:
[0056] (1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
[0057] (2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
[0058] (3)车载设备:这类设备可以应用于车载领域。该类设备包括:车载导航。
[0059] (4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
[0060] (5)其他具有数据交互功能的电子装置。
[0061] 以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0062] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0063] 最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。