CN116775001A - 处理应用程序的方法、装置、电子设备和存储介质 - Google Patents

处理应用程序的方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN116775001A
CN116775001A CN202310777294.8A CN202310777294A CN116775001A CN 116775001 A CN116775001 A CN 116775001A CN 202310777294 A CN202310777294 A CN 202310777294A CN 116775001 A CN116775001 A CN 116775001A
Authority
CN
China
Prior art keywords
application
host application
information
hosted
host
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
CN202310777294.8A
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.)
Beijing Zitiao Network Technology Co Ltd
Original Assignee
Beijing Zitiao Network Technology 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 Beijing Zitiao Network Technology Co Ltd filed Critical Beijing Zitiao Network Technology Co Ltd
Priority to CN202310777294.8A priority Critical patent/CN116775001A/zh
Publication of CN116775001A publication Critical patent/CN116775001A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

提供了一种处理应用程序的方法、装置、电子设备和存储介质,通过获取宿主应用的宿主应用数据,宿主应用数据包括宿主应用程序包和宿主应用信息,基于宿主应用信息和寄宿应用的代码构建寄宿应用数据,并基于宿主应用程序包和寄宿应用数据生成目标应用,从而可以在不提供宿主应用的源代码的情况下实现宿主应用和寄宿应用的融合,融合后的目标应用能够集成宿主应用和目标应用的业务能力。

Description

处理应用程序的方法、装置、电子设备和存储介质
技术领域
本公开涉及计算机技术领域,具体涉及一种处理应用程序的方法、装置、电子设备和存储介质。
背景技术
一些企业客户对应用程序存在定制化需求,其需要在软件开发商开发的基础应用中添加额外的定制化功能模块。通常,在一些软件服务SDK(Software Development Kit,软件开发工具包)集成开发的场景之中,企业客户需要向软件开发商提供该企业客户自身开发的或由其他第三方企业服务商开发的SDK或相应的源代码,以使软件开发商能够基于该SDK或源代码对自身的基础应用程序进行二次开发,从而使该基础应用程序能够集成客户需求的定制化功能。然而,在一些情况下,向其他企业提供SDK或源代码是不可行的,类似地,亦难以要求软件开发商反过来向客户提供相关基础应用的源代码,从而使相关应用程序与定制化功能的集成变得难以实现。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
第一方面,根据本公开的一个或多个实施例,提供了一种处理应用程序的方法,包括:
获取宿主应用的宿主应用数据,所述宿主应用数据包括宿主应用程序包和宿主应用信息;其中,所述宿主应用信息包括与所述宿主应用关联的依赖信息、配置信息和编译中间产物信息;
基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据;
基于所述宿主应用程序包和所述寄宿应用数据生成目标应用。
第二方面,根据本公开的一个或多个实施例,提供了一种处理应用程序的装置,包括:
获取单元,用于获取宿主应用的宿主应用数据,所述宿主应用数据包括宿主应用程序包和宿主应用信息;其中,所述宿主应用信息包括与所述宿主应用关联的依赖信息、配置信息和编译中间产物信息;
构建单元,用于基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据;
生成单元,用于基于所述宿主应用程序包和所述寄宿应用数据生成目标应用。
第三方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个存储器和至少一个处理器;其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器所存储的程序代码以使所述电子设备执行根据本公开的一个或多个实施例提供的处理应用程序的方法。
第四方面,根据本公开的一个或多个实施例,提供了一种非暂态计算机存储介质,所述非暂态计算机存储介质存储有程序代码,所述程序代码被计算机设备执行时,使得所述计算机设备执行根据本公开的一个或多个实施例提供的处理应用程序的方法。
根据本公开的一个或多个实施,通过获取宿主应用的宿主应用数据,宿主应用数据包括宿主应用程序包和宿主应用信息,基于宿主应用信息和寄宿应用的代码构建寄宿应用数据,并基于宿主应用程序包和寄宿应用数据生成目标应用,从而可以在不提供宿主应用的源代码的情况下实现宿主应用和寄宿应用的融合,融合后的目标应用能够集成宿主应用和目标应用的业务能力。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1为根据本公开一实施例提供的处理应用程序的方法的流程图;
图2为根据本公开另一实施例提供的处理应用程序的方法的流程图;
图3为根据本公开又一实施例提供的处理应用程序的方法的流程图;
图4为根据本公开一实施例提供的基于宿主应用和寄宿应用生成目标应用的示意图;
图5为根据本公开一实施例提供的处理应用程序的装置的结构示意图;
图6为根据本公开一实施例提供的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的实施方式中记载的步骤可以按照不同的顺序执行,和/或并行执行。此外,实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。术语“响应于”以及有关的术语是指一个信号或事件被另一个信号或事件影响到某个程度,但不一定是完全地或直接地受到影响。如果事件x“响应于”事件y而发生,则x可以直接或间接地响应于y。例如,y的出现最终可能导致x的出现,但可能存在其它中间事件和/或条件。在其它情形中,y可能不一定导致x的出现,并且即使y尚未发生,x也可能发生。此外,术语“响应于”还可以意味着“至少部分地响应于”。
术语“确定”广泛涵盖各种各样的动作,可包括获取、演算、计算、处理、推导、调研、查找(例如,在表、数据库或其他数据结构中查找)、探明、和类似动作,还可包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)和类似动作,还可包括接收生成、创建、建立和类似动作,以及解析、选择、选取和类似动作等等。其他术语的相关定义将在下文描述中给出。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
为了本公开的目的,短语“A和/或B”意为(A)、(B)或(A和B)。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
参考图1,其示出了本公开一实施例提供的处理应用程序的方法,包括步骤S110-步骤S130。
步骤S110:获取宿主应用的宿主应用数据,所述宿主应用数据包括宿主应用程序包和宿主应用信息;其中,所述宿主应用信息包括与所述宿主应用关联的依赖信息、配置信息和编译中间产物信息。
在一些实施例中,宿主应用程序包括可以包括宿主应用的安装文件。示例性地,宿主应用程序包括可以包括宿主应用的通用安装文件或为某一客户定制的定制化安装文件,本公开在此不做限制。在一个具体实施方式中,宿主应用程序包为二进制数据。
在一些实施例中,所述依赖信息用于描述项目所依赖的对象(例如三方库)的信息,包括但不限于所依赖的对象的数量、名称和版本。在一个具体实施方式中,依赖信息可以包括用于描述项目依赖的第三方库的通用依赖信息、或描述项目的目标的依赖关系的规范。在本实施例中,通过使宿主应用信息包含所述依赖信息,可以防止宿主应用的依赖与寄宿应用的依赖之间存在冲突,还可用于寄宿应用的依赖构建。
在一些实施例中,所述配置信息可以包括应用开发工具的版本信息。示例性地,配置信息可以包括Xcode版本信息、模板工程信息,其中模板工程信息可以包括编译环境、融合工具的版本信息。在本实施例中,通过使宿主应用信息包含所述配置信息,可以防止宿主应用与寄宿应用之间的存在开发工具冲突。
在一些实施例中,编译中间产物信息用于记录宿主应用程序包资源的信息的产物,或用于执行符号冲突检测的符号信息。在一个具体实施方式中,编译中间产物信息可以包括插件化的配置资源,其可包括用于实现插件形式集成所需的信息。在一个具体实施方式中,符号信息可以包括符号表,其是一种内存地址与函数名、文件名、行号的映射表。在本实施例中,通过使宿主应用信息包含所述编译中间产物信息,可以防止宿主应用的与寄宿应用之间存在资源冲突或符号冲突。
在一些实施例中,宿主应用数据不包含宿主应用的源代码。在实际应用场景中,软件定制者仅需从软件开发者处获取宿主应用程序包和相关宿主应用信息,而无需获取宿主应用的源代码。
步骤S120:基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据。
在一些实施例中,寄宿应用的代码可以为用于实现特定业务逻辑的代码。在实际应用场景中,宿主应用数据可以由软件开发者提供,而寄宿应用的代码可以由定制软件开发服务的软件定制者准备。在前述应用场景中,软件开发者可以通过诸如私有链接等非公开途径向软件定制者提供宿主应用数据和用于执行上述步骤100的服务,软件定制者可以基于该宿主应用数据和自身开发的寄宿应用的代码,通过该服务完成寄宿应用数据的构建以及目标应用的生成。在一个具体实施方式中,软件定制者可以获取由软件开发者在诸如软件运营服务侧(Software as a Service,SaaS)通过自动触发或手动触发的构建流程得到的宿主应用关联的依赖信息、配置信息。
在一个具体实施方式中,例如在安卓平台中,可以基于与宿主应用关联的编译中间产物信息来执行对寄宿应用的代码的编译构建,并指定寄宿应用到的资源属性。在本实施例中,通过基于与宿主应用关联的编译中间产物信息指定寄宿应用的资源属性,可以防止后续寄宿应用和宿主应用合并时产生资源冲突。
在一个具体实施方式中,例如在iOS平台中,可以基于宿主应用的依赖信息,确定宿主应用与寄宿应用的公共依赖组件(即宿主应用和寄宿应用均依赖的组件),对所确定的公共依赖组件进行动态库编译配置,并基于所述公共依赖组件的动态编译配置完成寄宿应用的编译流程,从而可以得到寄宿应用的Framework产物。在一些实施例中,寄宿应用数据可以为寄宿应用的应用程序包,例如寄宿应用的安装文件。
步骤S130:基于所述宿主应用程序包和所述寄宿应用数据生成目标应用。
在一些实施例中,可以对合并后的目标应用的文件执行压缩、字节码对齐、签名等操作,以得到最终的目标应用的安装文件。
在一些实施例中,前述方法可以在私有化环境下执行,从而可以在例如软件定制者自身控制的、外部无法访问的数据存储空间内实现相关数据的下载、寄宿应用数据的构建以及目标应用的生成。
这样,根据本公开的一个或多个实施,通过获取宿主应用的宿主应用数据,宿主应用数据包括宿主应用程序包和宿主应用信息,基于宿主应用信息和寄宿应用的代码构建寄宿应用数据,并基于宿主应用程序包和寄宿应用数据生成目标应用,从而可以在不提供宿主应用的源代码的情况下实现宿主应用和寄宿应用的融合,融合后的目标应用能够集成宿主应用和目标应用的业务能力。根据本公开的实施例,在实际用于场景中,软件开发者仅需向软件定制者提供二进制的宿主应用程序包和相关宿主应用信息,而无需提供宿主应用的源代码,软件定制者可以根据该宿主应用数据中的宿主应用信息以及寄宿应用的代码构建寄宿应用数据,并对构建的寄宿应用数据与宿主应用数据中的宿主应用程序包执行融合操作以得到目标应用,从而软件定制者无需向软件开发者提供用于执行某些定制化业务逻辑的SDK或源代码,同样,软件开发者亦无需向软件定制者提供相关应用的源代码。
在一些实施例中,所述寄宿应用数据包含目标文件,宿主应用程序包包含与所述目标文件对应的同名空文件;步骤S130进一步包括:在所述宿主应用程序包中基于所述目标文件替换所述同名空文件。
示例性地,目标文件可以包括框架文件(Framework)。参考图4,以iOS平台为例,可以预先在宿主应用程序包中预埋可替换的Framework1、Framework2和Framework3空文件,并将寄宿应用数据中的Framework1、Framework2和Framework3文件,替换前述预埋的同名空文件,从而实现宿主应用程序包和寄宿应用数据的融合。
在一些实施例中,生成寄宿应用的目标文件的步骤包括:基于宿主应用的依赖信息,确定宿主应用与寄宿应用的公共依赖组件(即宿主应用和寄宿应用均依赖的组件),对所确定的公共依赖组件进行动态库编译配置,并基于所述公共依赖组件的动态编译配置完成寄宿应用的编译流程,从而可以得到目标文件(例如Framework文件)。
在一些实施例中,在执行步骤S130之前,方法100还包括:基于所述宿主应用信息和所述寄宿应用数据执行冲突检测任务。
其中,冲突检测任务用于检测宿主应用和寄宿应用在运行时可能存在的出冲突,包括但不限于二者所引用或依赖的对象的版本冲突(包括版本不一致)和符号冲突。
在一个具体实施方式中,若所述宿主应用信息包括所述依赖信息,则可以基于所述依赖信息检测所述宿主应用数据和所述寄宿应用数据所依赖的对象(例如组件)的版本信息是否存在冲突。示例性地,如果存在版本信息冲突,则可以强制约束宿主应用和寄宿应用所依赖的组件的版本一致。例如,若宿主应用依赖组件A的2.0版本,而寄宿应用依赖组件A的1.0版本,则可以强制约束寄宿应用依赖组件A的1.0版本,从而使宿主应用和寄宿应用所依赖的组件版本进行对齐,防止应用调用组件时出现错误。
在一个具体实施方式中,若所述编译中间产物信息包括符号信息,则可以基于所述符号信息检测所述宿主应用数据和所述寄宿应用数据所采用符号是否存在冲突。示例性地,所述符号信息可以包括符号表。参考图4,以iOS平台为例,在采用寄宿应用的Framework文件替换宿主应用的Framework空文件之前,还可以获取宿主应用的符号信息,并基于该符号信息对寄宿应用的Framework文件进行符号冲突检测。
参考图2,其示出了本公开一实施例提供的处理应用程序的方法,包括步骤S201-步骤S204:
步骤S201:获取宿主应用的宿主应用数据;所述宿主应用数据包括宿主应用程序包和宿主应用信息;其中,所述宿主应用信息包括与所述宿主应用关联的依赖信息、配置信息和编译中间产物信息;
步骤S202:基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据;
步骤S203:基于所述宿主应用信息和所述寄宿应用数据执行冲突检测任务;
步骤S204:基于所述宿主应用程序包和所述寄宿应用数据生成目标应用。
在一些实施例中,步骤S120包括:
基于所述依赖信息确定所述寄宿应用的依赖关系。
在一个具体实施方式中,可以检查寄宿应用的依赖关系,具体可以检测寄宿应用所依赖的对象(例如三方库、组件)的版本信息是否与宿主应用所依赖的对象的版本信息(例如版本号)是否存在冲突,以提醒用户对存在冲突的版本信息进行修改。进一步的,在检查寄宿应用的依赖关系后,可以基于宿主应用的依赖信息强制替换存在冲突的版本信息。
在一些实施例中,还可以确定所述宿主应用和所述寄宿应用之间的公共依赖对象,并在构建所述寄宿应用数据时,对所述公共依赖对象执行去重操作。在本实施例中,在构建寄宿应用数据的过程中,针对寄宿应用与宿主和应用共同的依赖对象(即公共依赖)执行去重操作,将公共依赖从宿主应用的编译中剔除,避免宿主应用和寄宿应用之间存在的重复代码。
在一些实施例中,步骤S130包括:基于所述寄宿应用数据修改所述宿主应用程序包内的文件。示例性地,可以对宿主应用程序包进行解压缩,并基于寄宿应用数据修改宿主应用程序包内的清单文件(manifest.xml)、资源文件(resource.arsc)和代码文件(dex),以完成寄宿应用和宿主应用的融合。
参考图3,其示出了本公开一实施例提供的处理应用程序的方法,包括步骤S301-步骤S307:
在步骤S301中,获取宿主应用的依赖信息。
在步骤S302中,检查寄宿应用的依赖关系。具体地,可以检测寄宿应用所依赖的对象(例如三方库)的版本信息是否与宿主应用所依赖的对象的版本信息(例如版本号)是否存在冲突,以提醒用户对存在冲突的版本信息进行修改。
在步骤S303中,基于宿主应用的依赖信息更新寄宿应用的依赖信息。例如,可以基于宿主应用依赖的对象的版本信息,替换与其存在冲突的寄宿应用依赖的对象的版本信息。
在步骤S304中,获取宿主应用的程序包、编译中间产物信息和资源信息。其中,资源信息可以包括签名信息。
在步骤S305中,基于宿主应用的编译中间产物信息对寄宿应用的代码进行编译构建。
在步骤S306中,融合宿主应用和寄宿应用。具体地,可以基于所述寄宿应用数据修改所述宿主应用程序包内的文件,例如清单文件、资源文件和代码文件等。
在步骤S307中,可以针对融合后的应用文件进行压缩和签名操作。
根据本公开的一个或多个实施例,在实际应用场景中,软件开发者仅需向应用定制者提供二进制宿主应用数据,本公开实施例提供的上述方法的执行主体可以基于宿主应用数据对定制者自身开发的寄宿应用的代码进行编译构建,得到寄宿应用并将其与宿主应用进行融合,以最终得到目标应用,上述过程可以在定制者控制的私有化环境完成,因此,本公开提供了一种针对客户定制化需求的私有离线化、动态化集成解决方案,以及针对安装包、组件二进制产物融合的技术方案。
相应地,参考图5,根据本公开的一实施例提供了一种处理应用程序的装置400,包括:
获取单元401,用于获取宿主应用的宿主应用数据,所述宿主应用数据包括宿主应用程序包和宿主应用信息;其中,所述宿主应用信息包括与所述宿主应用关联的依赖信息、配置信息和编译中间产物信息;
构建单元402,用于基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据;
生成单元403,用于基于所述宿主应用程序包和所述寄宿应用数据生成目标应用。
在一些实施例中,所述宿主应用程序包为二进制数据。
在一些实施例中,所述装置在私有化环境下运行。
在一些实施例中,所述装置还包括:
冲突检测单元,用于基于所述宿主应用信息和所述寄宿应用数据执行冲突检测任务。
在一些实施例中,所述冲突检测单元,用于基于所述依赖信息检测所述宿主应用和所述寄宿应用所依赖的对象的版本信息是否存在冲突,和/或,基于所述编译中间产物信息中的符号信息检测所述宿主应用和所述寄宿应用所采用符号是否存在冲突。
在一些实施例中,所述构建单元,包括:
依赖构建子单元,用于基于所述依赖信息确定所述寄宿应用的依赖关系。
在一些实施例中,所述装置还包括:
公共依赖确定单元,用于确定所述宿主应用和所述寄宿应用之间的公共依赖对象;
所述构建单元包括:
去重单元,用于在构建所述寄宿应用数据时,对所述公共依赖对象执行去重操作。
在一些实施例中,所述寄宿应用数据包含目标文件,所述宿主应用程序包包含与所述目标文件对应的同名空文件;
所述生成单元用于在所述宿主应用程序包中基于所述目标文件替换所述同名空文件。
在一些实施例中,所述生成单元用于基于所述寄宿应用数据修改所述宿主应用程序包内的文件。
在一些实施例中,所述宿主应用程序包内的文件包括如下中的一个或多个:清单文件、资源文件、代码文件。
对于装置的实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离模块说明的模块可以是或者也可以不是分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应地,根据本公开的一个或多个实施例,提供了一种电子设备,包括:
至少一个存储器和至少一个处理器;
其中,存储器用于存储程序代码,处理器用于调用存储器所存储的程序代码以使所述电子设备执行根据本公开一个或多个实施例提供的处理应用程序的方法。
相应地,根据本公开的一个或多个实施例,提供了一种非暂态计算机存储介质,非暂态计算机存储介质存储有程序代码,程序代码可被计算机设备执行来使得所述计算机设备执行根据本公开一个或多个实施例提供的处理应用程序的方法。
下面参考图6,其示出了适于用来实现本公开实施例的电子设备800(例如终端设备或服务器)的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备800可以包括处理装置(例如中央处理器、图形处理器等)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储装置808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM803中,还存储有电子设备800操作所需的各种程序和数据。处理装置801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
通常,以下装置可以连接至I/O接口805:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置806;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置807;包括例如磁带、硬盘等的存储装置808;以及通信装置809。通信装置809可以允许电子设备800与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备800,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置809从网络上被下载和安装,或者从存储装置808被安装,或者从ROM 802被安装。在该计算机程序被处理装置801执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述的本公开的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,提供了一种处理应用程序的方法,包括:获取宿主应用的宿主应用数据,所述宿主应用数据包括宿主应用程序包和宿主应用信息;其中,所述宿主应用信息包括与所述宿主应用关联的依赖信息、配置信息和编译中间产物信息;基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据;基于所述宿主应用程序包和所述寄宿应用数据生成目标应用。
根据本公开的一个或多个实施例,所述宿主应用程序包为二进制数据。
根据本公开的一个或多个实施例,所述方法在私有化环境下执行。
根据本公开的一个或多个实施例提供的方法,在所述基于所述宿主应用程序包和所述寄宿应用数据生成目标应用之前,还包括:基于所述宿主应用信息和所述寄宿应用数据执行冲突检测任务。
根据本公开的一个或多个实施例,所述基于所述宿主应用信息和所述寄宿应用数据执行冲突检测任务,包括:基于所述依赖信息检测所述宿主应用和所述寄宿应用所依赖的对象的版本信息是否存在冲突;和/或,基于所述编译中间产物信息中的符号信息检测所述宿主应用和所述寄宿应用所采用符号是否存在冲突。
根据本公开的一个或多个实施例,所述基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据,包括:基于所述依赖信息确定所述寄宿应用的依赖关系。
根据本公开的一个或多个实施例提供的方法,还包括:确定所述宿主应用和所述寄宿应用之间的公共依赖对象;所述基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据,包括:在构建所述寄宿应用数据时,对所述公共依赖对象执行去重操作。
根据本公开的一个或多个实施例,所述寄宿应用数据包含目标文件,所述宿主应用程序包包含与所述目标文件对应的同名空文件;所述基于所述宿主应用程序包和所述寄宿应用数据生成目标应用,包括:在所述宿主应用程序包中基于所述目标文件替换所述同名空文件。
根据本公开的一个或多个实施例,所述基于所述宿主应用程序包和所述寄宿应用数据生成目标应用,包括:基于所述寄宿应用数据修改所述宿主应用程序包内的文件。
根据本公开的一个或多个实施例,所述宿主应用程序包内的文件包括如下中的一个或多个:清单文件、资源文件、代码文件。
根据本公开的一个或多个实施例,提供了一种处理应用程序的装置,其特征在于,包括:获取单元,用于获取宿主应用的宿主应用数据,所述宿主应用数据包括宿主应用程序包和宿主应用信息,其中,所述宿主应用信息包括与所述宿主应用关联的依赖信息、配置信息和编译中间产物信息;构建单元,用于基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据;生成单元,用于基于所述宿主应用程序包和所述寄宿应用数据生成目标应用。
根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个存储器和至少一个处理器;其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器所存储的程序代码以使所述电子设备执行根据本公开的一个或多个实施例提供的处理应用程序的方法。
根据本公开的一个或多个实施例,提供了一种非暂态计算机存储介质,所述非暂态计算机存储介质存储有程序代码,所述程序代码被计算机设备执行时,使得所述计算机设备执行根据本公开的一个或多个实施例提供的处理应用程序的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (13)

1.一种处理应用程序的方法,其特征在于,包括:
获取宿主应用的宿主应用数据,所述宿主应用数据包括宿主应用程序包和宿主应用信息;其中,所述宿主应用信息包括与所述宿主应用关联的依赖信息、配置信息和编译中间产物信息;
基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据;
基于所述宿主应用程序包和所述寄宿应用数据生成目标应用。
2.根据权利要求1所述的方法,其特征在于,所述宿主应用程序包为二进制数据。
3.根据权利要求1所述的方法,其特征在于,所述方法在私有化环境下执行。
4.根据权利要求1所述的方法,其特征在于,在所述基于所述宿主应用程序包和所述寄宿应用数据生成目标应用之前,还包括:
基于所述宿主应用信息和所述寄宿应用数据执行冲突检测任务。
5.根据权利要求4所述的方法,其特征在于,所述基于所述宿主应用信息和所述寄宿应用数据执行冲突检测任务,包括:
基于所述依赖信息检测所述宿主应用和所述寄宿应用所依赖的对象的版本信息是否存在冲突;和/或,
基于所述编译中间产物信息中的符号信息检测所述宿主应用和所述寄宿应用所采用符号是否存在冲突。
6.根据权利要求1所述的方法,其特征在于,所述基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据,包括:
基于所述依赖信息确定所述寄宿应用的依赖关系。
7.根据权利要求1所述的方法,其特征在于,还包括:确定所述宿主应用和所述寄宿应用之间的公共依赖对象;
所述基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据,包括:在构建所述寄宿应用数据时,对所述公共依赖对象执行去重操作。
8.根据权利要求1所述的方法,其特征在于,所述寄宿应用数据包含目标文件,所述宿主应用程序包包含与所述目标文件对应的同名空文件;
所述基于所述宿主应用程序包和所述寄宿应用数据生成目标应用,包括:在所述宿主应用程序包中基于所述目标文件替换所述同名空文件。
9.根据权利要求1所述的方法,其特征在于,所述基于所述宿主应用程序包和所述寄宿应用数据生成目标应用,包括:
基于所述寄宿应用数据修改所述宿主应用程序包内的文件。
10.根据权利要求9所述的方法,其特征在于,所述宿主应用程序包内的文件包括如下中的一个或多个:
清单文件、资源文件、代码文件。
11.一种处理应用程序的装置,其特征在于,包括:
获取单元,用于获取宿主应用的宿主应用数据,所述宿主应用数据包括宿主应用程序包和宿主应用信息;其中,所述宿主应用信息包括与所述宿主应用关联的依赖信息、配置信息和编译中间产物信息;
构建单元,用于基于所述宿主应用信息和寄宿应用的代码构建寄宿应用数据;
生成单元,用于基于所述宿主应用程序包和所述寄宿应用数据生成目标应用。
12.一种电子设备,其特征在于,包括:
至少一个存储器和至少一个处理器;
其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器所存储的程序代码以使所述电子设备执行权利要求1至10中任一项所述的方法。
13.一种非暂态计算机存储介质,其特征在于,
所述非暂态计算机存储介质存储有程序代码,所述程序代码被计算机设备执行时,使得所述计算机设备执行权利要求1至10中任一项所述的方法。
CN202310777294.8A 2023-06-28 2023-06-28 处理应用程序的方法、装置、电子设备和存储介质 Pending CN116775001A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310777294.8A CN116775001A (zh) 2023-06-28 2023-06-28 处理应用程序的方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310777294.8A CN116775001A (zh) 2023-06-28 2023-06-28 处理应用程序的方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN116775001A true CN116775001A (zh) 2023-09-19

Family

ID=87989272

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310777294.8A Pending CN116775001A (zh) 2023-06-28 2023-06-28 处理应用程序的方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN116775001A (zh)

Similar Documents

Publication Publication Date Title
CN110502222B (zh) 外发依赖内部基础库的aar方法、装置、介质和设备
CN111291103B (zh) 接口数据的解析方法、装置、电子设备及存储介质
CN112214408B (zh) 依赖冲突检测方法、装置、电子设备及计算机可读介质
CN110851139B (zh) 用于检查代码的方法、装置和电子设备
CN111857720B (zh) 用户界面状态信息的生成方法、装置、电子设备及介质
CN113407165B (zh) Sdk的生成和自升级方法、装置、可读介质和设备
CN111625291A (zh) 数据处理模型自动迭代方法、装置及电子设备
CN111752644A (zh) 接口模拟方法、装置、设备及存储介质
CN112422648B (zh) 数据同步方法和系统
CN112379967B (zh) 模拟器检测方法、装置、设备及介质
CN116775001A (zh) 处理应用程序的方法、装置、电子设备和存储介质
CN111460020B (zh) 用于解析消息的方法、装置、电子设备和介质
CN113656050B (zh) 用于生成版本号的方法和装置
CN112487416A (zh) 业务流程的校验方法、装置和电子设备
CN113704079A (zh) 基于Protobuf的接口测试方法和装置
CN111367555B (zh) 断言的方法、装置、电子设备及计算机可读介质
CN111897827B (zh) 用于数据仓库的数据更新方法、系统及电子设备
CN117609077A (zh) 一种配置参数的复核方法、装置、电子设备和存储介质
CN113448550B (zh) 实现类的收集管理方法、装置、电子设备及计算机介质
CN112688863B (zh) 网关数据处理方法、装置及电子设备
CN111796802B (zh) 功能包生成方法、装置和电子设备
CN111625232B (zh) 应用程序安装包的生成方法、装置、可读介质和电子设备
CN116594630A (zh) 文件生成方法、装置、介质及电子设备
CN117472425A (zh) 资源处理方法、装置、可读介质及电子设备
CN117648117A (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