CN112596751A - 应用程序安装包的编译方法、终端、服务器及存储介质 - Google Patents

应用程序安装包的编译方法、终端、服务器及存储介质 Download PDF

Info

Publication number
CN112596751A
CN112596751A CN202011587025.8A CN202011587025A CN112596751A CN 112596751 A CN112596751 A CN 112596751A CN 202011587025 A CN202011587025 A CN 202011587025A CN 112596751 A CN112596751 A CN 112596751A
Authority
CN
China
Prior art keywords
compiling
file
instruction
installation package
compiled
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.)
Granted
Application number
CN202011587025.8A
Other languages
English (en)
Other versions
CN112596751B (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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202011587025.8A priority Critical patent/CN112596751B/zh
Publication of CN112596751A publication Critical patent/CN112596751A/zh
Application granted granted Critical
Publication of CN112596751B publication Critical patent/CN112596751B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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

本申请实施例公开了一种应用程序安装包的编译方法、终端、服务器及存储介质,属于计算机技术领域。该方法包括:接收服务器发送的应用程序安装包和第一编译文件;在硬件平台和操作系统平台中对应用程序安装包进行编译,得到第二编译文件;利用第二编译文件对第一编译文件进行校验,得到校验结果。本申请实施例利用第二编译文件对服务器预编译得到的第一编译文件进行校验,验证服务器端编译结果的准确性,从而进一步验证服务器搭建的编译环境与测试终端是否一致,避免后续终端从服务器处直接获取第一编译文件安装应用程序的过程中出现异常;并且,无需对编译环境进行校验,能够降低编译文件校验的复杂度,提高了校验效率。

Description

应用程序安装包的编译方法、终端、服务器及存储介质
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种应用程序安装包的编译方法、终端、服务器及存储介质。
背景技术
编译是将利用高级语言编写的代码源程序转化为计算机设备能够识别的目标代码的过程。例如,在为终端安装应用程序时,终端需要将下载得到的应用程序安装包进行编译,得到终端操作系统能够识别的机器码文件,才能完成应用程序的安装和运行。
相关技术中,为了提高应用程序的安装效率,降低终端的功耗,将对应用程序安装包的编译过程迁移至服务器进行,终端直接下载服务器编译得到的机器码文件即可完成安装。
然而,终端和服务器以及不同终端之间对应的硬件类型和操作系统不同,其对同一应用程序安装包进行编译的方式以及编译得到的机器码也不同,因此若不能够对服务器的编译结果进行校验,则可能导致终端获取到的机器码不适用于该终端,应用程序安装失败。
发明内容
本申请实施例提供了一种应用程序安装包的编译方法、终端、服务器及存储介质。所述技术方案如下:
一方面,本申请实施例提供了一种应用程序安装包的编译方法,所述方法包括:
接收服务器发送的应用程序安装包和第一编译文件,所述第一编译文件由所述服务器在编译环境中对所述应用程序安装包进行编译得到,所述编译环境基于所述测试终端对应的硬件平台和操作系统平台搭建;
在所述硬件平台和所述操作系统平台中对所述应用程序安装包进行编译,得到第二编译文件;
利用所述第二编译文件对所述第一编译文件进行校验,得到校验结果,所述校验结果用于指示所述第一编译文件通过校验或未通过校验。
另一方面,本申请实施例提供了一种应用程序安装包的编译方法,所述方法包括:
基于测试终端对应的操作系统平台和硬件平台搭建编译环境;
在所述编译环境中对应用程序安装包进行编译,得到第一编译文件;
向所述测试终端发送所述应用程序安装包和所述第一编译文件,所述测试终端用于对所述第一编译文件进行校验,得到校验结果,所述校验结果用于指示所述第一编译文件通过校验或未通过校验。
另一方面,本申请实施例提供了一种应用程序安装包的编译装置,所述装置包括:
第一接收模块,用于接收服务器发送的应用程序安装包和第一编译文件,所述第一编译文件由所述服务器在编译环境中对所述应用程序安装包进行编译得到,所述编译环境基于所述测试终端对应的硬件平台和操作系统平台搭建;
第一编译模块,用于在所述硬件平台和所述操作系统平台中对所述应用程序安装包进行编译,得到第二编译文件;
第一校验模块,用于利用所述第二编译文件对所述第一编译文件进行校验,得到校验结果,所述校验结果用于指示所述第一编译文件通过校验或未通过校验。
另一方面,本申请实施例提供了一种应用程序安装包的编译装置,所述装置包括:
环境搭建模块,用于基于测试终端对应的操作系统平台和硬件平台搭建编译环境;
第二编译模块,用于在所述编译环境中对应用程序安装包进行编译,得到第一编译文件;
第一发送模块,用于向所述测试终端发送所述应用程序安装包和所述第一编译文件,所述测试终端用于对所述第一编译文件进行校验,得到校验结果,所述校验结果用于指示所述第一编译文件通过校验或未通过校验。
另一方面,本申请实施例提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述方面所述的应用程序安装包的编译方法。
另一方面,本申请实施例提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述方面所述的应用程序安装包的编译方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。终端或服务器的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该终端或服务器执行上述方面的各种可选实现方式中提供的应用程序安装包的编译方法。
本申请实施例提供的技术方案的有益效果至少包括:
本申请实施例中,通过在测试终端的硬件平台和操作系统平台中对应用程序安装包进行编译,得到第二编译文件,并利用第二编译文件对服务器预编译得到的第一编译文件进行校验,验证服务器端编译结果的准确性,从而进一步验证服务器基于测试终端的硬件平台和操作系统平台所搭建的编译环境与测试终端是否一致,避免后续终端从服务器处直接获取第一编译文件安装应用程序的过程中出现异常;并且,利用测试终端直接对第一编译文件进行校验,无需对完整的编译环境进行校验,能够满足不同类型编译环境下第一编译文件的校验需求,同时降低编译文件校验的复杂度,提高了校验效率。
附图说明
图1是本申请一个示例性实施例提供的实施环境的示意图;
图2是本申请一个示例性实施例提供的应用程序安装包的编译方法的流程图;
图3是本申请另一个示例性实施例提供的应用程序安装包的编译方法的流程图;
图4是本申请另一个示例性实施例提供的应用程序安装包的编译方法的流程图;
图5是本申请另一个示例性实施例提供的应用程序安装包的编译方法的流程图;
图6是本申请另一个示例性实施例提供的应用程序安装包的编译方法的流程图;
图7是本申请一个示例性实施例提供的应用程序安装包的编译装置的结构框图;
图8是本申请另一个示例性实施例提供的应用程序安装包的编译装置的结构框图;
图9本申请一个示例性实施例提供的终端的结构框图;
图10本申请一个示例性实施例提供的服务器的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
相关技术中,终端安装应用程序时,需要对下载得到的应用程序安装包进行编译,生成终端操作系统能够识别的机器码文件,才能完成应用程序的安装和运行。而终端编译应用程序安装包的过程需要大量的计算和功耗,且占用一定内存,为了提高应用程序的安装效率,降低终端功耗,可以将应用程序安装包的编译过程迁移至服务器进行。即服务器对应用程序安装包进行预编译,并存储编译得到的机器码文件,当终端需要安装应用程序时,直接从服务器处获取机器码文件,终端无需进行编译即可安装应用程序。
然而,服务器与终端的硬件平台和操作系统平台不同,且不同的终端之间硬件平台和操作系统平台也可能不同,因此服务器预编译得到的机器码文件并不一定能够在终端中正确运行,在服务器编译应用程序安装包得到机器码文件后,需要对服务器的编译结果进行校验。
图1示出了本申请一个实施例提供的实施环境的示意图。该实施环境可以包括:服务器110和测试终端120。
服务器110是用于对应用程序安装包进行预编译的设备,服务器110中搭载有测试终端120对应的编译环境。在一种可能的实施方式中,服务器110预先基于测试终端120对应的硬件平台和操作系统平台搭载编译环境,并在编译环境中对应用程序安装包进行编译,得到第一编译文件。服务器110将应用程序安装包和第一编译文件发送至测试终端120,使测试终端120对第一编译文件进行校验。
测试终端120是用于对服务器110的第一编译文件进行校验的终端,具有编译和解析应用程序安装包的功能,测试终端120的设备类型包括:智能手机、平板电脑、电子书阅读器、MP4播放器、膝上型便携计算机和台式计算机中的至少一种。在一种可能的实施方式中,测试终端120接收服务器110发送的第一编译文件和应用程序安装包,并自动执行对第一编译文件的校验流程,首先对应用程序安装包进行编译,利用自身编译得到的第二编译文件,对第一编译文件进行校验,确定第一编译文件是否能够在终端中被运行,用于安装应用程序。校验结束后,将校验结果发送至服务器110。
图1中仅示出了一个终端,在其它的实施方式中,还可能存在更多的终端与服务器110相连,不同的测试终端120中的硬件平台和/或操作系统平台不同,服务器可以同时在多个不同的编译环境中对应用程序安装包进行编译,并将第一编译文件分别发送至对应的测试终端120进行校验。服务器110与测试终端120和其它测试终端通过无线网络或有线网络与服务器110相连。
图2示出了本申请一个示例性实施例提供的应用程序安装包的编译方法的流程图。本实施例以该方法用于图1所示实施环境中的测试终端120为例进行说明,该方法包括如下步骤:
步骤201,接收服务器发送的应用程序安装包和第一编译文件,第一编译文件由服务器在编译环境中对应用程序安装包进行编译得到,编译环境基于测试终端对应的硬件平台和操作系统平台搭建。
其中,应用程序安装包是用于分发以及安装应用程序的中间件,应用程序的代码及相关文件需要被打包为对应操作系统平台和硬件平台所能够识别的文件格式,终端才能够对其进行编译并安装应用程序。应用程序安装包中通常包含应用程序的代码文件、文件资源(resources)、原生文件资源(assets)、证书(certificates)和清单文件(manifestfile)等。
不同类型的操作系统平台所能够识别的应用程序安装包格式不同,例如,对于安卓(Android)操作系统,其对应的应用程序安装包为安卓应用程序包(Androidapplication package,APK)文件;对于苹果移动设备操作系统(iPhone OperationSystem,iOS),其对应的应用程序安装包包括苹果应用程序包(Debian,DEB)文件等。而同一类型的操作系统平台中,由于硬件平台的区别以及操作系统版本的差异,其对同一应用程序安装包的编译方式不同,对应得到的编译文件也不同。
由于终端安装应用程序之前需要对应用程序安装包进行编译,将代码转化为终端所能够识别的编译文件,而编译过程需要大量资源以及功耗,因此采用服务器预编译的方式,使终端直接获取对应用程序安装包进行编译后的文件,可以降低终端功耗,提高应用程序的安装效率。然而服务器与终端的操作系统平台和硬件平台不同,即时服务器预先根据终端的操作系统平台和硬件平台搭建编译环境,其编译得到的文件对于终端也并不一定能够完全正确,可能导致终端无法顺利安装应用程序,因此在将服务器的编译结果发送至终端进行应用安装之前,需要对服务器的编译结果进行校验。
在一种可能的实施方式中,服务器对应用程序安装包进行编译,得到第一编译文件后,自动将第一编译文件和应用程序安装包发送至对应的测试终端,测试终端接收服务器发送的应用程序安装包和第一编译文件,并自动进行后续的校验步骤。其中,第一编译文件是服务器在与测试终端相对应的编译环境中对应用程序安装包进行编译得到的,该编译环境由服务器根据测试终端的硬件平台和操作系统平台搭建得到,即应用程序安装包、硬件平台、操作系统平台以及测试终端之间存在对应关系,开发人员预先确定应用程序安装包所支持的操作系统平台,并获取设置有该操作系统平台的终端及对应的硬件平台,从而准备测试终端并将测试终端与服务器进行连接。
可选的,测试终端中安装有自动化校验应用程序,测试终端通过运行该自动化校验应用程序,完成对第一编译文件的校验;或者,测试终端中搭载有自动化测试框架,测试终端利用自动化测试框架,运行预先存储的自动化测试脚本,完成对第一编译文件的自动化校验;或者,第一编译文件的校验过程需要开发人员进行干预,手动控制对第一编译文件的接收和编译。本申请实施例对此不作限定。
步骤202,在硬件平台和操作系统平台中对应用程序安装包进行编译,得到第二编译文件。
为了验证第一编译文件是否正确,有效的途径之一是利用测试终端自身的硬件平台和操作系统对应用程序安装包进行编译得到的编译结果,对第一编译文件进行对比校验。在一种可能的实施方式中,测试终端成功接收应用程序安装包和第一编译文件后,首先利用自身的硬件平台和操作系统平台对应用程序安装包进行编译,得到第二编译文件。
示意性的,测试终端中预先安装并运行有自动化校验应用程序,测试终端通过该自动化校验应用程序接受应用程序安装包和第一编译文件,接收完成后,自动化应用程序调用测试终端的编译功能,对应用程序安装包进行编译,得到第二编译文件。
步骤203,利用第二编译文件对第一编译文件进行校验,得到校验结果,校验结果用于指示第一编译文件通过校验或未通过校验。
测试终端对应用程序安装包编译完成后,利用得到的第二编译文件对第一编译文件进行校验,判断第一编译文件是否能够在测试终端中正确运行,用于安装对应的应用程序。
示意性的,测试终端对于第一编译文件和第二编译文件中需要保持一致的预设文件内容进行对比,若预设文件内容相同,则确定第一编译文件通过校验,若预设文件内容不同,则确定第一编译文件未通过校验,并将校验结果反馈至服务器,使服务器根据接收到的校验结果对编译环境进行修正,或对通过校验的第一编译文件进行存储。
综上所述,本申请实施例中,通过在测试终端的硬件平台和操作系统平台中对应用程序安装包进行编译,得到第二编译文件,并利用第二编译文件对服务器预编译得到的第一编译文件进行校验,验证服务器端编译结果的准确性,从而进一步验证服务器基于测试终端的硬件平台和操作系统平台所搭建的编译环境与测试终端是否一致,避免后续终端从服务器处直接获取第一编译文件安装应用程序的过程中出现异常;并且,利用测试终端直接对第一编译文件进行校验,无需对完整的编译环境进行校验,能够满足不同类型编译环境下第一编译文件的校验需求,同时降低编译文件校验的复杂度,提高了校验效率。
在对应用程序安装包的编译过程中,无论由服务器进行编译还是由终端进行编译,都需要先对应用程序安装包进行解析,得到编译指令,再利用编译器执行编译指令,得到服务器或终端所能够识别的机器码文件。为了确保服务器编译结果的准确性,测试设备对服务器解析应用程序安装包得到的编译指令,以及执行编译指令所生成的机器码文件均进行校验。在一种可能的实施方式中,第一编译文件包括第一编译指令和第一机器码文件,第一编译指令是服务器对应用程序安装包进行编译时采用的编译指令,第一机器码文件由服务器执行第一编译指令对应用程序安装包进行编译得到。测试终端首先对第一编译指令进行校验,再基于指令校验结果对第一机器码文件进行校验。测试设备在对第一机器码文件进行校验之前,先对第一编译指令进行校验,若第一编译指令未通过校验,则可以直接确定第一编译文件未通过校验,无需对第一机器码文件进行校验,并且能够是服务器及时获取存在错误的第一编译指令,不需要根据第一机器码文件的校验结果推测异常的第一编译指令,能够提高校验效率以及后续对服务器编译环境进行修正的效率。
图3示出了本申请另一个示例性实施例提供的应用程序安装包的编译方法的流程图。本实施例以该方法用于图1所示实施环境中的测试终端120为例进行说明,该方法包括如下步骤:
步骤301,接收服务器发送的应用程序安装包和第一编译文件,第一编译文件由服务器在编译环境中对应用程序安装包进行编译得到,编译环境基于测试终端对应的硬件平台和操作系统平台搭建。
步骤301的具体实施方式可以参考上述步骤201,本申请实施例在此不再赘述。
步骤302,在硬件平台和操作系统平台中对应用程序安装包进行编译并解析,得到第二编译指令,第二编译指令是测试终端对应用程序安装包进行编译时采用的编译指令。
测试终端对第一编译指令进行校验,需要以自身的硬件平台和操作系统平台对应用程序安装包进行编译时的编译指令为基准,因此测试终端获取到应用程序安装包和第一编译文件后,首先对应用程序安装包进行编译并解析,获取第二编译指令,从而利用第二编译指令对第一编译指令进行校验。
测试终端的操作系统平台(例如安卓系统平台)中通常未设置有直接获取编译指令的接口,即测试终端无法在对应用程序安装包的编译过程中直接获取到第二编译指令,因此需要根据编译结果进行解析,在一种可能的实施方式中,步骤302包括如下步骤:
步骤302a,在硬件平台和操作系统平台中对应用程序安装包进行编译,生成第三机器码文件。
测试终端无法直接获取对应用程序安装包解析得到的第二编译指令,因此需要借助其它工具,先对应用程序安装包进行编译,利用生成的第三机器码文件获取第二编译指令。即第二编译指令是测试终端对应用程序安装包进行编译时采用的编译指令。
示意性的,当测试终端对应的操作系统平台为安卓操作系统时,应用程序安装包为APK文件,测试终端对APK文件进行编译后,生成包含可执行文件(Optimized dexterity,ODEX)、VDEX等的第三机器码文件,如base.odex和base.vdex。例如,测试终端对APK文件执行默认安装命令pm install<apk路径>,或者调用打包安装程序(Package installer)的接口,完成对APK文件的编译,生成第三机器码文件。
步骤302b,执行机器码读取指令,对第三机器码文件中的可运行文件进行解析,得到第二编译指令。
测试终端编译应用程序安装包,得到第三机器码文件后,借助操作系统平台所能够提供的工具,即机器码读取指令,对第三机器码文件解析得到第二编译指令。
示意性的,测试终端中的操作系统平台为安卓操作系统,测试终端借助安卓操作系统所提供的机器码读取(oatdump)指令,解析上述编译过程中生成的base.odex文件,其具体的解析命令如下:
oatdump--oat-file=base.odex--header-only//读取base.odex文件
步骤303,利用第二编译指令对第一编译指令进行校验,得到指令校验结果,指令校验结果用于指示第一编译指令通过校验或未通过校验。
测试终端对第一编译指令和第二编译指令中需要保持一致的部分内容进行对比,若第一编译指令和第二编译指令中该部分内容相同,则确定第一编译指令通过校验,若该部分内容不同,则确定第一编译指令未通过校验。
在一种可能的实施方式中,步骤303包括如下步骤:
步骤303a,获取第一编译指令中的第一校验参数,以及第二编译指令中的第二校验参数,其中,校验参数包括编译指令中除文件描述符、文件路径以及执行线程数之外的参数。
第一编译指令是由服务器对应用程序安装包进行编译得到的,即使服务器预先根据测试终端的操作系统平台和硬件平台搭载编译环境,但服务器与终端对同一应用程序安装包的编译命令仍然存在不可避免的差异,例如编译命令的顺序不同,或者调用文件时编译命令所使用的参数不同(例如在调用文件时,服务器使用文件路径而终端使用文件描述符,以及二者进行编译时的执行线程数可能不同),但这些差异不会对后续的机器码文件产生影响,因此测试终端在对第一编译指令进行校验的过程中,屏蔽对上述差异的校验,获取第一编译指令中的第一校验参数,以及第二编译指令中的第二校验参数,对第一校验参数和第二校验参数进行比较。其中,校验参数包括编译指令中除文件描述符、文件路径以及执行线程数之外的参数。
示意性的,服务器与测试终端在编译过程中调用或输出文件,以及指定任务执行线程等编译命令中的参数不同,如表1所示:
Figure BDA0002867478780000081
表1
步骤303b,响应于第一校验参数与第二校验参数相同,确定第一编译指令通过校验。
第一校验参数与第二校验参数相同,即第一编译指令与第二编译指令对应用程序安装包的解析逻辑相同,测试设备确定第一编译指令能够在测试终端中被执行以完成对应用程序的安装,从而确定第一编译指令通过校验。
在一种可能的实施方式中,若第一校验参数与第二校验参数相同,则确定第一编译指令通过校验;若第一校验参数与第二校验参数不相同,则确定第一编译指令未通过校验。
步骤304,在硬件平台和操作系统平台中执行第一编译指令,对应用程序安装包进行编译,得到第二机器码文件。
测试终端完成对第一编译指令的校验之后,需要继续对第一机器码文件进行校验,其校验方式是以测试终端自身编译应用程序安装包得到的第二机器码为基准,利用第二机器码对第一机器码进行校验。为了验证服务器在编译环境中生成的第一机器码文件是否能够在相应的终端中被运行,测试终端需要执行与服务器相同的编译指令,从而检验测试终端与服务器对同一编译指令的执行结果是否相同。
在一种可能的实施方式中,步骤304包括步骤304a:
步骤304a,响应于指令校验结果指示第一编译指令通过校验,在硬件平台和操作系统平台中执行第一编译指令,对应用程序安装包进行编译,得到第二机器码文件。
若第一编译指令存在错误,则第一机器码文件必然无法通过校验,测试设备在对第一机器码文件进行校验之前,先对第一编译指令进行校验,若第一编译指令未通过校验,则可以直接确定第一编译文件未通过校验,无需对第一机器码文件进行校验,提高了编译效率。当指令校验结果指示第一编译指令通过校验时,测试终端再对第一机器码文件进行校验。从编译指令和机器码文件两个环节对第一编译文件进行校验,提高了校验结果的准确性。
在一种可能的实施方式中,步骤303之后,本申请实施例提供的应用程序安装包的编译方法还包括如下步骤:
步骤一,响应于指令校验结果指示第一编译指令未通过校验,停止校验。
第一机器码文件是服务器执行第一编译指令对应用程序安装包编译得到的,若第一编译指令未通过校验,则第一机器码文件无需进行校验也能够确定其无法用于终端安装应用程序。在一种可能的实施方式中,当指令校验结果指示第一编译指令未通过校验时,则测试终端不再执行后续对第一机器码文件的校验步骤,停止此次校验。
在校验第一机器码文件之前先校验第一编译指令,在第一编译指令未通过校验时立即停止校验,测试终端无需生成第二机器码文件,提高了校验效率,避免资源浪费。
步骤二,向服务器发送指令校验结果。
其中,指令校验结果指示第一编译指令与第二编译指令不一致。
在一种可能的实施方式中,测试终端将第一编译指令与第二编译指令中存在差异的部分指令行进行展示,或将其发送至服务器以及开发人员对应的计算机设备,以便开发人员可以根据存在差异的第一编译指令和第二编译指令确定异常原因,及时对服务器中的编译环境进行修正。
步骤305,响应于第一机器码文件与第二机器码文件相同,确定校验结果为第一编译文件通过校验。
在第一编译指令通过校验的前提下,若第一机器码文件与第二机器码文件相同,则确定服务器与测试终端对同一编译指令的执行方式以及得到的执行结果相同,即第一机器码文件能够用于终端运行安装应用程序,因此确定校验结果为第一编译文件通过校验。
在一种可能的实施方式中,测试终端利用操作系统平台所提供的机器码文件比较工具,对第一机器码文件和第二机器码文件进行对比。
示意性的,当测试终端的操作系统平台为安卓操作系统时,利用文件内容比较(difference,diff)指令或操作数比较(compare,cmp)指令对第一机器码文件和第二机器码文件进行对比,例如使用diff指令时,测试终端执行diff base1.odex base2.odex指令,并验证执行该命令后的返回码是否为0,若返回码为0,则确定第一机器码文件与第二机器码文件相同,即校验结果为第一编译文件通过校验。
步骤306,响应于第一机器码文件与第二机器码文件不同,确定校验结果为第一编译文件未通过校验。
若第一机器码文件与第二机器码文件不同,则说明服务器与测试终端对同一编译指令的执行方式以及得到的执行结果不同,因此即使第一编译指令通过校验,第一机器码文件也无法在终端中被执行以安装应用程序。
示意性的,在步骤305的示例中,若执行diff指令后得到的返回码不为0,则确定第一机器码文件与第二机器码文件不同,校验结果为第一编译文件未通过校验。
上述步骤305与步骤306为并列关系,测试终端利用第二机器码文件对第一机器码文件进行校验后,执行步骤305或者步骤306。
步骤307,响应于校验结果指示第一编译文件通过校验,结束校验。
若校验结果指示第一编译文件通过校验,则确定第一编译指令和第一机器码文件均通过校验,保证后续终端获取到第一机器码后能够正确安装对应的应用程序,因此结束校验。
或者,为了进一步提高校验结果的准确性,测试终端对第一编译文件进行多次校验,当校验结果连续指示第一编译文件通过校验的次数达到第一次数阈值时,确定第一编译文件能够用于终端安装应用程序,结束校验。
步骤308,向服务器发送校验结果,服务器用于根据校验结果对第一编译文件、硬件平台和操作系统平台进行关联存储。
测试终端确定第一编译文件通过校验后,向服务器反馈校验结果,以便通知服务器对第一编译文件进行存储,服务器中对通过校验的第一编译文件,以及对应的硬件平台和操作系统平台进行关联存储,方便后续根据三者的对应关系,将第一机器码文件发送至对应终端,使得终端无需对应用程序安装包进行编译即可安装应用程序,提高应用程序安装效率,降低终端功耗。
可选的,当校验结果指示第一编译文件未通过校验时,测试终端停止校验,并将校验结果发送至服务器或反馈至开发人员对应的计算机设备;或者,当校验结果指示第一编译文件未通过校验时,测试终端在进行一次校验过程,对第一编译指令以及第一机器码文件进行校验,若确定第一编译文件未通过校验的次数达到第二次数阈值,则结束校验。
本申请实施例中,首先对第一编译指令进行校验,再基于指令校验结果对第一机器码文件进行校验,在第一编译指令和第一机器码文件均通过校验时确定校验成功,提高了校验结果的准确性,保证通过校验的第一编译文件能够用于终端直接安装应用程序;当第一编译指令未通过校验时,停止校验并向服务器发送校验结果,无需对第一机器码文件进行校验,提高了校验效率,避免资源浪费。
图4示出了本申请一个示例性实施例提供的应用程序安装包的编译方法的流程图。本实施例以该方法用于图1所示实施环境中的服务器110为例进行说明,该方法包括如下步骤:
步骤401,基于测试终端对应的操作系统平台和硬件平台搭建编译环境。
服务器的预编译过程,是针对不同类型的终端分别编译应用程序安装包,得到对应的第一编译文件的过程,由于服务器的操作系统平台和硬件平台与终端不同,且不同的终端之间操作系统平台和硬件平台也可能不同,因此在编译之前,服务器需要根据测试终端对应的操作系统平台和硬件平台搭建编译环境。
在一种可能的实施方式中,服务器获取测试终端的硬件平台和操作系统平台,并加载硬件平台和操作系统平台对应的系统镜像(例如数据文件boot.art)、系统依赖(例如资源加载路径boot classpath)和系统配置(例如系统文件/system/etc/build.prop等),完成对编译环境的搭建。
步骤402,在编译环境中对应用程序安装包进行编译,得到第一编译文件。
在一种可能的实施方式中,开发人员预先确定应用程序安装包所支持的硬件平台和操作系统平台,并使服务器完成对各个硬件平台和操作系统平台对应的编译环境的搭建。在对应用程序安装包的编译过程中,服务器自动切换编译环境,对应用程序安装包进行编译,得到第一编译文件后,继续切换至下一编译环境。
可选的,对于同一应用程序安装包,服务器在各个类型的编译环境中依次进行编译;或者,服务器在多个编译环境中对进行应用程序安装包编译。本申请实施例对此不作限定。
步骤403,向测试终端发送应用程序安装包和第一编译文件,测试终端用于对第一编译文件进行校验,得到校验结果,校验结果用于指示第一编译文件通过校验或未通过校验。
在一种可能的实施方式中,服务器在编译环境中生成第一编译文件后,自动将应用程序安装包和第一编译文件发送至测试终端,通知测试终端进行校验,从而实现应用程序安装包预编译以及编译结果校验的自动化闭环。
测试终端的操作系统平台和硬件平台与第一编译文件对应的编译环境匹配,例如,服务器针对终端A对应的硬件平台和操作系统平台搭建了编译环境a,并在编译环境a中生成第一编译文件x,针对终端B对应的硬件平台和操作系统平台搭建了编译环境b,并在编译环境b中生成第一编译文件y,则服务器将应用程序安装包和第一编译文件x发送给终端A进行校验,并将应用程序安装包和第一编译文件y发送给终端B进行校验。
综上所述,本申请实施例中,利用与编译环境对应的测试终端对服务器预编译得到的第一编译文件进行校验,验证服务器端编译结果的准确性,从而进一步验证服务器基于测试终端的硬件平台和操作系统平台所搭建的编译环境与测试终端是否一致,避免后续终端从服务器处直接获取第一编译文件安装应用程序的过程中出现异常;并且,利用测试终端直接对第一编译文件进行校验,无需对完整的编译环境进行校验,能够满足不同类型编译环境下第一编译文件的校验需求,同时降低编译文件校验的复杂度,提高了校验效率。
图5示出了本申请另一个示例性实施例提供的应用程序安装包的编译方法的流程图。本实施例以该方法用于图1所示实施环境中的服务器110为例进行说明,该方法包括如下步骤:
步骤501,基于测试终端对应的操作系统平台和硬件平台搭建编译环境。
步骤501的具体实施方式可以参考上述步骤401,本申请实施例在此不再赘述。
步骤502,在编译平台中对应用程序安装包进行解析,得到第一编译指令。
为了提高测试终端校验结果的准确性,保证校验通过的第一编译文件能够被终端加载并成功安装应用程序,测试终端需要对服务器编译过程中执行的第一编译指令以及编译得到的第一机器码文件进行校验,保证服务器解析应用程序安装包以及后续编译过程都能够满足终端的需求,因此服务器在编译过程中提取第一编译指令。
在服务器的编译过程中,服务器能够直接提取解析后得到的第一编译指令。
步骤503,执行第一编译指令,对应用程序安装包进行编译,得到第一机器码文件。
服务器根据第一编译指令,选择测试终端对应的编译器,对应用程序安装包进行编译,得到第一机器码文件。该第一机器码文件即能够被终端下载并完成应用程序安装的文件。
步骤504,将应用程序安装包,以及包含第一编译指令和第一机器码文件的第一编译文件发送至测试终端,测试终端用于对第一编译指令进行校验,并在第一编译指令通过校验后对第一机器码文件进行校验。
测试终端对第一编译文件的校验方式,是以自身对应用程序安装包的编译结果为基准,对第一编译文件进行对比校验,即测试终端在进行校验之前,首先需要执行对应用程序安装包的编译步骤,因此服务器在向测试终端发送第一编译文件的同时,还需要将应用程序安装包一并发送至测试终端。
步骤505,接收测试终端发送的校验结果。
服务器接收测试终端发送的校验结果,并根据校验结果对第一编译文件进行处理。在一种可能的实施方式中,在服务器接收校验结果,或者接收用于指示第一编译指令未通过校验的指令校验结果。
可选的,当接收到第一编译指令未通过校验,或者第一机器码未通过校验的校验结果时,服务器确定编译环境存在异常,并生成相应的报警信息发送至对应的计算机设备;或者,当接收到第一编译指令未通过校验,或第一机器码未通过校验的校验结果时,服务器记录未通过校验的次数,并重新切换至对应的编译环境,对应用程序安装包进行编译以及校验,若未通过校验的次数达到第二次数阈值,则服务器停止编译和校验,并确定编译环境存在异常。
步骤506,响应于校验结果指示第一编译文件通过校验,将第一编译文件、硬件平台和操作系统平台进行关联存储。
若第一编译文件通过校验,则该第一编译文件能够被终端运行并安装应用程序,服务器将通过校验的第一编译文件进行保存,以便后续发送至有应用安装需求的终端。
在一种可能的实施方式中,由于不同硬件平台和操作系统平台对应的第一编译文件不同,服务器需要将正确的第一编译文件发送至终端,因此服务器将第一编译文件、硬件平台和操作系统平台进行关联存储,例如,服务器将同一应用程序安装包对应的第一编译文件集中存储,不同的第一编译文件对应不同的文件标识,并建立关系列表,关系列表中包含文件标识、硬件平台标识和操作系统平台标识的对应关系。
步骤507,响应于接收到终端发送的编译文件获取请求,获取终端对应的目标硬件平台和目标操作系统平台。
当应用程序安装包对应的应用程序上线后,用户可以通过终端下载该应用程序的第一编译文件,从而使终端跳过编译过程,直接安装应用程序。在一种可能的实施方式中,用户通过终端触发对应用程序的安装指令,使终端向服务器发送编译文件获取请求,该编译文件获取请求中包含具体的应用程序、终端的目标操作系统平台和目标硬件平台。
步骤508,根据目标硬件平台、目标操作系统平台以及关联存储内容,确定目标编译文件。
服务器接收到编译文件获取请求后,基于应用程序确定应用程序安装包对应的第一编译文件,并依据目标硬件平台和目标操作系统平台查询关联存储内容,确定目标编译文件。
步骤509,将目标编译文件发送至终端。
服务器确定目标编译文件后,将目标编译文件发送至对应的终端,使终端直接运行目标编译文件,安装应用程序。
可选的,服务器将目标编译文件中的目标机器码文件发送至终端;或者为了避免异常情况导致终端无法运行目标机器码文件,服务器将目标机器码文件和应用程序安装包发送至终端,终端在成功运行目标机器码文件并安装应用程序后,自动删除应用程序安装包,或者在运行目标机器码文件失败时,对应用程序安装包进行编译,利用自身编译得到的机器码文件安装应用程序。
本申请实施例中,服务器在对应用程序安装包的解析过程中提取第一编译指令,并在编译完成后将第一编译指令、第一机器码文件和应用程序安装包一并发送至测试终端,使测试终端能够对第一编译指令和第一机器码文件进行校验,提高校验结果的准确性,并且在第一编译指令未通过校验时及时通知服务器,结束校验,无需对第一机器码文件进行校验,避免资源浪费。
结合上述各个实施例,在一个示意性的例子中,应用程序安装包的编译流程如图6所示。
步骤601,服务器基于测试终端的操作系统平台和硬件平台搭建编译环境。
步骤602,服务器在编译环境中对应用程序安装包进行解析,得到第一编译指令。
步骤603,服务器执行第一编译指令,对应用程序安装包进行解析,生成第一机器码文件。
步骤604,服务器向测试终端发送应用程序安装包和第一编译文件,第一编译文件包括第一编译指令和第一机器码文件。
步骤605,测试终端在硬件平台和操作系统平台中对应用程序安装包进行编译并解析,得到第二编译指令。
步骤606,测试终端利用第二编译指令对第一编译指令进行校验。
步骤607,响应于第一编译指令未通过校验,测试终端向服务器发送指令校验结果。
步骤608,响应于第一编译指令通过校验,测试终端执行第一编译指令,生成第二机器码文件。
步骤609,测试终端利用第二机器码文件对第一机器码文件进行校验,得到校验结果。
步骤610,测试终端向服务器发送校验结果。
图7示出了本申请一个示例性实施例提供的应用程序安装包的编译装置的结构框图。该装置可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。该装置包括:
第一接收模块701,用于接收服务器发送的应用程序安装包和第一编译文件,所述第一编译文件由所述服务器在编译环境中对所述应用程序安装包进行编译得到,所述编译环境基于所述测试终端对应的硬件平台和操作系统平台搭建;
第一编译模块702,用于在所述硬件平台和所述操作系统平台中对所述应用程序安装包进行编译,得到第二编译文件;
第一校验模块703,用于利用所述第二编译文件对所述第一编译文件进行校验,得到校验结果,所述校验结果用于指示所述第一编译文件通过校验或未通过校验。
可选的,所述第一编译文件包括第一编译指令和第一机器码文件,所述第一编译指令是所述服务器对所述应用程序安装包进行编译时采用的编译指令,所述第一机器码文件由所述服务器执行所述第一编译指令对所述应用程序安装包进行编译得到;
所述第一编译模块702,包括:
第一编译单元,用于在所述硬件平台和所述操作系统平台中执行所述第一编译指令,对所述应用程序安装包进行编译,得到第二机器码文件;
所述第一校验模块703,包括:
第一校验单元,用于响应于所述第一机器码文件与所述第二机器码文件相同,确定所述校验结果为所述第一编译文件通过校验;
第二校验单元,用于响应于所述第一机器码文件与所述第二机器码文件不同,确定所述校验结果为所述第一编译文件未通过校验。
可选的,所述装置还包括:
第三编译模块,用于在所述硬件平台和所述操作系统平台中对所述应用程序安装包进行编译并解析,得到第二编译指令,所述第二编译指令是所述测试终端对所述应用程序安装包进行编译时采用的编译指令;
第二校验模块,用于利用所述第二编译指令对所述第一编译指令进行校验,得到指令校验结果,所述指令校验结果用于指示所述第一编译指令通过校验或未通过校验;
所述第一编译单元,还用于:
响应于所述指令校验结果指示所述第一编译指令通过校验,在所述硬件平台和所述操作系统平台中执行所述第一编译指令,对所述应用程序安装包进行编译,得到所述第二机器码文件。
可选的,所述第三编译模块,包括:
第二编译单元,用于在所述硬件平台和所述操作系统平台中对所述应用程序安装包进行编译,生成第三机器码文件;
第一解析单元,用于执行机器码读取指令,对所述第三机器码文件中的可运行文件进行解析,得到所述第二编译指令。
可选的,所述第二校验模块,包括:
获取单元,用于获取所述第一编译指令中的第一校验参数,以及所述第二编译指令中的第二校验参数,其中,校验参数包括编译指令中除文件描述符、文件路径以及执行线程数之外的参数;
第三校验单元,用于响应于所述第一校验参数与所述第二校验参数相同,确定所述第一编译指令通过校验。
可选的,所述装置还包括:
第一停止模块,用于响应于所述指令校验结果指示所述第一编译指令未通过校验,停止校验;
第二发送模块,用于向所述服务器发送所述指令校验结果。
可选的,所述装置还包括:
第二停止模块,用于响应于所述校验结果指示所述第一编译文件通过校验,结束校验;
第三发送模块,用于向所述服务器发送所述校验结果,所述服务器用于根据所述校验结果对所述第一编译文件、所述硬件平台和所述操作系统平台进行关联存储。
综上所述,本申请实施例中,通过在测试终端的硬件平台和操作系统平台中对应用程序安装包进行编译,得到第二编译文件,并利用第二编译文件对服务器预编译得到的第一编译文件进行校验,验证服务器端编译结果的准确性,从而进一步验证服务器基于测试终端的硬件平台和操作系统平台所搭建的编译环境与测试终端是否一致,避免后续终端从服务器处直接获取第一编译文件安装应用程序的过程中出现异常;并且,利用测试终端直接对第一编译文件进行校验,无需对完整的编译环境进行校验,能够满足不同类型编译环境下第一编译文件的校验需求,同时降低编译文件校验的复杂度,提高了校验效率。
图8示出了本申请另一个示例性实施例提供的应用程序安装包的编译装置的结构框图。该装置可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。该装置包括:
环境搭建模块801,用于基于测试终端对应的操作系统平台和硬件平台搭建编译环境;
第二编译模块802,用于在所述编译环境中对应用程序安装包进行编译,得到第一编译文件;
第一发送模块803,用于向所述测试终端发送所述应用程序安装包和所述第一编译文件,所述测试终端用于对所述第一编译文件进行校验,得到校验结果,所述校验结果用于指示所述第一编译文件通过校验或未通过校验。
可选的,所述第二编译模块802,包括:
第二解析单元,用于在所述编译平台中对所述应用程序安装包进行解析,得到第一编译指令;
第三编译单元,用于执行所述第一编译指令,对所述应用程序安装包进行编译,得到第一机器码文件;
所述第一发送模块803,包括:
发送单元,用于将所述应用程序安装包,以及包含所述第一编译指令和所述第一机器码文件的所述第一编译文件发送至所述测试终端,所述测试终端用于对所述第一编译指令进行校验,并在所述第一编译指令通过校验后对所述第一机器码文件进行校验。
可选的,所述装置还包括:
第二接收模块,用于接收所述测试终端发送的所述校验结果;
存储模块,用于响应于所述校验结果指示所述第一编译文件通过校验,将所述第一编译文件、所述硬件平台和所述操作系统平台进行关联存储。
可选的,所述装置还包括:
获取模块,用于响应于接收到终端发送的编译文件获取请求,获取所述终端对应的目标硬件平台和目标操作系统平台;
确定模块,用于根据所述目标硬件平台、所述目标操作系统平台以及关联存储内容,确定目标编译文件;
第四发送模块,用于将所述目标编译文件发送至所述终端。
图9示出了本申请一个示例性实施例提供的终端的结构方框图。该终端可以是智能手机、平板电脑、电子书、便携式个人计算机等安装并运行有应用程序的电子设备。本申请中的终端可以包括一个或多个如下部件:处理器920、存储器910和屏幕930。
处理器920可以包括一个或者多个处理核心。处理器920利用各种接口和线路连接整个终端内的各个部分,通过运行或执行存储在存储器910内的指令、程序、代码集或指令集,以及调用存储在存储器910内的数据,执行终端的各种功能和处理数据。可选地,处理器920可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器920可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责屏幕930所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器920中,单独通过一块通信芯片进行实现。
存储器910可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。可选地,该存储器910包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器910可用于存储指令、程序、代码、代码集或指令集。存储器910可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等,该操作系统可以是安卓(Android)系统(包括基于Android系统深度开发的系统)、苹果公司开发的IOS系统(包括基于IOS系统深度开发的系统)或其它系统。存储数据区还可以存储终端在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
屏幕930可以为电容式触摸显示屏,该电容式触摸显示屏用于接收用户使用手指、触摸笔等任何适合的物体在其上或附近的触摸操作,以及显示各个应用程序的用户界面。触摸显示屏通常设置在终端的前面板。触摸显示屏可被设计成为全面屏、曲面屏或异型屏。触摸显示屏还可被设计成为全面屏与曲面屏的结合,异型屏与曲面屏的结合,本申请实施例对此不加以限定。
除此之外,本领域技术人员可以理解,上述附图所示出的终端的结构并不构成对终端的限定,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,终端中还包括射频电路、拍摄组件、传感器、音频电路、无线保真(WirelessFidelity,WiFi)组件、电源、蓝牙组件等部件,在此不再赘述。
图10示出了本申请一个示例性实施例提供的服务器的结构示意图。服务器1100还可以是一台服务器或服务器集群。具体来讲:所述服务器1100包括中央处理单元(CentralProcessing Unit,CPU)1001、包括随机存取存储器(Random Access Memory,RAM)1002和只读存储器(Read-Only Memory,ROM)1003的系统存储器1004,以及连接系统存储器1004和中央处理单元1001的系统总线1005。所述服务器1100还包括帮助服务器1100内的各个器件之间传输信息的基本输入/输出系统(Input/Output系统,I/O系统)1006,和用于存储操作系统1013、应用程序1014和其他程序模块1015的大容量存储设备1007。
所述基本输入/输出系统1006包括有用于显示信息的显示器1008和用于用户输入信息的诸如鼠标、键盘之类的输入设备1009。其中所述显示器1008和输入设备1009都通过连接到系统总线1005的输入输出控制器1100连接到中央处理单元1001。所述基本输入/输出系统1006还可以包括输入输出控制器1100以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1100还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备1007通过连接到系统总线1005的大容量存储控制器(未示出)连接到中央处理单元1001。所述大容量存储设备1007及其相关联的计算机可读介质为服务器1100提供非易失性存储。也就是说,所述大容量存储设备1007可以包括诸如硬盘或者光盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、计算机存储器(Erasable Programmable Read Only Memory,EPROM)、读写存储器(Electrically Erasable Programmable Read Only Memory,EEPROM)、闪存或其他固态存储其技术,CD-ROM、数字通用光盘(Digital Versatile Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1004和大容量存储设备1007可以统称为存储器。
存储器存储有一个或多个程序,一个或多个程序被配置成由一个或多个中央处理单元1001执行,一个或多个程序包含用于实现上述应用程序安装包的编译方法的指令,中央处理单元1001执行该一个或多个程序实现上述各个方法实施例提供的方法。
根据本申请的各种实施例,所述服务器1100还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1100可以通过连接在所述系统总线1005上的网络接口单元1011连接到网络1012,或者说,也可以使用网络接口单元1011来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本申请实施例提供的方法中由服务器所执行的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上各个实施例所述的应用程序安装包的编译方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的应用程序安装包的编译方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读存储介质中或者作为计算机可读存储介质上的一个或多个指令或代码进行传输。计算机可读存储介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (16)

1.一种应用程序安装包的编译方法,其特征在于,所述方法用于测试终端,所述方法包括:
接收服务器发送的应用程序安装包和第一编译文件,所述第一编译文件由所述服务器在编译环境中对所述应用程序安装包进行编译得到,所述编译环境基于所述测试终端对应的硬件平台和操作系统平台搭建;
在所述硬件平台和所述操作系统平台中对所述应用程序安装包进行编译,得到第二编译文件;
利用所述第二编译文件对所述第一编译文件进行校验,得到校验结果,所述校验结果用于指示所述第一编译文件通过校验或未通过校验。
2.根据权利要求1所述的方法,其特征在于,所述第一编译文件包括第一编译指令和第一机器码文件,所述第一编译指令是所述服务器对所述应用程序安装包进行编译时采用的编译指令,所述第一机器码文件由所述服务器执行所述第一编译指令对所述应用程序安装包进行编译得到;
所述在所述硬件平台和所述操作系统平台中对所述应用程序安装包进行编译,得到第二编译文件,包括:
在所述硬件平台和所述操作系统平台中执行所述第一编译指令,对所述应用程序安装包进行编译,得到第二机器码文件;
所述利用所述第二编译文件对所述第一编译文件进行校验,得到校验结果,包括:
响应于所述第一机器码文件与所述第二机器码文件相同,确定所述校验结果为所述第一编译文件通过校验;
响应于所述第一机器码文件与所述第二机器码文件不同,确定所述校验结果为所述第一编译文件未通过校验。
3.根据权利要求2所述的方法,其特征在于,所述在所述硬件平台和所述操作系统平台中执行所述第一编译指令,对所述应用程序安装包进行编译,得到第二机器码文件之前,所述方法包括:
在所述硬件平台和所述操作系统平台中对所述应用程序安装包进行编译并解析,得到第二编译指令,所述第二编译指令是所述测试终端对所述应用程序安装包进行编译时采用的编译指令;
利用所述第二编译指令对所述第一编译指令进行校验,得到指令校验结果,所述指令校验结果用于指示所述第一编译指令通过校验或未通过校验;
所述在所述硬件平台和所述操作系统平台中执行所述第一编译指令,对所述应用程序安装包进行编译,得到第二机器码文件,包括:
响应于所述指令校验结果指示所述第一编译指令通过校验,在所述硬件平台和所述操作系统平台中执行所述第一编译指令,对所述应用程序安装包进行编译,得到所述第二机器码文件。
4.根据权利要求3所述的方法,其特征在于,所述在所述硬件平台和所述操作系统平台中对所述应用程序安装包进行编译并解析,得到第二编译指令,包括:
在所述硬件平台和所述操作系统平台中对所述应用程序安装包进行编译,生成第三机器码文件;
执行机器码读取指令,对所述第三机器码文件中的可运行文件进行解析,得到所述第二编译指令。
5.根据权利要求3所述的方法,其特征在于,所述利用所述第二编译指令对所述第一编译指令进行校验,得到指令校验结果,包括:
获取所述第一编译指令中的第一校验参数,以及所述第二编译指令中的第二校验参数,其中,校验参数包括编译指令中除文件描述符、文件路径以及执行线程数之外的参数;
响应于所述第一校验参数与所述第二校验参数相同,确定所述第一编译指令通过校验。
6.根据权利要求3至5任一所述的方法,其特征在于,所述利用所述第二编译指令对所述第一编译指令进行校验,得到指令校验结果之后,所述方法还包括:
响应于所述指令校验结果指示所述第一编译指令未通过校验,停止校验;
向所述服务器发送所述指令校验结果。
7.根据权利要求1至5任一所述的方法,其特征在于,所述利用所述第二编译文件对所述第一编译文件进行校验,得到校验结果之后,所述方法还包括:
响应于所述校验结果指示所述第一编译文件通过校验,结束校验;
向所述服务器发送所述校验结果,所述服务器用于根据所述校验结果对所述第一编译文件、所述硬件平台和所述操作系统平台进行关联存储。
8.一种应用程序安装包的编译方法,其特征在于,所述方法用于服务器,所述方法包括:
基于测试终端对应的操作系统平台和硬件平台搭建编译环境;
在所述编译环境中对应用程序安装包进行编译,得到第一编译文件;
向所述测试终端发送所述应用程序安装包和所述第一编译文件,所述测试终端用于对所述第一编译文件进行校验,得到校验结果,所述校验结果用于指示所述第一编译文件通过校验或未通过校验。
9.根据权利要求8所述的方法,其特征在于,所述在所述编译环境中对应用程序安装包进行编译,得到第一编译文件,包括:
在所述编译平台中对所述应用程序安装包进行解析,得到第一编译指令;
执行所述第一编译指令,对所述应用程序安装包进行编译,得到第一机器码文件;
所述向所述测试终端发送所述应用程序安装包和所述第一编译文件,包括:
将所述应用程序安装包,以及包含所述第一编译指令和所述第一机器码文件的所述第一编译文件发送至所述测试终端,所述测试终端用于对所述第一编译指令进行校验,并在所述第一编译指令通过校验后对所述第一机器码文件进行校验。
10.根据权利要求8或9所述的方法,其特征在于,所述向所述测试终端发送所述应用程序安装包和所述第一编译文件之后,所述方法包括:
接收所述测试终端发送的所述校验结果;
响应于所述校验结果指示所述第一编译文件通过校验,将所述第一编译文件、所述硬件平台和所述操作系统平台进行关联存储。
11.根据权利要求10所述的方法,其特征在于,所述将所述第一编译文件、所述硬件平台和所述操作系统平台进行关联存储之后,所述方法还包括:
响应于接收到终端发送的编译文件获取请求,获取所述终端对应的目标硬件平台和目标操作系统平台;
根据所述目标硬件平台、所述目标操作系统平台以及关联存储内容,确定目标编译文件;
将所述目标编译文件发送至所述终端。
12.一种应用程序安装包的编译装置,其特征在于,所述装置包括:
第一接收模块,用于接收服务器发送的应用程序安装包和第一编译文件,所述第一编译文件由所述服务器在编译环境中对所述应用程序安装包进行编译得到,所述编译环境基于所述测试终端对应的硬件平台和操作系统平台搭建;
第一编译模块,用于在所述硬件平台和所述操作系统平台中对所述应用程序安装包进行编译,得到第二编译文件;
第一校验模块,用于利用所述第二编译文件对所述第一编译文件进行校验,得到校验结果,所述校验结果用于指示所述第一编译文件通过校验或未通过校验。
13.一种应用程序安装包的编译装置,其特征在于,所述装置包括:
环境搭建模块,用于基于测试终端对应的操作系统平台和硬件平台搭建编译环境;
第二编译模块,用于在所述编译环境中对应用程序安装包进行编译,得到第一编译文件;
第一发送模块,用于向所述测试终端发送所述应用程序安装包和所述第一编译文件,所述测试终端用于对所述第一编译文件进行校验,得到校验结果,所述校验结果用于指示所述第一编译文件通过校验或未通过校验。
14.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至7任一所述的应用程序安装包的编译方法。
15.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求8至11任一所述的应用程序安装包的编译方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如权利要求1至7,或权利要求8至11中任一项所述的应用程序安装包的编译方法。
CN202011587025.8A 2020-12-29 2020-12-29 应用程序安装包的编译方法、终端、服务器及存储介质 Active CN112596751B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011587025.8A CN112596751B (zh) 2020-12-29 2020-12-29 应用程序安装包的编译方法、终端、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011587025.8A CN112596751B (zh) 2020-12-29 2020-12-29 应用程序安装包的编译方法、终端、服务器及存储介质

Publications (2)

Publication Number Publication Date
CN112596751A true CN112596751A (zh) 2021-04-02
CN112596751B CN112596751B (zh) 2024-05-17

Family

ID=75203990

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011587025.8A Active CN112596751B (zh) 2020-12-29 2020-12-29 应用程序安装包的编译方法、终端、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN112596751B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117130617A (zh) * 2023-01-19 2023-11-28 荣耀终端有限公司 一种应用程序的编译方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105320598A (zh) * 2015-11-24 2016-02-10 广州华多网络科技有限公司 软件测试方法及装置
WO2017084555A1 (zh) * 2015-11-18 2017-05-26 中国银联股份有限公司 用于可信执行环境的可信应用生成及安装方法
WO2017148157A1 (zh) * 2016-03-01 2017-09-08 乐视控股(北京)有限公司 Android设备的应用程序本地化安装方法和装置
CN111209005A (zh) * 2020-01-06 2020-05-29 腾讯科技(深圳)有限公司 程序文件的编译方法、装置和计算机可读存储介质
CN111492345A (zh) * 2018-10-15 2020-08-04 华为技术有限公司 优化和运行安卓应用程序的方法以及相关装置
CN111984261A (zh) * 2019-05-24 2020-11-24 北京京东尚科信息技术有限公司 编译方法与编译系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017084555A1 (zh) * 2015-11-18 2017-05-26 中国银联股份有限公司 用于可信执行环境的可信应用生成及安装方法
CN105320598A (zh) * 2015-11-24 2016-02-10 广州华多网络科技有限公司 软件测试方法及装置
WO2017148157A1 (zh) * 2016-03-01 2017-09-08 乐视控股(北京)有限公司 Android设备的应用程序本地化安装方法和装置
CN111492345A (zh) * 2018-10-15 2020-08-04 华为技术有限公司 优化和运行安卓应用程序的方法以及相关装置
CN111984261A (zh) * 2019-05-24 2020-11-24 北京京东尚科信息技术有限公司 编译方法与编译系统
CN111209005A (zh) * 2020-01-06 2020-05-29 腾讯科技(深圳)有限公司 程序文件的编译方法、装置和计算机可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AMIT M POTDAR等: "Performance Evaluation of Docker Container and Virtual Machine", 《PROCEDIA COMPUTER SCIENCE》, vol. 171, pages 1419 - 1428, XP086172334, DOI: 10.1016/j.procs.2020.04.152 *
吴泽智等: "信息流控制研究进展", 《软件学报》, vol. 28, no. 01 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117130617A (zh) * 2023-01-19 2023-11-28 荣耀终端有限公司 一种应用程序的编译方法和装置

Also Published As

Publication number Publication date
CN112596751B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
US10331425B2 (en) Automated source code adaption to inject features between platform versions
US8549490B2 (en) Static code analysis for packaged application customization
CN106325847B (zh) 基于iOS平台获取应用程序功能的方法和装置
US20060190933A1 (en) Method and apparatus for quickly developing an embedded operating system through utilizing an automated building framework
US10191751B2 (en) Information processing device for generating application programming interface information
CN110046094B (zh) 运行环境的切换方法和运行环境的切换装置
CN104598267A (zh) 应用的调起方法及装置
CN111625294A (zh) 一种服务器项目执行方法、装置及其相关设备
CN113138768B (zh) 应用程序包生成方法、装置、电子设备以及可读存储介质
CN112596751B (zh) 应用程序安装包的编译方法、终端、服务器及存储介质
CN113010178B (zh) 应用程序运行控制方法、装置、设备和介质
CN113127329B (zh) 脚本调试方法、装置及计算机存储介质
CN110806891B (zh) 嵌入式设备软件版本的生成方法及装置
CN113778451B (zh) 文件加载方法、装置、计算机系统和计算机可读存储介质
CN113986744A (zh) 一种分库分表组件的测试方法、装置及存储介质
CN114489698A (zh) 应用程序安装方法和装置
CN112506519A (zh) 应用程序的编译方法、移动终端及服务器
CN113515299A (zh) 软件开发工具包sdk热升级方法、装置、设备及存储介质
CN110362320B (zh) 一种应用开发平台的命令实现方法和装置
CN111782282B (zh) 启动程序加载方法和装置、电子设备和存储介质
CN113590166B (zh) 应用程序的更新方法、装置以及计算机可读存储介质
CN115629966A (zh) 基于生态认证测试的升级验证方法、装置、设备及介质
CN107784204B (zh) 应用脱壳方法和装置
CN114579177A (zh) 一种基于jenkins的混合开发项目打包方法和相关设备
CN115934511A (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
GR01 Patent grant
GR01 Patent grant