CN113094051A - 应用程序的构建方法、装置、设备和介质 - Google Patents

应用程序的构建方法、装置、设备和介质 Download PDF

Info

Publication number
CN113094051A
CN113094051A CN202110458724.0A CN202110458724A CN113094051A CN 113094051 A CN113094051 A CN 113094051A CN 202110458724 A CN202110458724 A CN 202110458724A CN 113094051 A CN113094051 A CN 113094051A
Authority
CN
China
Prior art keywords
file
target
host
remote host
application program
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
CN202110458724.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.)
Netease Media Technology Beijing Co Ltd
Original Assignee
Netease Media Technology Beijing 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 Netease Media Technology Beijing Co Ltd filed Critical Netease Media Technology Beijing Co Ltd
Priority to CN202110458724.0A priority Critical patent/CN113094051A/zh
Publication of CN113094051A publication Critical patent/CN113094051A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供一种应用程序的构建方法、装置、设备和介质,涉及计算机软件技术领域,本地主机将目标应用程序的第一工程文件发送给远端主机,以使远端主机基于第一工程文件执行编译任务,获得目标应用程序的目标安装包,然后接收远端主机发送的目标安装包。这样,通过将应用程序工程文件的编译任务转移到远端主机执行,可以解放本地主机的CPU,从而避免在本地主机进行工程文件开发的同时,还执行工程文件的编译任务,使得本地主机的内存开销大且负荷重,导致应用程序的构建效率和构建性能较低的情况。因此,本公开实施例可以提高应用程序的构建效率和构建性能。

Description

应用程序的构建方法、装置、设备和介质
技术领域
本公开涉及计算机软件技术领域,特别涉及一种应用程序的构建方法、装置、设备和介质。
背景技术
本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在应用程序开发过程中,开发人员在开发主机中建立应用程序工程,编写源代码,生成应用程序的工程文件。在应用程序的工程文件开发完成后,还需要在开发主机中对工程文件进行构建,以执行工程文件的编译任务,最终获得应用程序的安装包。
由于开发主机的中央处理器(Central Processing Unit,CPU)资源有限,而应用程序的工程文件通常比较庞大,使得工程文件的构建需要庞大的内存开销,且处理器的负荷也比较重,导致应用程序的构建效率和构建性能较低。
发明内容
本公开实施例提供一种应用程序的构建方法、装置、设备和介质,用于提高应用程序的构建效率和构建性能。
第一方面,本公开实施例提供了一种应用程序的构建方法,包括:
将目标应用程序的第一工程文件发送给远端主机,以使所述远端主机基于所述第一工程文件执行编译任务,获得所述目标应用程序的目标安装包;
接收所述远端主机发送的所述目标安装包。
在一种可能的实施方式中,所述将目标应用程序的第一工程文件发送给远端主机之前,还包括:
响应于远程编译指令,向所述远端主机发送连接请求,以使所述远端主机对所述连接请求认证通过后,与所述本地主机建立连接。
在一种可能的实施方式中,所述向所述远端主机发送连接请求,包括:
执行远程编译的配置信息,以向所述远端主机发送连接请求;其中,所述远程编译的配置信息基于Configuration组件预先配置,且保存在所述第一工程文件中。
在一种可能的实施方式中,所述执行远程编译的配置信息,包括:
获取所述工程文件中的安全外壳协议SSH配置信息以及密钥文件;其中,所述SSH配置信息包括所述远端主机的设备信息,所述密钥文件对应的解密密钥存储在所述远端主机中;
基于所述SSH配置信息,通过SSH命令向所述远端主机发送携带所述密钥文件的连接请求,以使所述远端主机通过所述解密密钥对所述密钥文件进行解密,若解密成功,则所述连接请求认证通过。
在一种可能的实施方式中,所述方法还包括:
将所述远程编译的配置信息发送给其他本地主机,以使所述其他本地主机与所述远端主机建立连接;和/或
通过版本管理组件对所述远程编译的配置信息进行管理。
在一种可能的实施方式中,所述方法还包括:
向所述远端主机发送同步请求,以使所述远端主机返回当前存储的所述目标应用程序的第二工程文件的文件信息;其中,所述第二工程文件与所述第一工程文件相同,或者所述第二工程文件是基于所述第一工程文件确定的;
根据所述第二工程文件的文件信息,将需要同步的第三工程文件与所述第二工程文件进行比对,获得增量文件;其中,所述第三工程文件是对所述第一工程文件更新后得到的;
将所述增量文件发送给所述远端主机,以使所述远端主机基于所述第二工程文件和所述增量文件执行编译任务,获得所述目标应用程序的更新安装包。
在一种可能的实施方式中,所述第二工程文件的文件信息包括各个数据块的第一校验信息;
所述根据所述第二工程文件的文件信息,将需要同步的第三工程文件与所述第二工程文件进行比对,获得增量文件,包括:
针对所述第三工程文件中的每个目标数据块,获取所述目标数据块的第二校验信息,并从所述第二工程文件的各个数据块的第一校验信息中,匹配所述第二校验信息,若未匹配到所述第二校验信息,则将所述目标数据块作为所述增量文件中的数据块。
在一种可能的实施方式中,所述向所述远端主机发送同步请求之前,还包括:
将所述第三工程文件中的目标格式的文件,存储至所述本地主机对应的服务器中,并将所述第二工程文件中的所述目标格式的文件去除;其中,所述目标格式用于表征所述目标应用程序的版本信息。
在一种可能的实施方式中,所述将目标应用程序的第一工程文件发送给远端主机之前,还包括:
将所述本地主机的用户名发送给所述远端主机,以使所述远端主机根据所述用户名建立用户名目录;其中,所述用户名目录下存放的是所述本地主机发送的文件。
第二方面,本公开实施例还提供了一种应用程序的构建方法,应用于远端主机,包括:
接收本地主机发送的目标应用程序的第一工程文件;
执行所述第一工程文件的编译任务后,获得所述目标应用程序的目标安装包;
将所述目标安装包发送给所述本地主机。
在一种可能的实施方式中,所述接收本地主机发送的目标应用程序的第一工程文件之前,还包括:
接收所述本地主机发送的连接请求,并对所述连接请求进行认证;
若所述连接请求认证通过,则与所述本地主机建立连接。
在一种可能的实施方式中,所述连接请求是所述本地主机通过SSH命令发送的,且携带有密钥文件;所述接收所述本地主机发送的连接请求,并对所述连接请求进行认证,包括:
通过SSH进程接收所述本地主机发送的连接请求;
通过预先存储的解密密钥,对所述密钥文件进行解密;
若解密成功,则所述连接请求认证通过。
在一种可能的实施方式中,所述方法还包括:
接收所述本地主机发送的同步请求后,获取当前存储的第二工程文件的文件信息;其中,所述第二工程文件与所述第一工程文件相同,或者所述第二工程文件是基于所述第一工程文件确定的;
将所述第二工程文件的文件信息发送给所述本地主机,以使所述本地主机根据所述第二工程文件的文件信息,将需要同步的第三工程文件与所述第二工程文件进行比对,获得增量文件;其中,所述第三工程文件是对所述第一工程文件更新后得到的;
接收所述本地主机发送的所述增量文件,并基于所述第三工程文件和所述增量文件执行编译任务,获得所述目标应用程序的更新安装包。
在一种可能的实施方式中,所述将所述第二工程文件的文件信息发送给所述本地主机,以使所述本地主机根据所述第二工程文件的文件信息,将需要同步的第三工程文件与所述第二工程文件进行比对,获得增量文件,包括:
将所述第二工程文件的各个数据块的第一校验信息发送给所述本地主机,以使所述本地主机针对所述第三工程文件中的每个目标数据块,获取所述目标数据块的第二校验信息,并从所述各个数据块的第一校验信息中,匹配所述第二校验信息,若未匹配到所述第二校验信息,则将所述目标数据块作为所述增量文件中的数据块。
在一种可能的实施方式中,所述增量文件包括第一目标文件,所述第一目标文件中存储有所述目标应用程序的签名文件的本地存储路径,所述第三工程文件中的第二目标文件与所述第一目标文件相对应,且所述第二目标文件中存储有所述签名文件的远端存储路径;
所述接收所述本地主机发送的所述增量文件之后,基于所述第三工程文件和所述增量文件执行编译任务之前,还包括:
将所述第一目标文件中的所述签名文件的本地存储路径去除,并将所述第二目标文件中的所述签名文件的远端存储路径合并至所述第一目标文件;
将所述第二目标文件替换为合并后的第一目标文件。
在一种可能的实施方式中,所述第一工程文件包括源代码文件和资源文件,所述执行所述第一工程文件的编译任务后,获得所述目标应用程序的目标安装包,包括:
通过编译工具将所述源代码文件转换成目标可执行文件,以及将所述资源文件转换成已编译资源;
将所述目标可执行文件和所述已编译资源合并成安装包,并采用签名文件对所述安装包进行签名,得到所述目标应用程序的目标安装包。
在一种可能的实施方式中,所述接收本地主机发送的目标应用程序的第一工程文件之前,还包括:
根据所述本地主机发送的用户名,建立用户名目录;其中,所述用户名下存放的是所述本地主机发送的文件。
第三方面,本公开实施例还提供了一种应用程序的构建装置,应用于本地主机,包括:
文件发送模块,用于将目标应用程序的第一工程文件发送给远端主机,以使所述远端主机基于所述第一工程文件执行编译任务,获得所述目标应用程序的目标安装包;
安装包接收模块,用于接收所述远端主机发送的所述目标安装包。
在一种可能的实施方式中,所述装置还包括请求连接模块,用于:
响应于远程编译指令,向所述远端主机发送连接请求,以使所述远端主机对所述连接请求认证通过后,与所述本地主机建立连接。
在一种可能的实施方式中,所述请求连接模块还包括:
执行子模块,用于执行远程编译的配置信息,以向所述远端主机发送连接请求;其中,所述远程编译的配置信息基于Configuration组件预先配置,且保存在所述第一工程文件中。
在一种可能的实施方式中,所述执行子模块还用于:
获取所述工程文件中的安全外壳协议SSH配置信息以及密钥文件;其中,所述SSH配置信息包括所述远端主机的设备信息,所述密钥文件对应的解密密钥存储在所述远端主机中;
基于所述SSH配置信息,通过SSH命令向所述远端主机发送携带所述密钥文件的连接请求,以使所述远端主机通过所述解密密钥对所述密钥文件进行解密,若解密成功,则所述连接请求认证通过。
在一种可能的实施方式中,所述装置还包括:
配置信息共享模块,用于将所述远程编译的配置信息发送给其他本地主机,以使所述其他本地主机与所述远端主机建立连接;和/或
版本管理模块,用于通过版本管理组件对所述远程编译的配置信息进行管理。
在一种可能的实施方式中,所述装置还包括:
请求同步模块,用于向所述远端主机发送同步请求,以使所述远端主机返回当前存储的所述目标应用程序的第二工程文件的文件信息;其中,所述第二工程文件与所述第一工程文件相同,或者所述第二工程文件是基于所述第一工程文件确定的;
增量获取模块,根据所述第二工程文件的文件信息,将需要同步的第三工程文件与所述第二工程文件进行比对,获得增量文件;其中,所述第三工程文件是对所述第一工程文件更新后得到的;
增量发送模块,用于将所述增量文件发送给所述远端主机,以使所述远端主机基于所述第二工程文件和所述增量文件执行编译任务,获得所述目标应用程序的更新安装包。
在一种可能的实施方式中,所述第二工程文件的文件信息包括各个数据块的第一校验信息;
所述增量获取模块还用于:
针对所述第三工程文件中的每个目标数据块,获取所述目标数据块的第二校验信息,并从所述第二工程文件的各个数据块的第一校验信息中,匹配所述第二校验信息,若未匹配到所述第二校验信息,则将所述目标数据块作为所述增量文件中的数据块。
在一种可能的实施方式中,所述装置还包括存储模块,用于:
将所述第三工程文件中的目标格式的文件,存储至所述本地主机对应的服务器中,并将所述第二工程文件中的所述目标格式的文件去除;其中,所述目标格式用于表征所述目标应用程序的版本信息。
在一种可能的实施方式中,所述装置还包括用户名发送模块,用于:
将所述本地主机的用户名发送给所述远端主机,以使所述远端主机根据所述用户名建立用户名目录;其中,所述用户名目录下存放的是所述本地主机发送的文件。
第四方面,本公开实施例还提供了一种应用程序的构建装置,应用于远端主机,包括:
文件接收模块,用于接收本地主机发送的目标应用程序的第一工程文件;
编译模块,用于执行所述第一工程文件的编译任务后,获得所述目标应用程序的目标安装包;
安装包发送模块,用于将所述目标安装包发送给所述本地主机。
在一种可能的实施方式中,所述装置还包括连接认证模块,用于:
接收所述本地主机发送的连接请求,并对所述连接请求进行认证;
若所述连接请求认证通过,则与所述本地主机建立连接。
在一种可能的实施方式中,所述连接请求是所述本地主机通过SSH命令发送的,且携带有密钥文件;
所述连接认证模块还用于:
通过SSH进程接收所述本地主机发送的连接请求;
通过预先存储的解密密钥,对所述密钥文件进行解密;
若解密成功,则所述连接请求认证通过。
在一种可能的实施方式中,所述装置还包括:
信息获取模块,用于接收所述本地主机发送的同步请求后,获取当前存储的第二工程文件的文件信息;其中,所述第二工程文件与所述第一工程文件相同,或者所述第二工程文件是基于所述第一工程文件确定的;
信息发送模块,用于将所述第二工程文件的文件信息发送给所述本地主机,以使所述本地主机根据所述第二工程文件的文件信息,将需要同步的第三工程文件与所述第二工程文件进行比对,获得增量文件;其中,所述第三工程文件是对所述第一工程文件更新后得到的;
增量接收模块,用于接收所述本地主机发送的所述增量文件,并基于所述第三工程文件和所述增量文件执行编译任务,获得所述目标应用程序的更新安装包。
在一种可能的实施方式中,所述信息发送模块还用于:
将所述第二工程文件的各个数据块的第一校验信息发送给所述本地主机,以使所述本地主机针对所述第三工程文件中的每个目标数据块,获取所述目标数据块的第二校验信息,并从所述各个数据块的第一校验信息中,匹配所述第二校验信息,若未匹配到所述第二校验信息,则将所述目标数据块作为所述增量文件中的数据块。
在一种可能的实施方式中,所述增量文件包括第一目标文件,所述第一目标文件中存储有所述目标应用程序的签名文件的本地存储路径,所述第三工程文件中的第二目标文件与所述第一目标文件相对应,且所述第二目标文件中存储有所述签名文件的远端存储路径;
所述增量接收模块还包括合并子模块,用于:
接收所述本地主机发送的所述增量文件之后,基于所述第三工程文件和所述增量文件执行编译任务之前,还包括:
将所述第一目标文件中的所述签名文件的本地存储路径去除,并将所述第二目标文件中的所述签名文件的远端存储路径合并至所述第一目标文件;
将所述第二目标文件替换为合并后的第一目标文件。
在一种可能的实施方式中,所述第一工程文件包括源代码文件和资源文件,所述编译模块还用于:
通过编译工具将所述源代码文件转换成目标可执行文件,以及将所述资源文件转换成已编译资源;
将所述目标可执行文件和所述已编译资源合并成安装包,并采用签名文件对所述安装包进行签名,得到所述目标应用程序的目标安装包。
在一种可能的实施方式中,所述装置还包括目录建立模块,用于:
根据所述本地主机发送的用户名,建立用户名目录;其中,所述用户名下存放的是所述本地主机发送的文件。
第五方面,本公开实施例还提供了一种电子设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器实现第一方面或者第二方面任一种应用程序的构建方法的步骤。
第六方面,本公开实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现第一方面或者第二方面任一种应用程序的构建方法的步骤。
本公开实施例提供的应用程序的构建方法至少具有如下有益效果:
根据本公开实施例提供的方案,本地主机将目标应用程序的第一工程文件发送给远端主机,以使远端主机基于第一工程文件执行编译任务,获得目标应用程序的目标安装包,然后接收远端主机发送的目标安装包。这样,通过将应用程序工程文件的编译任务转移到远端主机执行,可以解放本地主机的CPU,从而避免在本地主机进行工程文件开发的同时,还执行工程文件的编译任务,使得本地主机的内存开销大且负荷重,导致应用程序的构建效率和构建性能较低的情况。因此,本公开实施例可以提高应用程序的构建效率和构建性能。
本公开的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种应用程序的构建方法的应用场景示意图;
图2为本公开实施例提供的一种应用程序的构建方法的信令交互图;
图3为本公开实施例提供的一种远程编译的配置信息的示意图;
图4为本公开实施例提供的另一种应用程序的构建方法的信令交互图;
图5为本公开实施例提供的一种应用程序的构建方法的流程图;
图6为本公开实施例提供的另一种应用程序的构建方法的流程图;
图7为本公开实施例提供的另一种应用程序的构建方法的流程图;
图8为本公开实施例提供的一种应用程序的构建装置的示意图;
图9为本公开实施例提供的另一种应用程序的构建装置的示意图;
图10为本公开实施例提供的另一种应用程序的构建装置的示意图;
图11为本公开实施例提供的另一种应用程序的构建装置的示意图;
图12为本公开实施例提供的电子设备的结构示意图。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,显然,所描述的实施例仅仅是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
下面对本公开实施例中涉及的部分名词进行解释。
Gradle工具:一种自动构建工具,该工具可以作为开源软件使用,用于构建不同类型的软件,构建软件的过程可以包括编译源代码、生成软件安装包等。
安全外壳协议(Secure Shell,SSH):一种基于Shell的安全网络传输协议,是建立在应用层基础上的安全协议。SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。
需要说明的是,本公开的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面参考本公开的若干代表性实施方式,详细阐释本申请的原理和精神。
目前,开发人员在开发主机中完成应用程序的开发后,还需要在开发主机中对开发的工程文件进行构建,以执行工程文件的编译任务,最终获得应用程序的安装包。由于开发主机的CPU资源有限,而应用程序的工程文件通常比较庞大,使得工程文件的构建需要庞大的内存开销,且处理器的负荷也比较重,导致应用程序的构建效率和构建性能较低。
有鉴于此,本公开实施例提供一种应用程序的构建方法、装置、设备和介质,本地主机将目标应用程序的第一工程文件发送给远端主机,以使远端主机基于第一工程文件执行编译任务,获得目标应用程序的目标安装包,然后接收远端主机发送的目标安装包。这样,可以提高应用程序的构建效率和构建性能。
下面结合附图对本公开实施例的应用场景进行介绍。
参考图1,其为本公开实施例所提供的应用程序的构建方法的应用场景示意图。该应用场景包括本地主机11和远端主机12。其中,本地主机11和远端主机12可以通过通信网络连接,以进行数据传输等。本地主机11和远端主机12均包括但不限于桌面计算机、移动电脑、平板电脑等电子设备。
应用程序的开发人员可以在本地主机11中,进行目标应用程序的开发,包括编写目标应用程序的源代码,以生成该目标应用程序的工程文件。在开发完成后,可以通过本地主机11将目标应用程序的工程文件发送给远端主机12,由远端主机12执行该工程文件的编译任务,以生成目标应用程序的安装包,然后将该安装包返回给本地主机11。进一步地,本地主机11可以将该安装包安装至终端设备。
下面结合图1的应用场景,来描述根据本公开示例性实施方式的应用程序的构建方法。上述应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的任何场景。
参考图2,本公开实施例提供的一种应用程序的构建方法的信令交互图,由本地主机和远端主机配合执行,本地主机和远端主机之间可以通过通信网络连接,以进行数据传输。该应用程序的构建方法可以包括以下步骤:
步骤S201,本地主机将目标应用程序的第一工程文件发送给远端主机。
其中,目标应用程序可以是各种应用软件,例如,社交类应用软件、即时通信类应用软件、浏览器类应用软件、游戏应用软件等,在此不作限定。
当目标应用程序开发完成后,本地主机可以获得第一工程文件,然后与远端主机建立连接后,将第一工程文件发送给远端主机。其中,第一工程文件可以包括目标应用程序开发过程中的各种文件,例如源代码文件、资源文件、Build配置文件等。
步骤S202,远端主机执行第一工程文件的编译任务后,获得目标应用程序的目标安装包。
该步骤中,远端主机可以预先安装项目构建工具,例如Gradle工具等,通过项目构建工具中可以执行第一工程文件的编译任务,然后获得目标应用程序的目标安装包。例如,远端主机可以基于Gradle工具,执行Gradle命令,即可对第一工程文件执行编译任务。
在一种可能的实施方式中,第一工程文件包括源代码文件和资源文件,步骤S202可以包括如下步骤:
1)通过编译工具将源代码文件转换成目标可执行文件,以及将资源文件转换成已编译资源。
其中,编译工具可以是上述项目构建工具中用于编译的工具,目标可执行文件可以是虚拟机可执行(Dalvik Executable,DEX)文件。资源文件可以是开发目标应用程序过程中,得到的源代码以外的资源,例如图片、菜单、工具栏等。
2)将目标可执行文件和已编译资源合并成安装包,并采用签名文件对安装包进行签名,得到目标应用程序的目标安装包。
该步骤中,可以采用打包工具将目标可执行文件和已编译资源合并成安装包。签名文件可以理解为标识信息,采用签名文件对安装包进行签名,可以便于后续对已安装的安装包进行版本更新,同时防止已安装的安装包被恶意的第三方替换或覆盖。
步骤S203,远端主机将目标安装包发送给本地主机。
本公开实施例中,远端主机在执行第一工程文件的编译任务过程中,可以获得编译的中间文件,最终获得目标安装包。为了提高数据传输效率,远端主机可以只将目标安装包发送给本地主机,而不需要将编译的中间文件发送给本地主机。
本地主机在获取到目标安装包后,可以通过应用程序开发工具中的相应组件实现指定的功能。由于应用程序开发工具中的一些组件的实施,并不依赖于编译的中间文件,因此,远端主机只将编译后的目标安装包发送给本地主机,并不影响本地主机使用应用程序开发工具中的相应组件。例如,应用程序开发工具为Android Studio,其Apply Changes组件不依赖于编译的中间产物,Apply Changes组件用于找出编译生成的安装包和已经安装到终端设备中的安装包的差异信息,找出差异信息后,可以将差异信息发送到终端设备上执行差异合并,即将差异信息合并至终端设备中的安装包中,以便于对安装至终端设备中的安装包进行修改或更新。
需要说明的是,根据实际需求,远端主机也可以将编译的中间文件发送给本地主机,本公开实施例对此不作限定。
进一步地,本地主机在接收到远端主机发送的目标安装包之后,还可以将目标安装包安装至终端设备。其中,终端设备可以包括但不限于个人计算机、手机、平板电脑、笔记本、电子书阅读器、智能家电等电子设备。
本公开实施例中,通过将目标应用程序的第一工程文件的编译任务,转移到远端主机执行,可以解放本地主机的CPU,从而避免在本地主机进行工程文件开发的同时,还执行工程文件的编译任务,使得本地主机的内存开销大且负荷重,导致应用程序的构建效率和构建性能较低的情况。因此,本公开实施例可以提高应用程序的构建效率和构建性能。
在一些实施例中,在执行步骤S201之前,本地主机还可以执行如下步骤:
响应于远程编译指令,向远端主机发送连接请求。
在一种可能的实施方式中,本地主机可以执行远程编译的配置信息,以向远端主机发送连接请求;其中,远程编译的配置信息可以基于Configuration组件预先配置,且可以保存在第一工程文件中。
示例性的,如图3所示,第一工程文件中的runConfigurations文件保存了远程编译的配置信息,执行远程编译的配置信息,即可以向远端主机发送连接请求。
上述Configuration组件是Android Studio中的配置组件,通过Configuration组件来配置远程编译的配置信息,可以实现一键远程构建,即开发人员在本地主机中一键触发远程编译指令后,本地主机开始执行远程编译的配置信息,以与远端主机建立连接,进而可以执行上述步骤S201至步骤S203,并可以将得到的目标安装包安装至终端设备。
可选地,本地主机可以通过SSH与远端主机建立连接,远端主机可以预先开启SSH服务。此时,执行远程编译的配置信息,可以包括如下步骤:
a、获取工程文件中的安全外壳协议SSH配置信息以及密钥文件;其中,SSH配置信息包括远端主机的设备信息,密钥文件对应的解密密钥存储在远端主机中。
该步骤中,远端主机的设备信息可以包括互联网协议(Internet Protocol,IP)地址信息、主机名称等信息。密钥文件可以是通过加密密钥对指定信息进行加密后的文件,例如指定信息可以是远端主机的主机名称等。其中,加密密钥和解密密钥用于SSH传输的认证,二者可以是对称的,也可以是非对称的,本公开实施例对此不作限定。
示例性的,加密密钥和解密密钥为非对称的,本地主机可以预先生成配对的密钥,其中包括公钥和私钥,将公钥发送给远端主机,由远端主机存储公钥,将私钥储存在本地主机的第一工程文件中。在步骤a中,可以将保存在第一工程文件中的私钥拷贝到本地,并将SSH配置信息也拷贝到本地。
b、基于SSH配置信息,通过SSH命令向远端主机发送携带密钥文件的连接请求。
进一步地,远端主机在接收到本地主机发送的连接请求后,可以对连接请求进行认证;若连接请求认证通过,则与本地主机建立连接。
在一种可能的实施方式中,由上述可知,连接请求可以是本地主机通过SSH命令发送的,且携带有密钥文件;此时,远端主机接收对连接请求进行认证,可以包括如下步骤:
A、通过SSH进程接收本地主机发送的连接请求。
B、通过预先存储的解密密钥,对密钥文件进行解密。
其中,解密密钥可以是本地主机预先发送给远端主机,然后远端主机对解密密钥进行存储。
C、若解密成功,则连接请求认证通过。
例如,密钥文件是本地主机采用加密秘钥对远端主机的主机名称进行加密后得到的,如果远端主机采用解密密钥对密钥文件成功解密,获得远端主机的主机名称,则连接请求认证通过;否则,连接请求认证不通过。
本公开实施例中,本地主机采用SSH,通过密钥文件与远端主机进行连接认证,不需要开发人员输入用户名和密码等进行连接认证,实现简单且方便。并且,在多人协同开发场景下,多个本地主机需要同时与远端主机连接,此时,多个开发人员不需要在各自的本地主机中,输入各自的用户名和密码等进行连接认证,给开发人员提供方便,并且使得多个本地主机可以快速与远端主机建立连接。
在一些实施例中,远端主机可以与多个本地主机进行连接,为了实现协作开发,本地主机还可以将远程编译的配置信息发送给其他本地主机,以使其他本地主机与远端主机建立连接。
为了实现远程编译的配置信息的版本管理,本地主机还可以通过版本管理组件对远程编译的配置信息进行管理。
本公开上述实施例中,步骤S201至步骤203,可以是在目标应用程序首次构建的场景下执行的,考虑到本地主机在获得目标应用程序的目标安装包之后,在后续维护过程中,可能会对目标应用程序的第一工程文件进行更新,更新后的工程文件与第一工程文件相比,会产生差异,因此,本地主机需要将目标应用程序更新后的工程文件,同步至远端主机。
本地主机在将更新后的工程文件同步至远端主机时,为了提高传输效率,并且节约传输资源,可以只同步增量文件,即本地主机中更新后的工程文件,与远端主机当前存储的工程文件的差异文件。
在一些实施例中,参照图4所示,本地主机和远端主机可以在增量同步场景下,分别执行如下步骤:
步骤S401,本地主机向远端主机发送同步请求。
步骤S402,远端主机获取当前存储的第二工程文件的文件信息;其中,第二工程文件与第一工程文件相同,或者第二工程文件是基于第一工程文件确定的。
由于远端主机在首次接收到本地主机发送的第一工程文件之后,可能对第一工程文件进行修改,也可能不修改,因此,远端主机当前存储的第二工程文件可能与第一工程文件相同,也可能不同。
步骤S403,远端主机将第二工程文件的文件信息发送给本地主机。
在一种可能的实施方式中,第二工程文件的文件信息可以包括第二工程文件的各个数据块的第一校验信息。其中,各个数据块的第一校验信息可以根据预设方式生成。
示例性的,远端主机可以将第二工程文件划分为各个大小固定的数据块,例如,每个数据块的大小为500-1000字节,并对各个数据块进行编号,同时记录各个数据块的起始偏移地址以及数据块长度等。
远端主机对第二工程文件的每个数据块,根据该数据块内容计算校验码信息,例如,校验码信息包括两个校验码:32位的弱滚动校验码(rolling checksum)和128位的MD5强校验码。然后,将第二工程文件计算出的所有rolling checksum和MD5强校验码跟随在对应数据块的编号后形成校验码集合,得到各个数据块的第一校验信息。
步骤S404,本地主机根据第二工程文件的文件信息,将需要同步的第三工程文件与第二工程文件进行比对,获得增量文件;其中,第三工程文件是对第一工程文件更新后得到的。
在一种可能的实施方式中,当第二工程文件的文件信息包括各个数据块的第一校验信息时,本地主机可以通过如下方式获得增量文件:
针对第三工程文件中的每个目标数据块,获取目标数据块的第二校验信息,并从第二工程文件的各个数据块的第一校验信息中,匹配第二校验信息,若未匹配到第二校验信息,则将目标数据块作为增量文件中的数据块。
示例性的,各个数据块的第一校验信息以上述校验码集合为例,即每个数据块包括两个校验码rolling checksum和MD5强校验码。本地主机可以将上述校验码集合中的每个rolling checksum计算16位长度的哈希值,并将每216个哈希值按照哈希顺序放入哈希表中,哈希表中的每个哈希条目都指向校验码集合中它所对应的数据块的编号,然后对校验码集合根据哈希值进行排序,这样,排序后的校验码集合中的校验码的顺序和哈希表中的顺序相对应。
进一步地,本地主机针对第三工程文件中的每个目标数据块,可以执行如下步骤:
1、取第三工程文件中的第一个目标数据块,例如,512个字节长度,计算第一个目标数据块的rolling checksum,并将计算得到的rolling checksum计算16位长度的哈希值,然后将计算得到的目标哈希值,从上述哈希表中进行匹配。
2、如果从上述哈希表中匹配到了目标哈希值,说明在第二工程文件中有潜在相同的数据块,取哈希表中与第一个目标数据块对应的数据块的第一MD5强校验码,进一步地,计算第一个目标数据块的第二MD5强校验码,比较第一MD5强校验码和第二MD5强校验码,如果二者相同,说明第一MD5强校验码对应的数据块与第一个目标数据块相同;如果二者不相同,说明第一MD5强校验码对应的数据块与第一个目标数据块不相同,将第一个目标数据块作为增量文件中的数据块。
3、如果从上述哈希表中未匹配到目标哈希值,则将第一个目标数据块作为增量文件中的数据块。并且,不需要再比较MD5强校验码。因此,只要相应的目标数据块的rollingchecksum和MD5强校验码中有一个在第二工程文件的哈希表中找不到匹配项,则将相应的目标数据块作为增量文件中的数据块。
步骤S404,本地主机将增量文件发送给远端主机。
步骤S405,远端主机基于第二工程文件和增量文件执行编译任务,获得目标应用程序的更新安装包。
该步骤与本公开上述实施例中的步骤S202的实施过程类似,在此不再赘述。
步骤S406,远端主机将更新安装包发送给本地主机。
本公开实施例中,本地主机不仅可以在目标应用程序首次构建(非增量构建)时,将第一工程文件发送给远端主机,由远端主机生成目标应用程序的目标安装包;还可以在增量构建时,将增量文件同步至远端主机,由远端主机生成更新安装包。在非增量构建场景和增量构建场景,都可以提升目标应用程序的构建效率和构建性能。并且,除了首次同步文件有一定时间折损外,增量同步场景下,文件同步的时间可以忽略不计。
在一些实施例中,上述增量文件可以包括第一目标文件,第一目标文件中存储有目标应用程序的签名文件的本地存储路径,第三工程文件中的第二目标文件与第一目标文件相对应,且第二目标文件中存储有签名文件的远端存储路径。
其中,本地存储路径是签名文件在本地主机中的存储路径,例如本地主机的C盘中的A文件夹;远端存储路径是签名文件在远端主机中的存储路径,例如远端主机的D盘中的B文件夹。第一目标文件中除了存储签名文件的本地存储路径外,还可以存储第一配置信息。同样地,第二目标文件中除了存储签名文件的远端存储路径外,也可以存储第二配置信息。
远端主机在接收本地主机发送的增量文件之后,基于第三工程文件和增量文件执行编译任务之前,还可以执行如下步骤:
I、将第一目标文件中的签名文件的本地存储路径去除,并将第二目标文件中的签名文件的远端存储路径合并至第一目标文件。
II、将第二目标文件替换为合并后的第一目标文件。
其中,签名文件即上述实施例中用于对安装包进行签名的签名文件。
示例性的,签名文件的名称为KeyStore,在生成目标安装包时依赖KeyStore,它是目标安装包的唯一标识信息,属于涉及目标安装包安全的信息。在本地主机中,KeyStore的本地绝对路径保存在本地gradle.properties文件(即上述第一目标文件)中,在远端主机中,KeyStore的远端绝对路径保存在远端gradle.properties文件(即上述第二目标文件)中,本地gradle.properties文件为增量文件。
当触发远程编译时,本地主机需要将本地gradle.properties文件同步到远端主机,远端主机在接收到本地主机发送的本地gradle.properties文件时,只同步本地gradle.properties文件中的配置信息,而不同步KeyStore的本地绝对路径,例如,远端主机可以将本地gradle.properties文件中的KeyStore的本地绝对路径删除,将本地gradle.properties文件中的配置信息与远端gradle.properties文件中的配置信息合并。
这样,由于远端主机保留了远端gradle.properties文件中的KeyStore的远端绝对路径,可以避免在生成更新安装包时,产生KeyStore无法找到的问题。
在一些实施例中,上述增量文件中可能包括目标格式的文件,该目标格式用于表征目标应用程序的版本信息,远端主机在编译时不依赖该目标格式的文件,因此,为了节约传输资源并提高传输效率,本地主机可以不将目标格式的文件同步至远端主机。
本地主机在向远端主机发送同步请求之前,还可以将第三工程文件中的目标格式的文件,存储至本地主机对应的服务器中,并将第二工程文件中的目标格式的文件去除。
示例性的,目标格式为.git,远端主机在编译时不依赖.git文件,考虑到.git文件的变更频率高,且体积占比较大,因此,在同步时忽略.git文件的传输,可以大大节约传输资源并提高传输效率。
在一些实施例中,远端主机可以同时连接多个本地主机,为了区分不同本地主机的工程文件,本地主机在将目标应用程序的第一工程文件发送给远端主机之前,还可以将本地主机的用户名发送给远端主机,以使远端主机根据用户名建立用户名目录;其中,用户名目录下存放的是本地主机发送的文件。
进一步地,远端主机在接收本地主机发送的目标应用程序的第一工程文件之前,还可以根据本地主机发送的用户名,建立用户名目录;其中,用户名下存放的是本地主机发送的文件。
基于本公开上述实施例,下面对本地主机侧的应用程序的构建方法进行介绍。
在一些实施例中,本公开实施例提供了一种应用程序的构建方法,可以应用于本地主机,如图5所示,该应用程序的构建方法包括以下步骤:
步骤S501,本地主机将目标应用程序的第一工程文件发送给远端主机,以使远端主机基于第一工程文件执行编译任务,获得目标应用程序的目标安装包;
步骤S502,本地主机接收远端主机发送的目标安装包。
在一些实施例中,如图6所示,本地主机在执行步骤S501之前,还可以执行如下步骤:
步骤S500,响应于远程编译指令,向远端主机发送连接请求,以使远端主机对连接请求认证通过后,与本地主机建立连接。
在一种可能的实施方式中,上述步骤S500可以通过如下步骤实现:
执行远程编译的配置信息,以向远端主机发送连接请求;其中,远程编译的配置信息基于Configuration组件预先配置,且保存在第一工程文件中。
可选地,上述执行远程编译的配置信息,可以包括如下步骤:
获取工程文件中的安全外壳协议SSH配置信息以及密钥文件;其中,SSH配置信息包括远端主机的设备信息,密钥文件对应的解密密钥存储在远端主机中。
基于SSH配置信息,通过SSH命令向远端主机发送携带密钥文件的连接请求,以使远端主机通过解密密钥对密钥文件进行解密,若解密成功,则连接请求认证通过。
在一种可能的实施方式中,本地主机还可以执行如下步骤:
将远程编译的配置信息发送给其他本地主机,以使其他本地主机与远端主机建立连接;和/或
通过版本管理组件对远程编译的配置信息进行管理。
在一些实施例中,本地主机还可以执行如下步骤:
向远端主机发送同步请求,以使远端主机返回当前存储的目标应用程序的第二工程文件的文件信息;其中,第二工程文件与第一工程文件相同,或者第二工程文件是基于第一工程文件确定的;
根据第二工程文件的文件信息,将需要同步的第三工程文件与第二工程文件进行比对,获得增量文件;其中,第三工程文件是对第一工程文件更新后得到的;
将增量文件发送给远端主机,以使远端主机基于第二工程文件和增量文件执行编译任务,获得目标应用程序的更新安装包。
在一种可能的实施方式中,第二工程文件的文件信息包括各个数据块的第一校验信息;
根据第二工程文件的文件信息,将需要同步的第三工程文件与第二工程文件进行比对,获得增量文件,可以包括如下步骤:
针对第三工程文件中的每个目标数据块,获取目标数据块的第二校验信息,并从第二工程文件的各个数据块的第一校验信息中,匹配第二校验信息,若未匹配到第二校验信息,则将目标数据块作为增量文件中的数据块。
在一种可能的实施方式中,本地主机向远端主机发送同步请求之前,还可以执行如下步骤:
将第三工程文件中的目标格式的文件,存储至本地主机对应的服务器中,并将第二工程文件中的目标格式的文件去除;其中,目标格式用于表征目标应用程序的版本信息。
在一种可能的实施方式中,本地主机将目标应用程序的第一工程文件发送给远端主机之前,还可以执行如下步骤:
将本地主机的用户名发送给远端主机,以使远端主机根据用户名建立用户名目录;其中,用户名目录下存放的是本地主机发送的文件。
基于本公开上述实施例,下面对远端主机侧的应用程序的构建方法进行介绍。
在一些实施例中,本公开实施例还提供了一种应用程序的构建方法,可以应用于远端主机,如图7所示,该应用程序的构建方法可以包括如下步骤:
步骤S701,远端主机接收本地主机发送的目标应用程序的第一工程文件;
步骤S702,远端主机执行第一工程文件的编译任务后,获得目标应用程序的目标安装包;
步骤S703,远端主机将目标安装包发送给本地主机。
在一种可能的实施方式中,远端主机在执行步骤S701之前,还可以执行如下步骤:
接收本地主机发送的连接请求,并对连接请求进行认证;
若连接请求认证通过,则与本地主机建立连接。
在一种可能的实施方式中,连接请求是本地主机通过SSH命令发送的,且携带有密钥文件;
接收本地主机发送的连接请求,并对连接请求进行认证,可以包括如下步骤:
通过SSH进程接收本地主机发送的连接请求;
通过预先存储的解密密钥,对密钥文件进行解密;
若解密成功,则连接请求认证通过。
在一种可能的实施方式中,远端主机还可以执行如下步骤:
接收本地主机发送的同步请求后,获取当前存储的第二工程文件的文件信息;其中,第二工程文件与第一工程文件相同,或者第二工程文件是基于第一工程文件确定的;
将第二工程文件的文件信息发送给本地主机,以使本地主机根据第二工程文件的文件信息,将需要同步的第三工程文件与第二工程文件进行比对,获得增量文件;其中,第三工程文件是对第一工程文件更新后得到的;
接收本地主机发送的增量文件,并基于第三工程文件和增量文件执行编译任务,获得目标应用程序的更新安装包。
在一种可能的实施方式中,将第二工程文件的文件信息发送给本地主机,以使本地主机根据第二工程文件的文件信息,将需要同步的第三工程文件与第二工程文件进行比对,获得增量文件,可以包括如下步骤:
将第二工程文件的各个数据块的第一校验信息发送给本地主机,以使本地主机针对第三工程文件中的每个目标数据块,获取目标数据块的第二校验信息,并从各个数据块的第一校验信息中,匹配第二校验信息,若未匹配到第二校验信息,则将目标数据块作为增量文件中的数据块。
在一种可能的实施方式中,增量文件包括第一目标文件,第一目标文件中存储有目标应用程序的签名文件的本地存储路径,第三工程文件中的第二目标文件与第一目标文件相对应,且第二目标文件中存储有签名文件的远端存储路径;
远端主机在接收本地主机发送的增量文件之后,基于第三工程文件和增量文件执行编译任务之前,还可以执行如下步骤:
将第一目标文件中的签名文件的本地存储路径去除,并将第二目标文件中的签名文件的远端存储路径合并至第一目标文件;
将第二目标文件替换为合并后的第一目标文件。
在一种可能的实施方式中,第一工程文件包括源代码文件和资源文件,执行第一工程文件的编译任务后,获得目标应用程序的目标安装包,可以包括如下步骤:
通过编译工具将源代码文件转换成目标可执行文件,以及将资源文件转换成已编译资源;
将目标可执行文件和已编译资源合并成安装包,并采用签名文件对安装包进行签名,得到目标应用程序的目标安装包。
在一种可能的实施方式中,远端主机在接收本地主机发送的目标应用程序的第一工程文件之前,还可以执行如下步骤:
根据本地主机发送的用户名,建立用户名目录;其中,用户名下存放的是本地主机发送的文件。
基于相同的发明构思,本公开实施例还提供了一种应用程序的构建装置,应用于本地主机,该装置解决问题的原理与上述实施例的应用于本地主机的方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。参照图8所示,本公开实施例提供的一种应用程序的构建装置,包括文件发送模块81和安装包接收模块82。
文件发送模块81,用于将目标应用程序的第一工程文件发送给远端主机,以使远端主机基于第一工程文件执行编译任务,获得目标应用程序的目标安装包;
安装包接收模块82,用于接收远端主机发送的目标安装包。
在一种可能的实施方式中,如图9所示,装置还可以包括请求连接模块70,用于:
响应于远程编译指令,向远端主机发送连接请求,以使远端主机对连接请求认证通过后,与本地主机建立连接。
在一种可能的实施方式中,请求连接模块80还可以包括:
执行子模块,用于执行远程编译的配置信息,以向远端主机发送连接请求;其中,远程编译的配置信息基于Configuration组件预先配置,且保存在第一工程文件中。
在一种可能的实施方式中,执行子模块还用于:
获取工程文件中的安全外壳协议SSH配置信息以及密钥文件;其中,SSH配置信息包括远端主机的设备信息,密钥文件对应的解密密钥存储在远端主机中;
基于SSH配置信息,通过SSH命令向远端主机发送携带密钥文件的连接请求,以使远端主机通过解密密钥对密钥文件进行解密,若解密成功,则连接请求认证通过。
在一种可能的实施方式中,装置还可以包括:
配置信息共享模块,用于将远程编译的配置信息发送给其他本地主机,以使其他本地主机与远端主机建立连接;和/或
版本管理模块,用于通过版本管理组件对远程编译的配置信息进行管理。
在一种可能的实施方式中,装置还可以包括:
请求同步模块83,用于向远端主机发送同步请求,以使远端主机返回当前存储的目标应用程序的第二工程文件的文件信息;其中,第二工程文件与第一工程文件相同,或者第二工程文件是基于第一工程文件确定的;
增量获取模块84,根据第二工程文件的文件信息,将需要同步的第三工程文件与第二工程文件进行比对,获得增量文件;其中,第三工程文件是对第一工程文件更新后得到的;
增量发送模块85,用于将增量文件发送给远端主机,以使远端主机基于第二工程文件和增量文件执行编译任务,获得目标应用程序的更新安装包。
在一种可能的实施方式中,第二工程文件的文件信息包括各个数据块的第一校验信息;
增量获取模块84还可以用于:
针对第三工程文件中的每个目标数据块,获取目标数据块的第二校验信息,并从第二工程文件的各个数据块的第一校验信息中,匹配第二校验信息,若未匹配到第二校验信息,则将目标数据块作为增量文件中的数据块。
在一种可能的实施方式中,装置可以还包括存储模块,用于:
将第三工程文件中的目标格式的文件,存储至本地主机对应的服务器中,并将第二工程文件中的目标格式的文件去除;其中,目标格式用于表征目标应用程序的版本信息。
在一种可能的实施方式中,装置还可以包括用户名发送模块,用于:
将本地主机的用户名发送给远端主机,以使远端主机根据用户名建立用户名目录;其中,用户名目录下存放的是本地主机发送的文件。
基于相同的发明构思,本公开实施例还提供了一种应用程序的构建装置,应用于远端主机,该装置解决问题的原理与上述实施例的应用于远端主机的方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。参照图10所示,本公开实施例提供的一种应用程序的构建装置,包括文件接收模块101、编译模块102和安装包发送模块103。
文件接收模块101,用于接收本地主机发送的目标应用程序的第一工程文件;
编译模块102,用于执行第一工程文件的编译任务后,获得目标应用程序的目标安装包;
安装包发送模块103,用于将目标安装包发送给本地主机。
在一种可能的实施方式中,如图11所示,装置还可以包括连接认证模块100,用于
接收本地主机发送的连接请求,并对连接请求进行认证;
若连接请求认证通过,则与本地主机建立连接。
在一种可能的实施方式中,连接请求是本地主机通过SSH命令发送的,且携带有密钥文件;
连接认证模块100还用于:
通过SSH进程接收本地主机发送的连接请求;
通过预先存储的解密密钥,对密钥文件进行解密;
若解密成功,则连接请求认证通过。
在一种可能的实施方式中,装置还可以包括:
信息获取模块104,用于接收本地主机发送的同步请求后,获取当前存储的第二工程文件的文件信息;其中,第二工程文件与第一工程文件相同,或者第二工程文件是基于第一工程文件确定的;
信息发送模块105,用于将第二工程文件的文件信息发送给本地主机,以使本地主机根据第二工程文件的文件信息,将需要同步的第三工程文件与第二工程文件进行比对,获得增量文件;其中,第三工程文件是对第一工程文件更新后得到的;
增量接收模块106,用于接收本地主机发送的增量文件,并基于第三工程文件和增量文件执行编译任务,获得目标应用程序的更新安装包。
在一种可能的实施方式中,信息发送模块105还可以用于:
将第二工程文件的各个数据块的第一校验信息发送给本地主机,以使本地主机针对第三工程文件中的每个目标数据块,获取目标数据块的第二校验信息,并从各个数据块的第一校验信息中,匹配第二校验信息,若未匹配到第二校验信息,则将目标数据块作为增量文件中的数据块。
在一种可能的实施方式中,增量文件包括第一目标文件,第一目标文件中存储有目标应用程序的签名文件的本地存储路径,第三工程文件中的第二目标文件与第一目标文件相对应,且第二目标文件中存储有签名文件的远端存储路径;
增量接收模块106还可以包括合并子模块,用于:
将第一目标文件中的签名文件的本地存储路径去除,并将第二目标文件中的签名文件的远端存储路径合并至第一目标文件;
将第二目标文件替换为合并后的第一目标文件。
在一种可能的实施方式中,第一工程文件包括源代码文件和资源文件,编译模块102还可以用于:
通过编译工具将源代码文件转换成目标可执行文件,以及将资源文件转换成已编译资源;
将目标可执行文件和已编译资源合并成安装包,并采用签名文件对安装包进行签名,得到目标应用程序的目标安装包。
在一种可能的实施方式中,装置还可以包括目录建立模块,用于:
根据本地主机发送的用户名,建立用户名目录;其中,用户名下存放的是本地主机发送的文件。
基于相同的发明构思,本公开实施例还提供了一种电子设备,该电子设备可以是本地主机,也可以是远端主机,其解决问题的原理与上述实施例的方法相似,因此该电子设备的实施可以参见方法的实施,重复之处不再赘述。图11示出了本公开实施例提供的一种电子设备的结构示意图。
参阅图12所示,电子设备可以包括处理器1202和存储器1201。存储器1201向处理器1202提供存储器1201中存储的程序指令和数据。在本公开实施例中,存储器1201可以用于存储本公开实施例中本地主机侧或者远端主机侧的应用程序的构建的程序。
处理器1202通过调用存储器1201存储的程序指令,处理器1202用于执行上述任意方法实施例中的方法,例如图5或者图7所示的实施例提供的一种应用程序的构建方法。
本公开实施例中不限定上述存储器1201和处理器1202之间的具体连接介质。本公开实施例在图12中以存储器1201和处理器1202之间通过总线1203连接,总线1203在图12中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1203可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器可以包括只读存储器(Read-Only Memory,ROM)和随机存取存储器(RandomAccess Memory,RAM),还可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器、网络处理器(NetworkProcessor,NP)等;还可以是数字指令处理器(Digital Signal Processing,DSP)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
本公开实施例还提供了一种计算机存储介质,该计算机可读存储介质内存储有计算机程序,计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行上述本地主机侧或者远端主机侧任意方法实施例中的应用程序的构建方法。
在具体的实施过程中,计算机存储介质可以包括:通用串行总线闪存盘(USB,Universal Serial Bus Flash Drive)、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的存储介质。
在一些可能的实施方式中,本公开提供的应用程序的构建方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的,根据本公开各种示例性实施方式的本地主机侧或者远端主机侧的应用程序的构建方法步骤,例如,计算机设备可以执行如图5所示的步骤S501-步骤S502中的应用程序的构建流程。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种应用程序的构建方法,其特征在于,应用于本地主机,包括:
将目标应用程序的第一工程文件发送给远端主机,以使所述远端主机基于所述第一工程文件执行编译任务,获得所述目标应用程序的目标安装包;
接收所述远端主机发送的所述目标安装包。
2.根据权利要求1所述的方法,其特征在于,所述将目标应用程序的第一工程文件发送给远端主机之前,还包括:
响应于远程编译指令,向所述远端主机发送连接请求,以使所述远端主机对所述连接请求认证通过后,与所述本地主机建立连接。
3.根据权利要求2所述的方法,其特征在于,所述向所述远端主机发送连接请求,包括:
执行远程编译的配置信息,以向所述远端主机发送连接请求;其中,所述远程编译的配置信息基于Configuration组件预先配置,且保存在所述第一工程文件中。
4.根据权利要求3所述的方法,其特征在于,所述执行远程编译的配置信息,包括:
获取所述工程文件中的安全外壳协议SSH配置信息以及密钥文件;其中,所述SSH配置信息包括所述远端主机的设备信息,所述密钥文件对应的解密密钥存储在所述远端主机中;
基于所述SSH配置信息,通过SSH命令向所述远端主机发送携带所述密钥文件的连接请求,以使所述远端主机通过所述解密密钥对所述密钥文件进行解密,若解密成功,则所述连接请求认证通过。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将所述远程编译的配置信息发送给其他本地主机,以使所述其他本地主机与所述远端主机建立连接;和/或
通过版本管理组件对所述远程编译的配置信息进行管理。
6.一种应用程序的构建方法,其特征在于,应用于远端主机,包括:
接收本地主机发送的目标应用程序的第一工程文件;
执行所述第一工程文件的编译任务后,获得所述目标应用程序的目标安装包;
将所述目标安装包发送给所述本地主机。
7.一种应用程序的构建装置,其特征在于,应用于本地主机,包括:
文件发送模块,用于将目标应用程序的第一工程文件发送给远端主机,以使所述远端主机基于所述第一工程文件执行编译任务,获得所述目标应用程序的目标安装包;
安装包接收模块,用于接收所述远端主机发送的所述目标安装包。
8.一种应用程序的构建装置,其特征在于,应用于远端主机,包括:
文件接收模块,用于接收本地主机发送的目标应用程序的第一工程文件;
编译模块,用于执行所述第一工程文件的编译任务后,获得所述目标应用程序的目标安装包;
安装包发送模块,用于将所述目标安装包发送给所述本地主机。
9.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1-5任一项所述方法或者权利要求6所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,其包括程序代码,当所述程序代码在电子设备上运行时,所述程序代码用于使所述电子设备执行权利要求1-5任一项所述方法或者权利要求6所述方法的步骤。
CN202110458724.0A 2021-04-27 2021-04-27 应用程序的构建方法、装置、设备和介质 Pending CN113094051A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110458724.0A CN113094051A (zh) 2021-04-27 2021-04-27 应用程序的构建方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110458724.0A CN113094051A (zh) 2021-04-27 2021-04-27 应用程序的构建方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN113094051A true CN113094051A (zh) 2021-07-09

Family

ID=76680157

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110458724.0A Pending CN113094051A (zh) 2021-04-27 2021-04-27 应用程序的构建方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN113094051A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106020919A (zh) * 2016-05-09 2016-10-12 烽火通信科技股份有限公司 一种多服务器一键编译的实现方法
CN107509187A (zh) * 2017-08-31 2017-12-22 维沃移动通信有限公司 一种应用程序的安装方法、移动终端及服务器
CN109976748A (zh) * 2019-02-28 2019-07-05 南京南瑞继保电气有限公司 一种程序处理方法、终端、服务器及计算机存储介质
CN112540768A (zh) * 2020-12-29 2021-03-23 Oppo广东移动通信有限公司 文件处理方法、装置、服务器、电子设备及存储介质
CN112631622A (zh) * 2020-12-29 2021-04-09 Oppo广东移动通信有限公司 应用安装方法、装置、服务器及计算机可读介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106020919A (zh) * 2016-05-09 2016-10-12 烽火通信科技股份有限公司 一种多服务器一键编译的实现方法
CN107509187A (zh) * 2017-08-31 2017-12-22 维沃移动通信有限公司 一种应用程序的安装方法、移动终端及服务器
CN109976748A (zh) * 2019-02-28 2019-07-05 南京南瑞继保电气有限公司 一种程序处理方法、终端、服务器及计算机存储介质
CN112540768A (zh) * 2020-12-29 2021-03-23 Oppo广东移动通信有限公司 文件处理方法、装置、服务器、电子设备及存储介质
CN112631622A (zh) * 2020-12-29 2021-04-09 Oppo广东移动通信有限公司 应用安装方法、装置、服务器及计算机可读介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WYC: "配置ssh密匙连接远程主机", pages 1 - 2, Retrieved from the Internet <URL:https://blog.csdn.net/qq_28120673/article/details/99982492> *

Similar Documents

Publication Publication Date Title
US11501533B2 (en) Media authentication using distributed ledger
CN107396360B (zh) 区块验证方法及装置
CN111133733B (zh) 用于基于云平台的自动区块链部署的方法和系统
CN108377272B (zh) 一种管理物联网终端的方法及系统
CN109862099B (zh) 一种升级校验方法、装置、终端及系统
CN112287034B (zh) 一种数据同步方法、设备以及计算机可读存储介质
CN111314172B (zh) 基于区块链的数据处理方法、装置、设备及存储介质
CN110570196A (zh) 交易数据处理方法、装置、终端设备以及存储介质
US11496302B2 (en) Securely processing secret values in application configurations
CN112632573B (zh) 智能合约执行方法、装置、系统、存储介质及电子设备
CN111597567B (zh) 数据处理方法、装置、节点设备及存储介质
CN112287033B (zh) 一种数据同步方法、设备以及计算机可读存储介质
CN110445765B (zh) 基于区块链的数据共享方法、终端设备及介质
JP2023525576A (ja) ソフトウェア更新のための認証キーの制御範囲
CN111339551B (zh) 数据的验证方法及相关装置、设备
CN112131041A (zh) 用于管理数据放置的方法、设备和计算机程序产品
CN111147477B (zh) 一种基于区块链网络的验证方法及装置
US12051061B2 (en) Method for operating a distributed database system, distributed database system, and industrial automation system
CN110602051B (zh) 基于共识协议的信息处理方法及相关装置
CN111949996B (zh) 安全私钥的生成方法、加密方法、系统、设备及介质
CN113228555B (zh) 用于统一安全配置管理的方法、系统和装置
CN113094051A (zh) 应用程序的构建方法、装置、设备和介质
CN115129275A (zh) 一种数字文件打印方法、装置、电子设备及存储介质
US12052133B2 (en) Blockchain-based network device management methods and devices
CN109347639B (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