CN118057306A - 安装包的生成方法、装置、服务器、介质和程序产品 - Google Patents

安装包的生成方法、装置、服务器、介质和程序产品 Download PDF

Info

Publication number
CN118057306A
CN118057306A CN202211461139.7A CN202211461139A CN118057306A CN 118057306 A CN118057306 A CN 118057306A CN 202211461139 A CN202211461139 A CN 202211461139A CN 118057306 A CN118057306 A CN 118057306A
Authority
CN
China
Prior art keywords
installation package
resource
information
task object
code
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
CN202211461139.7A
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211461139.7A priority Critical patent/CN118057306A/zh
Publication of CN118057306A publication Critical patent/CN118057306A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种安装包的生成方法、装置、服务器、介质和程序产品,可以应用于各种云服务器场景;本申请实施例获取安装包生成平台对应的第一任务对象、和代码平台对应的第二任务对象携带的资源指向信息和代码指向信息;通过第二任务对象携带的资源指向信息和代码指向信息,更新第一任务对象携带的信息,得到目标信息;根据目标信息,获取资源文件和源代码;对源代码中的目标字段进行标记,得到标记后的字段;在对源代码的编译过程中,根据标记后的字段,创建对应资源文件的动态链接,以生成安装包。在本申请中,以第一任务对象和第二任务对象之间的信息传递,跨平台地、自动生成安装包,再通过动态链接资源文件,以提升构建安装包的效率。

Description

安装包的生成方法、装置、服务器、介质和程序产品
技术领域
本申请涉及计算机技术领域,具体涉及一种安装包的生成方法、装置、服务器、介质和程序产品。
背景技术
安装包是可自行解压缩文件的集合,其包括软件安装的所有文件。在进行应用的安装包生成时,开发人员手动将资源容器中的资源使用开发工具中内置图片处理工具进行压缩,生成压缩文件,进而将该压缩文件存储至安装包,以便电子设备如移动智能设备下载和安装。
然而,随着计算机技术的发展,安装包的发布、更新越来越频繁,安装包中资源的量也越来越大,通过开发人员手动将资源文件进行打包以生成安装包,不仅效率低,也容易产生错漏或重复等问题。
发明内容
本申请实施例提供一种安装包的生成方法、装置、服务器、介质和程序产品,可以提升构建安装包的效率,避免产生错漏或重复等问题。
本申请实施例提供一种安装包的生成方法,应用于安装包生成平台,所述方法包括:获取所述安装包生成平台对应的第一任务对象、和代码平台对应的第二任务对象携带的资源指向信息和代码指向信息,所述资源指向信息为指向资源文件的信息,所述代码指向信息为指向源代码的信息;通过所述第二任务对象携带的资源指向信息和代码指向信息,更新所述第一任务对象携带的信息,得到目标信息;根据所述目标信息,获取资源文件和源代码;对所述源代码中的目标字段进行标记,得到标记后的字段,所述目标字段为用于加载所述资源文件的字段;在对所述源代码的编译过程中,根据所述标记后的字段,创建对应所述资源文件的动态链接,以生成安装包。
本申请实施例还提供一种安装包的生成装置,应用于安装包生成平台,所述装置包括:第一获取单元,用于获取所述安装包生成平台对应的第一任务对象、和代码平台对应的第二任务对象携带的资源指向信息和代码指向信息,所述资源指向信息为指向资源文件的信息,所述代码指向信息为指向源代码的信息;更新单元,用于通过所述第二任务对象携带的资源指向信息和代码指向信息,更新所述第一任务对象携带的信息,得到目标信息;第二获取单元,用于根据所述目标信息,获取资源文件和源代码;标记单元,用于对所述源代码中的目标字段进行标记,得到标记后的字段,所述目标字段为用于加载所述资源文件的字段;生成单元,用于在对所述源代码的编译过程中,根据所述标记后的字段,创建对应所述资源文件的动态链接,以生成安装包。
本申请实施例还提供一种服务器,包括处理器和存储器,所述存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行本申请实施例所提供的任一种安装包的生成方法中的步骤。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请实施例所提供的任一种安装包的生成方法中的步骤。
本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现本申请实施例所提供的任一种安装包的生成方法中的步骤。
本申请实施例可以获取所述安装包生成平台对应的第一任务对象、和代码平台对应的第二任务对象携带的资源指向信息和代码指向信息,所述资源指向信息为指向资源文件的信息,所述代码指向信息为指向源代码的信息;通过所述第二任务对象携带的资源指向信息和代码指向信息,更新所述第一任务对象携带的信息,得到目标信息;根据所述目标信息,获取资源文件和源代码;对所述源代码中的目标字段进行标记,得到标记后的字段,所述目标字段为用于加载所述资源文件的字段;在对所述源代码的编译过程中,将所述资源文件动态链接至所述标记后的字段,以生成安装包。
在本申请中,在代码平台以及安装包生成平台分别创建第一任务对象和第二任务对象,以这两个任务对象之间进行信息传递,可以实现跨平台通信,并以任务对象传递的信息确定目标信息,对资源文件和源代码进行进一步处理,以跨平台地、自动生成安装包,提升构建安装包的效率,避免产生错漏或重复等问题。此外,通过将资源文件动态链接,可以分别、独立执行资源文件的打包和源代码编译过程,以提升处理效率,动态链接方式也可以节省内存,充分利用计算资源。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的安装包的生成方法的场景示意图;
图1b是本申请实施例提供的安装包的生成方法的流程示意图;
图1c是本申请实施例提供的第一任务对象和第二任务对象之间进行通信的示意图;
图2a是本申请实施例提供的安装包的生成方法的时序图;
图2b是本申请另一个实施例安装包的生成方法的流程示意图;
图2c是本申请另一个实施例安装包的生成方法的又一流程示意图;
图2d是本申请实施例提供的安装包的生成方法的再一流程示意图;
图3是本申请实施例提供的安装包的生成装置的结构示意图;
图4是本申请实施例提供的服务器的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在对本申请实施例进行详细地解释说明之前,先对本申请实施例涉及到的一些名词进行解释说明。
其中,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念区分。其中,至少一个是指一个或一个以上,例如,至少一个任务对象可以是一个任务对象、两个任务对象、三个任务对象等任意大于等于一的整数个任务对象。而多个是指两个或者两个以上,例如,多个任务对象可以是两个任务对象、三个任务对象任意大于等于二的整数个任务对象。
其中,安装包生成平台是指用于应用程序集成,以生成安装包的平台。安装包生成平台可以实现应用中功能的持续集成,该集成包括自动化的编译、发布和测试。应用程序中各种功能的集成,实质是各种功能模块,比如,SDK(Software DevelopmentKit,软件开发工具包)的集成,功能模块用于实现应用中的功能。例如,安装包生成平台可以持续集成平台,如基于Jenkins的平台或DevOps平台。Jenkins是基于Java开发的一持续集成工具。DevOps(Development&Operations)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。DevOps平台通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
其中,代码平台是指用于源代码存储和版本控制的平台。例如,代码平台可以为git平台,git是一个分布式版本控制软件,一般用于管理软件的源代码。
其中,安装包是指应用程序包APK,可为压缩文件,例如ZIP文件。安装包可为不同操作系统的应用,本申请实施例不对安装包的压缩方式、呈现形态和操作系统的类别作限定。APK是操作系统使用的一种应用程序包文件格式,用于分发、安装移动应用及中间件。例如,以安卓(Android)操作系统的APK为例,一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,将这种能被Android系统识别并运行的文件格式称为APK。一个APK文件内包含被编译的代码文件(.dex文件)、文件资源(resources)、原生资源文件(assets)、证书(certificates)和清单文件(manifest file)。
其中,资源是指是在应用程序中使用的对象,但是他们在程序之外定义。当应用程序连接时,他们被添加到可执行文件中。资源的类型可以是图片、音频、视频、文字资源,或者其他可以在计算机中展示的内容等等。所有可以从中读取出需要的资源的文件,可以称之为资源文件。
其中,对象可以指计算机程序的基本单元,例如,在面向对象的编程((ObjectOriented Programming))中,可以将计算机程序视为一组对象的集合,对象可以包含数据和操作数据的函数,每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。
本申请实施例提供一种安装包的生成方法、装置、服务器、介质和程序产品。
其中,该安装包的生成装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在一些实施例中,该安装包的生成装置还可以集成在多个电子设备中,比如,安装包的生成装置可以集成在多个服务器中,由多个服务器来实现本申请的安装包的生成方法。
在一些实施例中,服务器也可以以终端的形式来实现。
例如,参考图1a,安装包的生成方法可以应用于安装包生成平台,该安装包生成平台可以集成在服务器中,该服务器可以获取安装包生成平台对应的第一任务对象、和代码平台对应的第二任务对象携带的资源指向信息和代码指向信息,资源指向信息为指向资源文件的信息,代码指向信息为指向源代码的信息;通过第二任务对象携带的资源指向信息和代码指向信息,更新第一任务对象携带的信息,得到目标信息;根据目标信息,获取资源文件和源代码;对源代码中的目标字段进行标记,得到标记后的字段,目标字段为用于加载资源文件的字段;在对源代码的编译过程中,根据标记后的字段,创建对应资源文件的动态链接,以生成安装包。
可选地,安装包生成平台和代码平台可以搭载在不同的云服务器上。通过分布式云存储系统为安装包生成平台和代码平台提供物理存储空间。
以下分别进行详细说明。需说明的是,以下实施例的先后次数不作为对实施例优选顺序的限定。可以理解的是,在本申请的具体实施方式中,涉及到用户信息等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云存储(Cloud Storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
在本实施例中,提供了一种安装包的生成方法,该方法应用于安装包生成平台,如图1b所示,该安装包的生成方法的具体流程可以如下:
110、获取安装包生成平台对应的第一任务对象、和代码平台对应的第二任务对象携带的资源指向信息和代码指向信息。
其中,任务对象可以指用于处理安装包生成任务的对象。任务对象携带的信息可以指对象中的数据,例如,可以指在构造任务对象时,通过构造函数以参数形式传入的标识,并以标识形式在任务对象中存储信息,任务对象可以以消息形式将携带的信息(即存储的信息)在不同任务对象之间传递。在本申请实施例中,任务对象携带的信息可以包括但不限于资源指向信息和代码指向信息等信息。
可以理解的是,第二任务对象和第一任务对象分别为安装包生成平台和代码平台上创建的任务对象。具体地,第二任务对象可以用于执行如下安装包生成任务:在代码平台获取打包信息如资源指向信息和代码指向信息等,并将获取的打包信息发送至第一任务对象;第一任务对象可以用于执行如下安装包生成任务:接收第二任务对象发来的打包信息,并将接收的打包信息作为安装包构建参数,以构建安装包。以此,通过第二任务对象和第一任务对象的之间进行信息传递,可以实现跨平台通信。
需说明的是,第二任务对象和第一任务对象的之间传递的打包信息可以包括但不限于资源指向信息和代码指向信息等。例如,打包信息还可以包括打包分支、commit(提交)节点等与安装包生成过程相关的信息。
资源指向信息为指向资源文件的信息,代码指向信息为指向源代码的信息。其中,资源指向信息或代码指向信息可以为资源或代码的名称或路径等。可以理解的是,通过资源指向信息或代码指向信息可以定位到指向的资源或源代码的位置,以获取资源或源代码。例如,资源指向信息可以为资源名称,源代码指向信息可以为源代码路径,如源码工程的地址。
可选地,资源指向信息可以为统一资源标识符(URL)中的资源名称。统一资源标识符可以分为资源路径和资源名称两部分,资源名称指的是要访问资源的直接名称,如show.html,或与要访问资源存在映射关系的间接名称,如show.do。而资源路径则是通过该路径可以定位到指定的资源,即指向资源文件的资源信息是指在URL资源访问路径中除了资源名称以外的其它部分。以此,可以通过资源名称在源代码中查找到统一资源标识符,并由其中的资源路径访问并获取资源文件。
可选地,为了能更好地识别源代码引用的资源名称相同的多个资源文件,资源指向信息可以为资源引用的方法名,该方法名即为与要访问资源存在映射关系的间接名称。
现有技术中,在安装包的生成过程中,通常都要由开发人员手动打包各种资源文件,并将代码交付至安装包生成平台,不仅效率低,也容易产生错漏或重复等问题。为了解决这一技术问题,本申请实施例中,可以在代码平台以及安装包生成平台分别创建第一任务对象和第二任务对象,以这两个任务对象之间的通信过程作为代码平台和安装包生成平台之间的桥梁,以可以从代码平台自动传递打包信息至安装包生成平台,并以任务对象传递的信息作为打包的初始化构建参数,对资源文件和源代码进行进一步处理,以实现在代码平台和安装包生成平台之间的自动化信息传输和安装包的自动化构建,提升构建安装包的效率。
例如,在软件应用开发项目中,在某个需求开发完成后,需要测试人员接入或产生了relese(候选)版本迭代时就会执行生成应用程序安装包的过程。具体地,开发人员将源代码在本地测试后,可以将源代码提交至代码平台如git代码仓库中,代码仓库对该提交操作配置了钩子(hook),只要提交源代码或者合并进主干,就会进行自动化测试。在自动化测试后,源代码就可以合并进主干,就可以将源代码交付至安装包生成平台。此时,可以在代码平台创建任务对象A、以及在安装包生成平台创建任务对象B,以任务对象A和任务对象B之间的通信过程作为代码平台和安装包生成平台之间的桥梁,传递资源指向信息和代码指向信息等打包信息。安装包生成平台可以基于任务对象A传递的信息,对代码进行构建,以生成相应的安装包。所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片)等等。
可选地,第二任务对象可以为基于出包指令在代码平台确定的任务对象。例如,在开发人员完成虚拟开发或需要发布新版本时,可以由开发人员在代码平台输入出包指令、或者由脚本文件自动执行出包指令,如该出包指令可以为预设指令git rebase--hard+某个节点,该预设指令是将某个节点的开发修改提交内容进行合并提交的指令。当开发人员或者脚本文件执行该出包指令时,表示基于当前的源代码向代码平台的服务器端提交了出包请求。代码平台的服务器端在收到出包指令后,可以在服务器端寻找可用的任务对象,若找到,则将该任务对象作为第二任务对象,若未找到,则新建任务对象作为第二任务对象。
在一些实施方式中,任务对象携带的信息可以包括任务信息。例如,任务信息可以为tag任务,该tag任务可以包括资源指向信息和代码指向信息等打包信息。
可选地,任务对象携带的信息还可以包括任务对象的状态信息。
可选地,可以为任务对象设置不同的状态,以实现复用任务对象,提升任务对象的利用率,任务对象的状态可以包括空闲状态和占用状态。例如,任务对象可以携带有状态信息,在任务对象执行安装包生成任务时,该任务对象携带的状态信息为占用状态,在任务对象未执行处理安装包时,该任务对象携带的状态信息为空闲状态。
可选地,在执行安装包生成任务之前,第二任务对象为处于空闲状态的任务对象。例如,可以在代码平台的服务器端通过识别任务对象的状态信息,优先查找携带的状态信息为空闲状态的任务对象作为第二任务对象,以使被选取的任务对象可以即时执行相应的安装包生成任务,以提升处理效率。
可选地,在任务对象执行完安装包生成任务时,可以将任务对象由占用状态调整为空闲状态。例如,可以将任务对象携带的状态信息由占用状态更新为空闲状态,在任务对象开始执行安装包生成任务时,可以将任务对象携带的状态信息由空闲状态更新为占用状态。
120、通过第二任务对象携带的资源指向信息和代码指向信息,更新第一任务对象携带的信息,得到目标信息。
例如,第一任务对象可以将从第二任务对象接收的消息传入其对应的消息队列,以更新其携带的信息,以便于通过调用任务对象中的函数读取其携带的信息,得到目标信息。
可选地,目标信息可以为第一任务对象携带的信息。例如,目标信息可以包括第一任务对象接收的、指向资源文件的资源信息以及源代码路径信息等的打包信息,也可以为对这些打包信息进一步处理得到的信息。
在一些实施方式中,任务对象可以通过消息队列保存其他任务对象传递来的消息,以在消息传递完后根据消息队列内存储的信息生成安装包生成规则,避免错漏。具体地,通过第二任务对象携带的资源指向信息和代码指向信息,更新第一任务对象携带的信息,得到目标信息,包括:
将第二任务对象携带的资源指向信息和代码指向信息写入第一任务对象对应的消息队列,以更新第一任务对象携带的信息;
当写入完成后,将消息队列中的信息作为安装包生成参数,由安装包生成参数构建得到安装包生成规则。
其中,安装包生成规则可以指用于根据安装包生成参数生成安装包的规则。例如,可以通过将不同的安装包生成参数传入用于生成安装包的脚本中,来构建对应相应安装包生成参数的脚本。脚本是一种特定的描述性语言,依据一定的格式编写的可执行文件,简单地说脚本就是一条条的文字命令,脚本在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。以此,可以理解的是,可以通过脚本(即安装包生成规则)控制执行步骤130~步骤150的安装包生成任务。
例如,如图1c所示,在开发完成应用程序的一个新版本后,第二任务对象可以获取该新版本的涉及的资源名称和源代码路径等打包信息,并将获取的打包信息分别解析为相应的字段(图1c中的圆圈),并存储在其对应的消息队列后,从第二任务对象对应的消息队列中依次提取字段,以消息形式一一发送并写入第一任务对象对应的消息队列。在所有消息传递完成后,第一任务对象可以通过处理线程调用任务对象中操作数据的函数,以从其对应的消息队列中读取写入的字段,作为安装包生成参数传入生成安装包的脚本中,以生成用于生成该新版本的安装包的脚本。
在一些实施方式中,可以为第一任务对象设置不同的状态,以实现复用任务对象,提升任务对象的利用率。具体地,安装包生成平台获取的第一任务对象为空闲状态,通过第二任务对象携带的资源指向信息和代码指向信息,更新第一任务对象携带的信息,得到目标信息,还包括:
在将第二任务对象携带的资源指向信息和代码指向信息写入第一任务对象对应的消息队列时,将第一任务对象从空闲状态调整为占用状态;
在构建得到安装包生成规则后,将第一任务对象从占用状态调整为空闲状态。
例如,在第二任务对象将打包信息存储在其对应的消息队列后,第二任务对象可以与安装包生成平台上处于空闲状态的任务对象(即第一任务对象)建立通信链接。在第二任务对象将打包信息传递并存储在第一任务对象对应的消息队列后,可以将第一任务对象的状态信息更新为占用状态。在写入完成后,可以将写入的字段依次传入生成安装包的脚本中并构建安装包生成规则,在传安装包生成规则完成后,可以将第一任务对象从占用状态调整为空闲状态。
可选地,写入完成后,可以将写入的字段依次传入生成安装包的脚本中,在传入完成后,可以将第一任务对象从占用状态调整为空闲状态,以使第一任务对象在传参完成后,可以立即执行下一次任务,以提升第一任务对象的利用率。
130、根据目标信息,获取资源文件和源代码。
可以理解的是,目标信息是由包含指向资源文件的资源信息以及源代码路径信息等的打包信息得到,因此目标信息可以包含指向资源文件的和源代码的信息,以此可以通过解析目标信息来访问并获取相应的资源文件和源代码。
在一些实施方式中,可以从源代码中获取资源文件的资源路径,以快速获取与源代码关联的资源文件。具体地,目标信息包括资源名称和源代码路径,根据目标信息,获取资源文件和源代码,包括:
在源代码路径指向的位置,获取源代码;
从源代码中获取资源名称对应的资源路径;
根据资源路径,获取资源文件。
可选地,源代码路径可以为源码工程的地址,资源名称为资源引用的方法名。资源路径可以指资源文件在源码工程中的路径。
例如,源码工程和资源文件可以存储在代码平台上,安装包生成平台通过可以通过源码工程的地址访问源代码的源码工程,并通过扫描源码工程中资源引用的方法名,以对源代码中使用到的本地资源进行检索。在检索到包含资源引用的方法名的代码段(参数)后,获取资源文件的类型、路径和格式。如,通过检索pathForResource(资源路径)对加载的资源文件的参数进行捕获,确定该资源文件是否为图片/音视频/json等格式、以及资源文件所在的本地目录(路径),并根据本地目录获取资源文件。
在实际应用中,由于资源名称和源代码中的参数不匹配、开发人员未及时上传资源文件至相应的资源路径等原因,可能出现根据资源路径获取资源文件失败的情形。例如,在资源文件所在的本地目录中,使用了“${PODS_ROOT}”参数来替代了根目录,导致资源名称和源码工程中的参数取值不一样,无法成功获取资源文件。
可选地,可以基于安装包生成规则,执行步骤根据目标信息,获取资源文件和源代码。安装包生成规则携带有资源名称和源代码路径对应的安装包生成参数。
可选地,在根据资源路径未获取到资源文件时,则可以远程接入开发平台,获取资源文件。具体地,该方法,还包括:
若未获取到资源文件,远程接入代码编写平台;
根据资源名称,遍历代码编写平台的本地存储区域,以获取资源文件。
其中,代码编写平台可以指用于编写源代码的平台。通常,开发人员可以在代码编写平台完成源代码和资源文件编写,并将编写完成的源代码和资源文件发送至代码平台,以便于代码平台进行源代码管理。以此,在未能从源码工程中获取到资源文件时,可以远程接入代码编写平台,获取开发人员保存在代码编写平台本地的资源文件。
例如,代码编写平台可以包括开发人员使用的终端如计算机设备,通过vnc协议远程连接该终端主机(host)地址,通过遍历工程的searchPath(路径)的方式获取本地资源,将其拷贝到DevOps执行的参数列表中(即写入安装包生成规则中)。
可选地,可以基于安装包生成规则,执行步骤若未获取到资源文件,远程接入代码编写平台以及根据资源名称,遍历代码编写平台的本地存储区域,以获取资源文件。
140、对源代码中的目标字段进行标记,得到标记后的字段,目标字段为用于加载资源文件的字段。
其中,目标字段可以为资源的接口函数。资源的接口函数可以为应用提供了更强的访问底层资源的能力,该接口可以拥有对应不同资源类型的实现类。
例如,可以在接口函数的调用入口如入口函数处对其进行标记,以此便于在对源代码的编译过程中识别该接口函数。如,可以在接口函数的调用入口处生成class类名称+访问权限+函数名的标记,以实现对接口函数的标记。以此,被标记的接口函数所在的SDK及其依赖库会在编译过程(这里指在词法分析的分词阶段的SDK库打包的编译过程)中被识别,从而选择用动态链接的方式进行加载。在程序运行的过程中动态链接时该标记是没有用的,只是在SDK及其依赖库进行打包时使用动态链接的方式生成动态库。
可选地,可以基于安装包生成规则,执行步骤对源代码中的目标字段进行标记,得到标记后的字段。
在一些实施方式中,可以根据资源文件中子文件的文件类型进行异步压缩,以充分利用计算资源,提升资源文件压缩效率。具体地,资源文件包括多种文件类型的子文件,根据目标信息,获取资源文件和源代码之后,还包括:
根据子文件的文件类型,对多个子文件进行异步压缩,得到压缩后的资源文件。
其中,子文件的文件类型可以包括图片、音频、视频、文字等资源对应的文件类型。异步压缩可以指通过异步线程对不同种类的子文件进行压缩的过程。
例如,可以创建异步线程,该异步线程可以包括一个主线程和线程池,线程池中包括多个工作线程,主线程获取子文件数据,并向线程池提交压缩请求,以唤醒工作线程1执行压缩请求,同时主线程不断轮询工作线程1是否完成压缩请求。若工作线程完成压缩请求,可以同步通知主线程压缩请求已完成,同时工作线程1自身进入阻塞状态,等待新的请求将其唤醒。主线程在请求执行完成后,通过回调操作调用所有工作线程的运行结果,作为压缩后的资源文件。该压缩后的资源文件与源代码的可执行文件之间动态链接。
可选地,可以使用不同的工作线程对不同的文件类型进行压缩处理。例如,资源文件可以包括图片资源文件和音频资源文件,可以生成针对图像资源文件的压缩请求1和针对音频资源文件的压缩请求2,主线程可以向线程池提交压缩请求1,以唤醒工作线程1执行压缩请求,在工作线程1执行压缩请求1时,可以主线程可以向线程池提交请求2,以唤醒工作线程2执行压缩请求2。
可选地,可以根据遍历子文件的顺序,生成多个压缩请求,并依序发送至工作线程进行处理。例如,当资源文件可以包括n个图片资源文件和m个音频资源文件,可以根据资源文件的文件目录遍历其子文件,当遍历到任一图片资源文件或任一音频资源文件时,可以生成对应该图片资源文件或音频资源文件的压缩请求,并唤醒相应的工作线程执行该压缩请求。
可选地,可以对不同类型的子文件,可以采用不同的压缩算法进行压缩。例如针对PCM(脉冲编码调制)的音视频文件可采用AAC(高级音频编码)的编码方式进行压缩,对于gif图可采用DWT(离散小波变换)算法进行压缩。
150、在对源代码的编译过程中,根据标记后的字段,创建对应资源文件的动态链接,以生成安装包。
其中,编译可以指将源代码编译成可执行文件如a.exe的过程。
其中,动态链接可以指将程序按照模块拆分成各个相对独立的模块,在程序运行时将这些模块链接在一起。
例如,在本申请实施例中,可以将源代码编译成可执行文件如a.exe和资源文件,在对源代码的编译过程中,资源文件(或压缩后的资源文件)所在的SDK会基于标记后的字段生成动态链接文件,如,在源代码编译过程中,可以识别相应标记以提取源代码中标记后的字段,将标记后的字段如接口函数封装为动态库链接文件如动态共享文件(.so为后缀的文件)、动态链接库(以.dll为后缀的文件)等。将该动态库链接文件放在指定目录如新建工程的运行目录下,从而该动态库链接文件会被打包进APK文件(安装包)中。以此通过由标记后的字段生成动态库链接文件,可以实现资源文件与源代码的可执行文件之间的动态链接。通过这种动态链接形式,可以分别、独立执行资源文件的打包和源代码编译过程,以提升处理效率,此外动态链接方式也可以节省内存,充分利用计算资源。
在一些实施方式中,可以将资源文件的逻辑地址转换为内存实际地址,以便于确定资源文件的具体地址,提升安装效率。具体地,在对源代码的编译过程中,根据标记后的字段,创建对应资源文件的动态链接,以生成安装包之后,还包括:
将安装包发送至终端,终端在获取到安装包后,将加载资源文件的逻辑地址转换到内存实际地址。
其中,终端可以为搭载有安装包生成平台的设备,也可以为搭载有安装包生成平台的设备以外的设备。例如,安装包生成平台可以包括生成模块以及运行模块,生成模块可以用于生成安装包,运行模块可以获取生成模块生成的安装包,并通过读取安装包数据,以安装该安装包,以此在软件应用开发项目中,可以在安装包生成平台一体化地生成以及安装相应的应用版本,以便于实现从应用开发至测试的自动化流程,提升开发效率。再如,也可以由安装生成平台将生成的安装包下发至终端,以便于终端在获取到该终端后进行安装。
其中,逻辑地址可以指在有地址变换功能的计算机中,访问指令给出的地址(操作数),逻辑地址可以由页号和页内地址(块内地址)组成,逻辑地址要经过寻址方式的计算或变换才得到内存储器中的物理地址。内存实际地址,即物理地址,可以指进程及其内容放置在主内存或硬盘中的地址,是内存中的内存单元实际地址。
例如,在对安装包的源码进行编译的过程中,由于在资源加载的SDK库中已经生成了对应的动态链接文件,因此可以通过地址翻译器或映射函数将逻辑地址转换为内存实际地址,如地址转换的方法可以为:当逻辑地址为十六进制时,先将地址化为二进制,取前六位为页号。通过对应关系得出块号。真实的物理地址为“块号块内地址”;当逻辑地址为十进制时,页号等于逻辑地址/页面大小,商为页号,通过对应关系得出块号,余数为偏移量。物理地址为“块号*页面大小+偏移量”。
以此,安装生成平台将生成的安装包下发至终端后,终端可以读取安装包中对应源代码的可执行文件,当读取到标记后的字段(接口函数)时,可以将加载资源文件的逻辑地址转换到内存实际地址,通过I/O通道装载到内存中,此时可通过资源文件在内存中的实际地址调用资源文件。
本申请实施例提供的安装包的生成方案可以应用在各种软件应用场景中。比如,以软件应用开发为例,获取安装包生成平台对应的第一任务对象、和代码平台对应的第二任务对象携带的资源指向信息和代码指向信息,资源指向信息为指向资源文件的信息,代码指向信息为指向源代码的信息;通过第二任务对象携带的资源指向信息和代码指向信息,更新第一任务对象携带的信息,得到目标信息;根据目标信息,获取资源文件和源代码;对源代码中的目标字段进行标记,得到标记后的字段,目标字段为用于加载资源文件的字段;在对源代码的编译过程中,根据标记后的字段,创建对应资源文件的动态链接,以生成安装包。
由上可知,本申请实施例在代码平台以及安装包生成平台分别创建第一任务对象和第二任务对象,以这两个任务对象之间进行信息传递,可以实现跨平台通信,并以任务对象传递的信息确定目标信息,对资源文件和源代码进行进一步处理,以跨平台地、自动生成安装包,提升构建安装包的效率,避免产生错漏或重复等问题。此外,通过将资源文件动态链接,可以分别、独立执行资源文件的打包和源代码编译过程,以提升处理效率,此外动态链接方式也可以节省内存,充分利用计算资源。
根据上述实施例所描述的方法,以下将作进一步详细说明。
在本实施例中,将以应用于软件应用开发项目的场景为例,对本申请实施例的方法进行详细说明。
本申请实施例的安装包生成方法可以应用于安装包生成系统,如图2a所示,该系统可以包括代码平台和安装包生成平台,代码平台和安装包生成平台可以集成在同一或不同设备上,该设备可以为终端或服务器。例如,开发人员可以通过代码编写平台完成软件应用某一版本的源代码和资源文件编写,并将编写完成的源代码和资源文件发送至代码平台进行管理。代码平台可以从代码编写平台获取出包指令,并根据出包指令获取打包信息发送至安装包生成平台,可以根据打包信息生成安装包,并下发至终端进行安装。
如图2b所示,一种安装包的生成方法具体流程如下:
210、获取出包指令。
例如,在软件应用开发项目中,开发人员完成一个版本的软件应用的,需求开发或需要发布新版本时。可以在代码编写平台生成预设git命令如预设指令git rebase--hard+某个节点。如图2c所示,可以将该预设git命令发送至代码平台的服务器执行该预设git命令。当开发人员或者脚本文件在代码编写平台执行该预设git命令时,表示基于当前的代码提交需要出包,此时开发人员可将在代码编写平台中编写的源码工程提交只代码平台,源码工程可以包括源代码和资源文件。代码平台可以判断该预设git命令是否为预设的出包指令(即是否命中指令),若是则执行下一步,若否则结束流程或返回告警信息至代码编写平台,以提示开发人员。
220、根据出包指令,确定代码平台对应的第二任务对象。
例如,代码平台可以判断该出包指令是否为任务对象可以为Actor模型对象。Actor模型对象的基础是消息传递,一个Actor模型对象可以认为是一个基本的计算单元,它能接收消息并基于其执行运算,它也可以发送消息给其他Actor模型对象。Actors之间相互隔离,它们之间并不共享内存。本申请实施例通过Actor模型对象处理安装包生成任务,能够提升并发和内存的缓存复用。
例如,代码平台的服务器收到出包指令后,尝试寻找可复用(即处于空闲状态)的Actor模型对象作为第二任务对象,若没有则创建Actor模型对象作为第二任务对象。通过Actor模型对象可以解决高并发问题,如在日常的开发过程中,App1的研发人员有300人,App2的研发人员有500人,这些研发人员会在不同的时间点提交打包命令。每次接收到打包命令后,Actor模型会在各自的线程中传递打包参数(即打包信息),该打包参数一般包括源码工程的地址、打包分支、commit结点、资源信息),当Actor模型处理完毕后会将其状态修改为重用状态(空闲状态),存储在堆栈区,当收到接下来的出包指令后会优先寻找可复用的Actor模型。
230、通过第二任务对象,获取打包信息,并将打包信息发送至安装包生成平台对应的第一任务对象。
例如,代码平台可以通过第二任务对象处理各个开发人员发送的出包指令,并根据出包指令获取打包信息,如图2c所示,代码平台可以通过第二任务对象携带打包参数,并将其携带的打包信息传递至安装包生成平台的第一任务对象。
如图2c所示,Actor模型对象状态信息可以包括新建态、任务态以及复用态等。其中,在新建Actor模型对象时,得到的任务对象的状态信息为新建态,Actor模型对象在执行安装包生成任务为任务态,完成后Actor模型对象的状态信息为复用态。以此,状态信息的空闲状态可以为复用态,占用状态可以为任务态。
240、通过打包信息,更新第一任务对象携带的信息,得到目标信息。
例如,如图2c所示,在安装包生成平台的接收端会内置一个Actor模型对象用于将打包参数进行传递,在Actor内部实现数据传递时并非直接调用Actor的方法,而是把消息传递到对应的MailBox(信箱)里,因此Actor传递完毕后能够很快执行下一次任务。因此不管安装包生成平台的接收端是否支持并发打包,在接收端的Actor都会将打包参数保存在MailBox维护的消息队列中。以此,本申请实施例使用Actor模型对象作为中间桥梁对打包参数进行分发,使传递的消息转换为Actor下的两个进程的通信,使资源信息的传递更迅速。
在第二任务对象将打包参数存储在消息队列中后,如图2c所示,可以从该消息队列中获取消息,对其解析得到打包的初始化构建参数(即构建得到安装包生成规则),对资源信息进行检索、压缩和动态链接以构建安装包。
250、根据目标信息,获取资源文件和源代码。
例如,由于本申请实施例是基于源码执行打包,因此安装包生成平台在出包前可以根据资源的路径检查源码工程中是否包含了该资源(即资源文件)。如图2d所示,可以通过检索源码工程中是否包含相应的资源,如对代码中使用到的本地资源进行检索,其中需要扫描被修改/新增代码对资源引用的方法名,确定资源的类型、路径和格式。如通过检索pathForResource方法对加载的文件参数进行捕获,确定该文件是否为图片/音视频/json等格式,以及文件所在的本地目录。
如图2d所示,若检索到该资源,则可以进行编译分区,若未检索到该资源,则表示开发人员将资源未通过git提交到源码仓库,或在开发人员的源码工程中和远程git源码工程中其参数取值不一样如使用了“${PODS_ROOT}”参数来替代了根目录,因此需要连接开发人员的主机(代码编写平台)进行查找。具体地,可以通过vnc协议远程连接开发人员的主机(host)地址,通过遍历工程的searchPath的方式获取本地资源,将其拷贝到DevOps执行的参数列表中。
260、对源代码中的目标字段进行标记,得到标记后的字段,目标字段为用于加载资源文件的字段。
例如,如图2d所示,安装包生成平台可以将资源的压缩和源码的编译进行分区,对加载资源的接口函数进行标记。
270、在对源代码的编译过程中,根据标记后的字段,创建对应资源文件的动态链接,以生成安装包。
例如,如图2d所示,安装包生成平台可以将被标记的接口函数所在的底层库使用动态链接的方式进行编译,然后利用pthread(POSIX线程)提供的相关函数创建异步线程,执行压缩资源,以由资源文件所在的SDK生成动态链接库。此外,可以根据资源的类型采用对应的压缩算法进行压缩。如针对PCM(脉冲编码调制)的音视频文件可采用AAC(高级音频编码)的编码方式进行压缩,对于gif图可采用DWT(离散小波变换)算法进行压缩。由于在构建安装包时对加载资源函数所在的底层库采用的是动态编译的方式,因此资源文件和底层库是两个相对独立的模块。
280、将安装包发送至终端。
例如,安装生成平台可以将生成的安装包下发至终端,以便于终端在获取到该终端后进行安装。由于资源压缩完成的时间点可能在安装包(即源代码的可执行文件)构建完成后,因此如图2d所示,在终端安装接收到的安装包时,对安装包的源代码进行编译并动态链接至动态链接库时,在动态链接时要将加载资源的函数逻辑地址转换到运行后内存中的实际地址,最后通过I/O通道装载到内存中,此时函数可通过资源在内存中地址进行调用。
现有技术中,在应用的开发过程中,通常需要多次进行安装包的生成。当图片数量较大时,该压缩文件的生成速度较慢,导致安装包生成速度较慢。安装包中的其它类型的资源文件需要各个业务方的开发人员手动打包,在每次版本发布时容易遗漏或重复等错误,例如,软件应用在v1.0版本升级到v1.1版本时,播放器业务模块新增了a.wmv资源、下载模块新增b.jpg资源,在版本发布时都会由各自功能的开发人员进行资源的压缩和打包,并且需要等待各模块新增资源压缩完毕后才能够生成安装包。
为此,本申请实施例使用Actor模型对象作为代码平台和安装包生成平台的中间件能够解决服务器对于打包请求的高并发问题,并且提升对于构建安装包的效率,此外对Actor模型对象进行复用能够节省内存开销。在安装包生成平台生成安装包的过程中,若源码工程中不存在该资源,通过连接开发人员的host(主机)能够保证资源不被遗漏;通过异步压缩文件能够节省文件压缩打包的时间;采用动态链接资源的方式能够将资源和源码编译进行独立操作,以此提升安装包生成效率。
为了更好地实施以上方法,本申请实施例还提供一种安装包的生成装置,该安装包的生成装置具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。
比如,在本实施例中,将以安装包的生成装置具体集成在服务器为例,对本申请实施例的方法进行详细说明。
例如,如图3所示,该安装包的生成装置应用于安装包生成平台,该安装包的生成装置可以包括第一获取单元310、更新单元320、第二获取单元330、标记单元340以及生成单元350,如下:
(一)第一获取单元310
用于获取安装包生成平台对应的第一任务对象、和代码平台对应的第二任务对象携带的资源指向信息和代码指向信息,资源指向信息为指向资源文件的信息,代码指向信息为指向源代码的信息。
(二)更新单元320
用于通过第二任务对象携带的资源指向信息和代码指向信息,更新第一任务对象携带的信息,得到目标信息。
在一些实施方式中,目标信息包括安装包生成规则,更新单元320具体可以用于:
将第二任务对象携带的资源指向信息和代码指向信息写入第一任务对象对应的消息队列,以更新第一任务对象携带的信息;
当写入完成后,将消息队列中的信息作为安装包生成参数,由安装包生成参数构建得到安装包生成规则。
在一些实施方式中,安装包生成平台获取的第一任务对象为空闲状态,更新单元320还可以用于:
在将第二任务对象携带的资源指向信息和代码指向信息写入第一任务对象对应的消息队列时,将第一任务对象从空闲状态调整为占用状态;
在构建得到安装包生成规则后,将第一任务对象从占用状态调整为空闲状态。
(三)第二获取单元330
用于根据目标信息,获取资源文件和源代码。
在一些实施方式中,目标信息包括资源名称和源代码路径,第二获取单元330具体可以用于:
在源代码路径指向的位置,获取源代码;
从源代码中获取资源名称对应的资源路径;
根据资源路径,获取资源文件。
在一些实施方式中,资源文件包括多种文件类型的子文件,第二获取单元330还可以用于:
根据子文件的文件类型,对多个子文件进行异步压缩,得到压缩后的资源文件。
(四)标记单元340
用于对源代码中的目标字段进行标记,得到标记后的字段,目标字段为用于加载资源文件的字段。
(五)生成单元350
用于在对源代码的编译过程中,根据标记后的字段,创建对应资源文件的动态链接,以生成安装包。
在一些实施方式中,生成单元350具体可以用于:
将安装包发送至终端,终端在获取到安装包后,将加载资源文件的逻辑地址转换到内存实际地址。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由此,本申请实施例在代码平台以及安装包生成平台分别创建第一任务对象和第二任务对象,以这两个任务对象之间进行信息传递,可以实现跨平台通信,并以任务对象传递的信息确定目标信息,对资源文件和源代码进行进一步处理,以跨平台地、自动生成安装包,提升构建安装包的效率,避免产生错漏或重复等问题。此外,通过将资源文件动态链接,可以分别、独立执行资源文件的打包和源代码编译过程,以提升处理效率,此外动态链接方式也可以节省内存,充分利用计算资源。
本申请实施例还提供一种电子设备,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑,等等;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群,等等。
在一些实施例中,该安装包的生成装置还可以集成在多个电子设备中,比如,安装包的生成装置可以集成在多个服务器中,由多个服务器来实现本申请的安装包的生成方法。
在本实施例中,将以本实施例的电子设备是服务器为例进行详细描述,比如,如图4所示,其示出了本申请实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器410、一个或一个以上计算机可读存储介质的存储器420、电源430、输入模块440以及通信模块450等部件。本领域技术人员可以理解,图4中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器410是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器420内的数据,执行服务器的各种功能和处理数据。在一些实施例中,处理器410可包括一个或多个处理核心;在一些实施例中,处理器410可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器410中。
存储器420可用于存储软件程序以及模块,处理器410通过运行存储在存储器420的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据SSS的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器420还可以包括存储器控制器,以提供处理器410对存储器420的访问。
服务器还包括给各个部件供电的电源430,在一些实施例中,电源430可以通过电源管理系统与处理器410逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源430还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入模块440,该输入模块440可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
该服务器还可包括通信模块450,在一些实施例中通信模块450可以包括无线模块,服务器可以通过该通信模块450的无线模块进行短距离无线传输,从而为用户提供了无线的宽带互联网访问。比如,该通信模块450可以用于帮助用户收发电子邮件、浏览网页和访问流式媒体等。
尽管未示出,服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,服务器中的处理器410会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器420中,并由处理器410来运行存储在存储器420中的应用程序,从而实现各种功能,如下:
获取安装包生成平台对应的第一任务对象、和代码平台对应的第二任务对象携带的资源指向信息和代码指向信息,资源指向信息为指向资源文件的信息,代码指向信息为指向源代码的信息;通过第二任务对象携带的资源指向信息和代码指向信息,更新第一任务对象携带的信息,得到目标信息;根据目标信息,获取资源文件和源代码;对源代码中的目标字段进行标记,得到标记后的字段,目标字段为用于加载资源文件的字段;在对源代码的编译过程中,根据标记后的字段,创建对应资源文件的动态链接,以生成安装包。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,本申请实施例在代码平台以及安装包生成平台分别创建第一任务对象和第二任务对象,以这两个任务对象之间进行信息传递,可以实现跨平台通信,并以任务对象传递的信息确定目标信息,对资源文件和源代码进行进一步处理,以跨平台地、自动生成安装包,提升构建安装包的效率,避免产生错漏或重复等问题。此外,通过将资源文件动态链接,可以分别、独立执行资源文件的打包和源代码编译过程,以提升处理效率,此外动态链接方式也可以节省内存,充分利用计算资源。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种安装包的生成方法中的步骤。例如,该指令可以执行如下步骤:
获取安装包生成平台对应的第一任务对象、和代码平台对应的第二任务对象携带的资源指向信息和代码指向信息,资源指向信息为指向资源文件的信息,代码指向信息为指向源代码的信息;通过第二任务对象携带的资源指向信息和代码指向信息,更新第一任务对象携带的信息,得到目标信息;根据目标信息,获取资源文件和源代码;对源代码中的目标字段进行标记,得到标记后的字段,目标字段为用于加载资源文件的字段;在对源代码的编译过程中,根据标记后的字段,创建对应资源文件的动态链接,以生成安装包。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机程序/指令,该计算机程序/指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序/指令,处理器执行该计算机程序/指令,使得该计算机设备执行上述实施例中提供各种可选实现方式中提供的方法。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种安装包的生成方法中的步骤,因此,可以实现本申请实施例所提供的任一种安装包的生成方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种安装包的生成方法、装置、服务器、介质和程序产品进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种安装包的生成方法,其特征在于,应用于安装包生成平台,所述方法包括:
获取所述安装包生成平台对应的第一任务对象、和代码平台对应的第二任务对象携带的资源指向信息和代码指向信息,所述资源指向信息为指向资源文件的信息,所述代码指向信息为指向源代码的信息;
通过所述第二任务对象携带的资源指向信息和代码指向信息,更新所述第一任务对象携带的信息,得到目标信息;
根据所述目标信息,获取资源文件和源代码;
对所述源代码中的目标字段进行标记,得到标记后的字段,所述目标字段为用于加载所述资源文件的字段;
在对所述源代码的编译过程中,根据所述标记后的字段,创建对应所述资源文件的动态链接,以生成安装包。
2.如权利要求1所述的安装包的生成方法,其特征在于,所述目标信息包括安装包生成规则,所述通过所述第二任务对象携带的资源指向信息和代码指向信息,更新所述第一任务对象携带的信息,得到目标信息,包括:
将所述第二任务对象携带的资源指向信息和代码指向信息写入所述第一任务对象对应的消息队列,以更新所述第一任务对象携带的信息;
当写入完成后,将所述消息队列中的信息作为安装包生成参数,由所述安装包生成参数构建得到安装包生成规则。
3.如权利要求2所述的安装包的生成方法,其特征在于,所述安装包生成平台获取的所述第一任务对象为空闲状态,所述通过所述第二任务对象携带的资源指向信息和代码指向信息,更新所述第一任务对象携带的信息,得到目标信息,还包括:
在将所述第二任务对象携带的资源指向信息和代码指向信息写入所述第一任务对象对应的消息队列时,将所述第一任务对象从所述空闲状态调整为占用状态;
在构建得到所述安装包生成规则后,将所述第一任务对象从所述占用状态调整为所述空闲状态。
4.如权利要求1所述的安装包的生成方法,其特征在于,所述目标信息包括资源名称和源代码路径,所述根据所述目标信息,获取资源文件和源代码,包括:
在所述源代码路径指向的位置,获取所述源代码;
从所述源代码中获取所述资源名称对应的资源路径;
根据所述资源路径,获取所述资源文件。
5.如权利要求1所述的安装包的生成方法,其特征在于,所述资源文件包括多种文件类型的子文件,所述根据所述目标信息,获取资源文件和源代码之后,还包括:
根据所述子文件的文件类型,对多个所述子文件进行异步压缩,得到压缩后的资源文件。
6.如权利要求1所述的安装包的生成方法,其特征在于,所述在对所述源代码的编译过程中,根据所述标记后的字段,创建对应所述资源文件的动态链接,以生成安装包之后,还包括:
将所述安装包发送至终端,所述终端在获取到所述安装包后,将加载所述资源文件的逻辑地址转换到内存实际地址。
7.一种安装包的生成装置,其特征在于,应用于安装包生成平台,所述装置包括:
第一获取单元,用于获取所述安装包生成平台对应的第一任务对象、和代码平台对应的第二任务对象携带的资源指向信息和代码指向信息,所述资源指向信息为指向资源文件的信息,所述代码指向信息为指向源代码的信息;
更新单元,用于通过所述第二任务对象携带的资源指向信息和代码指向信息,更新所述第一任务对象携带的信息,得到目标信息;
第二获取单元,用于根据所述目标信息,获取资源文件和源代码;
标记单元,用于对所述源代码中的目标字段进行标记,得到标记后的字段,所述目标字段为用于加载所述资源文件的字段;
生成单元,用于在对所述源代码的编译过程中,根据所述标记后的字段,创建对应所述资源文件的动态链接,以生成安装包。
8.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行如权利要求1~6任一项所述的安装包的生成方法中的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1~6任一项所述的安装包的生成方法中的步骤。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现权利要求1~6任一项所述的安装包的生成方法中的步骤。
CN202211461139.7A 2022-11-21 2022-11-21 安装包的生成方法、装置、服务器、介质和程序产品 Pending CN118057306A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211461139.7A CN118057306A (zh) 2022-11-21 2022-11-21 安装包的生成方法、装置、服务器、介质和程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211461139.7A CN118057306A (zh) 2022-11-21 2022-11-21 安装包的生成方法、装置、服务器、介质和程序产品

Publications (1)

Publication Number Publication Date
CN118057306A true CN118057306A (zh) 2024-05-21

Family

ID=91069288

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211461139.7A Pending CN118057306A (zh) 2022-11-21 2022-11-21 安装包的生成方法、装置、服务器、介质和程序产品

Country Status (1)

Country Link
CN (1) CN118057306A (zh)

Similar Documents

Publication Publication Date Title
CN108037961B (zh) 一种应用程序配置方法、装置、服务器和存储介质
US10795660B1 (en) Live code updates
CN109308224B (zh) 跨平台数据通信、跨平台数据处理的方法、装置及系统
US8812627B2 (en) System and method for installation and management of cloud-independent multi-tenant applications
US10853096B2 (en) Container-based language runtime loading an isolated method
WO2018072626A1 (zh) 组件调用的方法和装置、组件数据处理的方法和装置
CN111901294A (zh) 一种构建在线机器学习项目的方法及机器学习系统
CN112698921B (zh) 一种逻辑代码运行方法、装置、计算机设备和存储介质
US20200057654A1 (en) Method and system for mirror image package preparation and application operation
US11321090B2 (en) Serializing and/or deserializing programs with serializable state
US11474796B1 (en) Build system for distributed applications
CN113641413A (zh) 目标模型加载更新方法及装置、可读介质和电子设备
CN115309562A (zh) 算子调用系统、算子生成方法,电子设备
CN112000334A (zh) 页面开发方法、装置、服务器及存储介质
CN111324395B (zh) 调用方法、装置和计算机可读存储介质
US11307839B2 (en) Updating of container-based applications
US12008353B2 (en) Parsing tool for optimizing code for deployment on a serverless platform
CN118057306A (zh) 安装包的生成方法、装置、服务器、介质和程序产品
CN114637499A (zh) 可视化组件处理方法、装置、设备及介质
US9720660B2 (en) Binary interface instrumentation
CN114816445A (zh) 系统平台架构、函数发布方法及装置、平台及存储介质
US20230280922A1 (en) Methods and apparatus to deduplicate duplicate memory in a cloud computing environment
CN117459591A (zh) 请求消息的处理方法、装置、设备及存储介质
CN116204749A (zh) 页面加载方法、装置、电子设备及存储介质
CN117632152A (zh) 用于前端项目的项目部署方法及装置、晋级方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication