CN113434213B - 一种终端的程序运行方法以及装置 - Google Patents
一种终端的程序运行方法以及装置 Download PDFInfo
- Publication number
- CN113434213B CN113434213B CN202110715204.3A CN202110715204A CN113434213B CN 113434213 B CN113434213 B CN 113434213B CN 202110715204 A CN202110715204 A CN 202110715204A CN 113434213 B CN113434213 B CN 113434213B
- Authority
- CN
- China
- Prior art keywords
- program
- run
- program execution
- execution module
- identifier
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开一种终端的程序运行方法,该方法包括:获取程序运行请求;响应于所述程序运行请求,获取所述终端的操作系统版本信息;根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块;根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。本申请实现了不仅可以保证同一版本的程序代码能够在不同的操作系统下兼容运行,还提高了程序代码在各种操作系统下运行的效率以及降低了程序代码开发维护的成本,达到了提高用户体验的效果。
Description
技术领域
本申请涉及操作系统技术领域,尤其涉及一种终端的程序运行方法、装置。
背景技术
在Windows系统中,为了保证旧版本的软件能够在新系统下运行,引入了兼容系统模式。兼容系统模式可兼容比客户端自身系统版本更低的版本正常运行程序。软件版本间虽然微软做了一些兼容,但是仍然存在很多兼容性问题。例如,实际使用中,发现如果运行环境版本与编译环境版本不同的时候,有些功能使用会出现崩溃等问题,如ResetDC,win7环境编译以后,在win10环境运行,经过大量的运行后,总会发现一些会导致崩溃的数据,win10编译,win7运行也是同理,只是崩溃的数据不同。只有win10编译在win10使用,win7编译在win7使用,才不会出现这个状况。
目前,当代码中需要加入新系统才能支持的功能的时候,为了能够实现在兼容老系统的同时,还实现新功能,现有技术中通常采用人工分别针对不同的系统分别撰写单独限定运行环境的代码,这样,会出现需要人工为不同的操作系统环境而维护多套整体或者粗粒度模块代码的情况,从而导致每次需要修改没有兼容问题的代码内容时,都需要人工对多份代码进行修改。
而采用人工分别针对不同的操作系统分别撰写单独限定运行环境的代码的方式,以及操作系统环境的差异导致api本身有差异的时候,以及现有的框架往往难以灵活的解耦,就算解耦以后,也无法灵活的调用不同的版本,无法彻底解耦会导致当代码需要人工为不同的操作系统环境而维护多套的时候,没有版本差异的代码也在维护多套的范围内;这部分代码的后续维护;会导致出现人工为不同的操作系统环境而分别开发、维护多套代码的情况,会导致无法灵活调用不同版本,需要额外的复杂的操作来适配不同的环境,会导致部署和管理的难度增加,会导致在编写或修改多份整体或者粗粒度模块代码的过程中耗时费力且效率低下,并且容易出现由于人工操作错误所导致的代码编写错误,以及提高了代码的开发维护成本的问题。因此,亟需一种新的能够实现软件兼容的终端的程序运行方案。
发明内容
本申请提供一种终端的程序运行方法,以可以不仅可以保证同一版本的程序代码能够在不同的操作系统下兼容运行,还提高了程序代码在各种操作系统下运行的效率以及降低了程序代码开发维护的成本,达到了提高用户体验的效果。
第一方面,本申请提供了一种终端的程序运行方法,所述方法应用于终端,所述方法包括:
获取程序运行请求,其中,所述程序运行请求包括待运行程序标识;
响应于所述程序运行请求,获取所述终端的操作系统版本信息;
根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块;
根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。
可选的,所述响应于所述程序运行请求,获取所述终端的操作系统版本信息,包括:
响应于所述程序运行请求,利用RtlGetVersion函数获取所述终端的操作系统版本信息。
可选的,所述终端存储有预设的程序执行模块集,其中,所述预设的程序执行模块集包括所述待运行程序标识在不同操作系统版本信息下所分别对应的程序执行模块;所述根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块,包括:
在所述预设的程序执行模块集中,查询与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块;
将所述与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块作为所述待运行程序标识对应的目标程序执行模块。
可选的,所述终端存储有程序执行模块的存储信息集,其中,所述程序执行模块的存储信息集包括各个程序执行模块各自分别对应的存储信息;所述根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序,包括:
在所述程序执行模块的存储信息集中,查询所述目标程序执行模块的存储信息;
根据所述目标程序执行模块的存储信息,定位所述目标程序执行模块;
调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。
可选的,所述终端的操作系统版本信息包括主版本号、副版本号、创建号和操作系统位数。
可选的,所述目标程序执行模块包括以下至少一种:可执行文件、动态链接库。
可选的,在所述根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块之前,所述方法还包括:
对所述程序运行指令进行解析,得到所述待运行程序标识。
第二方面,本申请提供了一种终端的程序运行装置,所述装置应用于终端,所述装置包括:
请求获取单元,用于获取程序运行请求,其中,所述程序运行请求包括待运行程序标识;
信息获取单元,用于响应于所述程序运行请求,获取所述终端的操作系统版本信息;
模块确定单元,用于根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块;
模块调用单元,用于根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。
可选的,所述信息获取单元,具体用于:
响应于所述程序运行请求,利用RtlGetVersion函数获取所述终端的操作系统版本信息。
可选的,所述终端存储有预设的程序执行模块集,其中,所述预设的程序执行模块集包括所述待运行程序标识在不同操作系统版本信息下所分别对应的程序执行模块;所述模块确定单元,具体用于:
在所述预设的程序执行模块集中,查询与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块;
将所述与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块作为所述待运行程序标识对应的目标程序执行模块。
可选的,所述终端存储有程序执行模块的存储信息集,其中,所述程序执行模块的存储信息集包括各个程序执行模块各自分别对应的存储信息;所述模块调用单元,具体用于:
在所述程序执行模块的存储信息集中,查询所述目标程序执行模块的存储信息;
根据所述目标程序执行模块的存储信息,定位所述目标程序执行模块;
调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。
可选的,所述终端的操作系统版本信息包括主版本号、副版本号、创建号和操作系统位数。
可选的,所述目标程序执行模块包括以下至少一种:可执行文件、动态链接库。
可选的,所述装置还包括指令解析单元,用于:
对所述程序运行指令进行解析,得到所述待运行程序标识。
第三方面,本申请提供了一种可读介质,包括执行指令,当电子设备的处理器执行所述执行指令时,所述电子设备执行如第一方面中任一所述的方法。
第四方面,本申请提供了一种电子设备,包括处理器以及存储有执行指令的存储器,当所述处理器执行所述存储器存储的所述执行指令时,所述处理器执行如第一方面中任一所述的方法。
由上述技术方案可以看出,本申请提供了一种终端的程序运行方法,所述方法应用于终端,在所述方法中可以先获取程序运行请求,其中,所述程序运行请求包括待运行程序标识;然后,可以响应于所述程序运行请求,获取所述终端的操作系统版本信息;接着,可以根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块;最后,可以根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。由于在本申请所提供的方法中,可以根据不同的终端的操作系统版本信息,确定与该操作系统版本信息对应的能够运行所述待运行程序标识对应的待运行程序的目标程序执行模块,从而可以调用该目标程序执行模块在该操作系统版本信息对应的操作系统下运行所述待运行程序标识对应的待运行程序,这样,本申请实现了在不同操作系统下均可以兼容运行所述待运行程序标识对应的待运行程序,从而不需要和现有技术一样,需要人工为不同的操作系统环境而分别开发、维护多套整体或者粗粒度模块代码的情况,从而可以避免出现在编写或修改多份代码的过程中耗时费力且效率低下,并且容易出现由于人工操作错误所导致的代码编写错误,以及提高了代码的开发维护成本的问题,进而本申请实现了不仅可以保证同一版本的程序代码能够在不同的操作系统下兼容运行,还提高了程序代码在各种操作系统下运行的效率以及降低了程序代码开发维护的成本,达到了提高用户体验的效果。也就是说,不需要和现有技术一样,大量没有版本差异的代码也需要人工为不同的操作系统环境而分别开发、维护多套整体或者粗粒度模块代码的情况,从而可以避免出现在编写或修改多份整体或者粗粒度模块代码的过程中耗时费力且效率低下,并且容易出现由于人工操作错误所导致的代码编写错误,以及提高了代码的开发维护成本的问题;以及不需要和现有技术一样,通过额外的复杂的操作来适配不同的操作环境,部署非常灵活。
上述的非惯用的优选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
为了更清楚地说明本申请实施例或现有的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的一种终端的程序运行方法的流程示意图;
图2a为本申请一实施例提供的待运行程序的代码结构示意图;
图2b为本申请一实施例提供的待运行程序的代码结构示意图;
图2c为本申请一实施例提供的待运行程序的代码结构示意图;
图2d为本申请一实施例提供的待运行程序的代码结构示意图;
图3为本申请一实施例提供的一种终端的程序运行装置的结构示意图;
图4为本申请一实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本申请的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
兼容问题是十分常见的问题,一般都以兼容开发为主。通常在应用开发过程中,为了应对操作系统版本的问题,操作系统和基础模块往往默认新版本都能兼容老版本,以便于老版本程序能快速迁移到新版本系统环境内。因此开发者往往倾向于直接开发老版本的应用以更广泛的适配所有系统环境。当然也不能无限制的兼容,会有兼容的最低版本,然后所有功能都以最低版本为开发要求进行开发。如果出现不兼容的情况,就会考虑升级最低版本要求。最低版本在商业环境提升往往会有很高的成本。而即使最低版本不变,对于新版本的支持并不是一定没有问题的。如,有些软件虽然在各个版本系统都能运行,但是可能在xp系统就很流畅,在win7就会卡顿,画面扭曲等,往往是因为虽然有新版本操作系统可用,但为了兼容老环境,仍然使用了新环境不推荐的老环境的api,或者老环境没有这种api,使用了一些应用层面的外部代码实现,相对于新版本操作系统提供的功能效果往往有显著的性能差异,甚至新版本反而出现支持不好的情况,这也是兼容开发的常见问题之一。当代码中需要加入新系统才能支持的功能的时候,为了兼容老系统,还想实现新功能,可能会考虑分别撰写代码,单独限定运行环境,可能会出现为不同环境而维护两套代码的情况,每次修改内容,都要做多份。例如git上有多个全量的分支,假设有xp,win7两个分支,每次对于xp的修改都要推送到win7,这时候需要考虑新环境是否有其他推荐方案,是否不同版本的同一个api有差异,而对于win7的修改很多本身就不能直接推送到xp,需要额外写兼容代码。这个过程管理成本就变得很高。同时这种开发方式,也导致了部署上的困难。如很多软件下载的时候,会有不同的按钮,让人选择下载32位还是64位,是什么操作系统。相应的在一些大规模统一部署的场景中,如果有不同操作系统环境,这种问题将会更加复杂。在识别操作系统版本号的角度来看,常用的方案,win10编译,可以正确识别xp,但是xp编译,都无法识别win10。而现有操作系统的识别方案都无法识别未来潜在的操作系统版本。
现有方案常常为了兼容能力而牺牲性能等其他方面的能力,如新版本环境拥有某个功能以后,业务场景也会随之进步,带来的问题是在老的环境也会出现新环境才能实现的业务要求。此时开发者为了在老的环境实现该功能会使用许多额外的兼容代码,这些代码性能一般远远低于新版本环境带有的该功能。如果开发两种,就要维护两套代码,同时在两个环境运行不同的代码。如果要避免代码维护的复杂性和部署过程的复杂性,可能会选择开发一套兼容代码用于所有环境,带来了很多其他问题。
应该对于各个环境和版本,使用适配最好的方案,开发最优的模块实现。每个方案开发的模块也可以对应多个系统环境。
有些功能并非所有版本系统都需要部署安装。可以选择性的部署模块和版本。例如通过在配置文件查询目标操作系统版本的最低和最高,就能直接筛出需要的文件。不必单独在代码每次梳理查找。
现有方案往往由于整体粒度的限制,全部模块都是32位或者全部都是64位,互相兼容的情况比较少,开发和编译的时候也要针对不同的情况做很多处理。
目前,当代码中需要加入新系统才能支持的功能的时候,为了能够实现在兼容老系统的同时,还实现新功能,现有技术中通常采用人工分别针对不同的系统分别撰写单独限定运行环境的代码,这样,会出现需要人工为不同的操作系统环境而维护多套整体或者粗粒度模块代码的情况,从而导致每次需要修改没有兼容问题的代码内容时,都需要人工对多份代码进行修改。而采用人工分别针对不同的操作系统分别撰写单独限定运行环境的代码的方式,以及操作系统环境的差异导致api本身有差异的时候,以及现有的框架往往难以灵活的解耦,就算解耦以后,也无法灵活的调用不同的版本,无法彻底解耦会导致当代码需要人工为不同的操作系统环境而维护多套的时候,没有版本差异的代码也在维护多套的范围内;这部分代码的后续维护;会导致出现人工为不同的操作系统环境而分别开发、维护多套代码的情况,会导致无法灵活调用不同版本,需要额外的复杂的操作来适配不同的环境,会导致部署和管理的难度增加,会导致在编写或修改多份整体或者粗粒度模块代码的过程中耗时费力且效率低下,并且容易出现由于人工操作错误所导致的代码编写错误,以及提高了代码的开发维护成本的问题。因此,亟需一种新的能够实现软件兼容的终端的程序运行方案
本申请提供了本申请提供了一种终端的程序运行方法,所述方法应用于终端,在所述方法中可以先获取程序运行请求,其中,所述程序运行请求包括待运行程序标识;然后,可以响应于所述程序运行请求,获取所述终端的操作系统版本信息;接着,可以根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块;最后,可以根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。由于在本申请所提供的方法中,可以根据不同的终端的操作系统版本信息,确定与该操作系统版本信息对应的能够运行所述待运行程序标识对应的待运行程序的目标程序执行模块,从而可以调用该目标程序执行模块在该操作系统版本信息对应的操作系统下运行所述待运行程序标识对应的待运行程序,这样,本申请实现了在不同操作系统下均可以兼容运行所述待运行程序标识对应的待运行程序,从而不需要和现有技术一样,需要人工为不同的操作系统环境而分别开发、维护多套整体或者粗粒度模块代码的情况,从而可以避免出现在编写或修改多份代码的过程中耗时费力且效率低下,并且容易出现由于人工操作错误所导致的代码编写错误,以及提高了代码的开发维护成本的问题,进而本申请实现了不仅可以保证同一版本的程序代码能够在不同的操作系统下兼容运行,还提高了程序代码在各种操作系统下运行的效率以及降低了程序代码开发维护的成本,达到了提高用户体验的效果。也就是说,不需要和现有技术一样,大量没有版本差异的代码也需要人工为不同的操作系统环境而分别开发、维护多套整体或者粗粒度模块代码的情况,从而可以避免出现在编写或修改多份整体或者粗粒度模块代码的过程中耗时费力且效率低下,并且容易出现由于人工操作错误所导致的代码编写错误,以及提高了代码的开发维护成本的问题;以及不需要和现有技术一样,通过额外的复杂的操作来适配不同的操作环境,部署非常灵活。
需要说明的是,本申请实施例可以应用于终端(比如手机、平板、电脑、打印机等)中。需要说明的是,除了上述提及的方式以外,还可以为其他的实现方式,在这里并不限定。
下面结合附图,详细说明本申请的各种非限制性实施方式。
参见图1,示出了本申请实施例中的一种终端的程序运行方法,在本实施例中,所述方法例如可以包括以下步骤:
S101:获取程序运行请求。
在本实施例中,程序运行请求可以理解为用于请求调用目标程序执行模块运行待运行程序的命令。其中,待运行程序可以理解为待运行的程序,而目标程序执行模块可以理解为用于运行待运行程序的程序执行模块,可以理解的是,程序执行模块为用于运行程序的最小单元,是每个特定操作系统环境下编译得到的,可以在若干系操作统环境运行;在一种实现方式中,目标程序执行模块可以包括以下至少一种:可执行文件、动态链接库,例如,可执行文件在操作系统windows下为拓展名为exe,在操作系统linux下为没有拓展名或者拓展名为out,而动态链接库在操作系统window下拓展名为dll,在操作系统linux下拓展名为so。需要强调的是,在本实施例中,所述程序运行请求可以包括待运行程序标识,待运行程序标识即为需要运行的程序的标识,例如功能名称、程序文件名等。例如,终端为打印机时,需要运行ResetDC功能时,可以生成程序运行请求,其中,程序运行请求包括ResetDC函数模块的标识。需要说明的是,当目标模块的最小的粒度是只有一个函数的动态链接库时,由于与兼容性问题的最小粒度相同,非常便于解耦,不会导致兼容问题的扩大。
举例来说,在一种场景下,终端中的发起模块需要运行待运行程序,可以生成程序运行请求,并将该程序运行请求向读取环境模块和入口模块发送。
需要说明的是,在一种实现方式中,在所述根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块之前,即S102之前,S101之后,所述方法还包括:对所述程序运行指令进行解析,得到所述待运行程序标识。在本实施例中,获取程序运行请求之后,可以对程序运行请求进行解析,得到程序运行请求对应的解析数据,接着,从该解析数据中获取待运行程序标识。
在一实施例中,终端中可以设置有入口模块,该入口模块用于获取程序运行请求,并且还用于解析程序运行指令的数据结构,从程序运行指令得到待运行程序标识。需要说明的是,入口模块不一定是预先启动好的,可以随时用随时启动,所以可以实时启动入口模块。
S102:响应于所述程序运行请求,获取所述终端的操作系统版本信息。
在本实施中,在获取到程序运行请求以及待运行程序标识后,为了确定能够运行目标程序执行模块,还需要获取所述终端的操作系统版本信息。故此,可以响应于所述程序运行请求,获取所述终端的操作系统版本信息。其中,终端的操作系统版本信息可以理解为能够反映终端的当前操作系统(例如windows、Linux等)的版本的信息,比如,在一种实现方式中,所述终端的操作系统版本信息可以包括主版本号、副版本号、创建号和操作系统位数。
需要说明的是,在本实施例的一种实现方式中,可以响应于所述程序运行请求,利用RtlGetVersion函数获取所述终端的操作系统版本信息。在一实施例中,终端中可以设置有读取环境模块,该读取环境模块接收到程序运行请求后,可以调用RtlGetVersion函数获取所述终端的操作系统版本信息。
举例来说,假设终端的操作系统为windows,读取环境模块在需要支持的最早版本的32位Windows上编译,启动时获取需要调用的模块配置文件,以获取版本号(主版本号、副版本号、创建号),如获取ntdll.dll的版本号,获取操作系统位数,举例来说,判断是否存在C:\windows\syswow64目录,,若存在,说明操作系统位数为64位。
S103:根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块。
在本实施例中,获取到所述待运行程序标识与所述操作系统版本信息后,可以根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块。作为一种示例,所述终端存储有预设的程序执行模块集,其中,所述预设的程序执行模块集包括所述待运行程序标识在不同操作系统版本信息下所分别对应的程序执行模块,即所述预设的程序执行模块集包括程序标识、操作系统版本信息与程序执行模块之间的对应关系;在获取到所述待运行程序标识与所述操作系统版本信息后,可以在所述预设的程序执行模块集中,查询与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块,即根据所述待运行程序标识、所述操作系统版本信息,在所述预设的程序执行模块集中查询与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块,从而可以将所述与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块作为所述待运行程序标识对应的目标程序执行模块。
在一实施例中,终端中可以设置有查询目标模块,查询目标模块接收到取环境模块发送的操作系统版本信息以及入口模块发送的待运行程序标识后,查询目标模块可以可以在所述预设的程序执行模块集中,查询与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块,即根据所述待运行程序标识、所述操作系统版本信息,在所述预设的程序执行模块集中查询与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块,从而可以将所述与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块作为所述待运行程序标识对应的目标程序执行模块。
S104:根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。
在本实施例中,确定目标程序执行模块后,可以先确定所述目标程序执行模块的存储信息,其中,该存储信息可以理解为能够反映目标程序执行模块的存储位置,在一种实现方式中,目标程序执行模块可以存储在终端本地。然后,再调用根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。
作为一种示例,所述终端存储有程序执行模块的存储信息集,其中,所述程序执行模块的存储信息集包括各个程序执行模块各自分别对应的存储信息。在确定目标程序执行模块后,可以先在所述程序执行模块的存储信息集中,查询所述目标程序执行模块的存储信息。举例来说,参见如下存储信息集xml“
</modelA>”,该配置文件包含模块文件路径,以及每个路径对应的操作系统情况信息,该Xml的内容意义如下:Major为5或6,Minor为0到2,BuildNumber为任意值,操作系统位数为32或64的时候,对模块应文件路径为D:/modelA_winxp_8.exe,文件是32位的;Major为6,Minor为3,BuildNumber为任意值,操作系统位数为32或64的时候,对应模块文件路径(即所述目标程序执行模块的存储信息)为D:/modelA_winxp_8_1.exe,文件是32位的。
Major为6,Minor为3,BuildNumber为任意值,操作系统位数为64的时候,对应模块文件路径(即所述目标程序执行模块的存储信息)为D:/modelA_win8_1_x64.exe,文件是64位的。优先级比modelA_winxp_8_1.exe高。
Major为10,Minor为任意只,BuildNumber为任意值,操作系统位数为64的时候,对应模块文件路径(即D:/proxyA32.exe)为D:/modelA_win10.dll,文件是32位的,使用D:/proxyA32.exe代理进程启动。
然后,可以根据所述目标程序执行模块的存储信息,定位所述目标程序执行模块,即根据所述目标程序执行模块的存储信息,在终端中找到目标程序执行模块;接着,可以调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。
在一种实现方式中,终端中的查询目标模块还用于在所述程序执行模块的存储信息集中,查询所述目标程序执行模块的存储信息。然后,查询目标模块将该目标程序执行模块的存储信息向终端中的调用目标模块发送;调用目标模块可以用于根据所述目标程序执行模块的存储信息,定位所述目标程序执行模块,以及,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。
需要说明的是,调用目标模块调用目标程序执行模块后,目标程序执行模块与发起模块之间可以建立进程间通信。其中,进程间通信的方案可以采用共享内存、系统消息、socket等方案。需要强调的是,目标程序执行模块与发起模块之间的进程间通信可以采用多种方式进行通信,比如通过配置文件或者参数控制。目标程序执行模块与发起模块之间的进程间通信可以使用网络通信,也可以通过略微改造,变成多台计算机之间的互相调用,如目标程序执行模块的存储信息(比如存储路径)改为网络地址,把请求信息转发到存储信息对应的配套服务,存储信息对应的服务通过存储信息就可以调用到对应的目标程序执行模块。
需要说明的是,动态链接库文件需要启动一个专用的代理进程的可执行文件,要根据动态链接库位数和进程间通信的模式选取。代理进程和动态链接库文件之间的交互可以直接修改代理程序代码,调用动态链接库,也可以约定一系列通用接口,使得一个代理可执行文件可以调用若干动态链接库模块。
由上述技术方案可以看出,本申请提供了一种终端的程序运行方法,所述方法应用于终端,在所述方法中可以先获取程序运行请求,其中,所述程序运行请求包括待运行程序标识;然后,可以响应于所述程序运行请求,获取所述终端的操作系统版本信息;接着,可以根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块;最后,可以根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。由于在本申请所提供的方法中,可以根据不同的终端的操作系统版本信息,确定与该操作系统版本信息对应的能够运行所述待运行程序标识对应的待运行程序的目标程序执行模块,从而可以调用该目标程序执行模块在该操作系统版本信息对应的操作系统下运行所述待运行程序标识对应的待运行程序,这样,本申请实现了在不同操作系统下均可以兼容运行所述待运行程序标识对应的待运行程序,从而不需要和现有技术一样,需要人工为不同的操作系统环境而分别开发、维护多套整体或者粗粒度模块代码的情况,从而可以避免出现在编写或修改多份代码的过程中耗时费力且效率低下,并且容易出现由于人工操作错误所导致的代码编写错误,以及提高了代码的开发维护成本的问题,进而本申请实现了不仅可以保证同一版本的程序代码能够在不同的操作系统下兼容运行,还提高了程序代码在各种操作系统下运行的效率以及降低了程序代码开发维护的成本,达到了提高用户体验的效果。
也就是说,不需要和现有技术一样,大量没有版本差异的代码也需要人工为不同的操作系统环境而分别开发、维护多套整体或者粗粒度模块代码的情况,从而可以避免出现在编写或修改多份整体或者粗粒度模块代码的过程中耗时费力且效率低下,并且容易出现由于人工操作错误所导致的代码编写错误,以及提高了代码的开发维护成本的问题;以及不需要和现有技术一样,通过额外的复杂的操作来适配不同的操作环境,部署非常灵活。接下来,举例说明,如图2a所示,待运行程序包含步骤1、步骤2和步骤3,假设其中步骤2需要区分不同的window版本或者系统位数,此时需要提取步骤2对应的执行模块,即步骤2对应的执行模块为目标程序执行模块,而步骤1和步骤3对应的代码便不需要重复开发或维护多套了,从而可以避免出现在编写或修改多份整体或者粗粒度模块代码(即步骤1和步骤3对应的代码)的过程中耗时费力且效率低下,并且容易出现由于人工操作错误所导致的代码编写错误,以及提高了代码的开发维护成本的问题。继续以图2b举例说明,如,假设待运行程序要依次打印三个文件,步骤1打印jpg,步骤2打印pdf,步骤3打印txt,其中步骤2的打印pdf步骤有兼容性问题,比如系统版本问题或者系统位数问题,只提取pdf打印为目标程序执行模块即可,而步骤1打印jpg、步骤3打印txt对应的代码便不需要重复开发或维护多套了。
继续以图2c举例说明,待运行程序包含功能A,A中的某个步骤A1,步骤A2,步骤A3,A3中的某个步骤a,步骤b,步骤c,假设步骤A3需要区分不同的Windows版本或者系统位数。但是步骤A3中的步骤a不需要区分或者区分方式不同。可以将A3和a分别对应的模块提取(即确定)为目标程序执行模块,只有A3要针对环境分开开发,a目标模块如果不需要区分则只开发一份,运行范围为全部,如果需要区分则按照区分的方式开发。这样,步骤A2、步骤A3、步骤b、步骤c对应的代码便不需要重复开发或维护多套了。
继续以图2d举例说明,假设待运行程序包括报表管理功能A,A包含查询报表A1,修改数据A2,打印报表A3。其中,打印报表A3包含,组织数据a,生成excel文件b,调用excel打印方法c。其中b和c会有兼容性问题,比如位数问题64位系统安装64位excel,通过32位程序直接调用有较高概率出现问题。比如系统版本问题,xp最高只能安装office2010,可能有些新功能没有。这时候,可以按照顺序执行方案提取步骤b,步骤c为两个目标模块或者步骤b+c为一个目标程序执行模块,即可以将步骤b、步骤c或者步骤b+c分别对应的模块提取(即确定)为目标程序执行模块,其他步骤对应的对应的代码便不需要重复开发或维护多套了。这时候,如果步骤a也有兼容问题,如组织数据需要依赖系统的解析器解析特定的数据结构,如果按照顺序方案,则为提取步骤a,步骤b,步骤c分别为三个目标模块,或者提取步骤a和步骤b加步骤c,分别为两个目标程序执行模块,即可以将步骤a、步骤b、步骤c分别对应的模块提取(即确定)为目标程序执行模块,或者将步骤a和步骤b加步骤c分别对应的模块确定为两个目标程序执行模块,其他步骤对应的对应的代码便不需要重复开发或维护多套了。由于目标程序执行模块也可以通过相同的方式调用其他模块,所以可以简化为提取步骤A3和步骤a为目标程序执行模块,A3的目标程序执行模块中通过相同的方式调用a的目标程序执行模块。
需要说明的是,本实施例并不需要一个大项目内所有功能都按照相同的方式拆分模块,可以作为其他框架的一部分,只处理不同操作系统有差异的模块部分。以终端为打印机为例子,这个方案仅仅用于隔离使用ResetDC函数的一个模块,并没有大面积使用。这个方案里,如果所有模块都按照统一标准来设计,就形成了一个本地单机的服务平台,所有服务都以可执行文件或动态链接库的形式存在,同时服务还可以调用其他的服务。是一套轻量级的单机多进程服务管理方案。每个模块都可以通过相似的标准或者sdk,调用其他模块。
本申请提供的方法相对于多分支的代码维护方式,可以通过拆离有兼容问题的模块,单独建立代码库,仅对这部分做分支处理,其他主要功能模块都不用维护多套。运行时实际使用哪个,由本发明的功能机制处理。相对于使用老版本兼容代码的方案,可以降低老版本代码的兼容负担,新版本环境就使用新版本开发,改善整体用户体验。有些功能模块需要新版本系统环境,旧系统无法支持,可以通过隔离,避免由于部分功能无法支持导致整体应用都无法使用。本方案的好处就是服务之间可以互相调用,这样单机内可以打通32位和64位,模块之间可以不用互相关心支持的操作系统环境。未来甚至进一步,多机部署的话,可以通过添加网络通信实现win7运行win7,xp运行xp的场景。更长远的维度来看,可以用于云端虚拟机执行特定任务。本发明作为一个框架来看,模块之间可以互相调用,每个模块都在独立的进程,所以32位和64位模块可以实现交叉调用。每个模块单独进程还可以避免一些内存问题和资源冲突,可以避免异常的累积。虽然很多操作系统可以同时运行32位和64位程序,但是一般来说,64位模块由于有更好的性能,优先级应该更高。
如图3所示,为本申请所述一种终端的程序运行装置的一个具体实施例。本实施例所述装置,即用于执行上述实施例所述方法的实体装置。其技术方案本质上与上述实施例一致,本实施例中所述装置包括:
请求获取单元301,用于获取程序运行请求,其中,所述程序运行请求包括待运行程序标识;
信息获取单元302,用于响应于所述程序运行请求,获取所述终端的操作系统版本信息;
模块确定单元303,用于根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块;
模块调用单元304,用于根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。
可选的,所述信息获取单元302,具体用于:
响应于所述程序运行请求,利用RtlGetVersion函数获取所述终端的操作系统版本信息。
可选的,所述终端存储有预设的程序执行模块集,其中,所述预设的程序执行模块集包括所述待运行程序标识在不同操作系统版本信息下所分别对应的程序执行模块;所述模块确定单元303,具体用于:
在所述预设的程序执行模块集中,查询与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块;
将所述与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块作为所述待运行程序标识对应的目标程序执行模块。
可选的,所述终端存储有程序执行模块的存储信息集,其中,所述程序执行模块的存储信息集包括各个程序执行模块各自分别对应的存储信息;所述模块调用单元304,具体用于:
在所述程序执行模块的存储信息集中,查询所述目标程序执行模块的存储信息;
根据所述目标程序执行模块的存储信息,定位所述目标程序执行模块;
调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。
可选的,所述终端的操作系统版本信息包括主版本号、副版本号、创建号和操作系统位数。
可选的,所述目标程序执行模块包括以下至少一种:可执行文件、动态链接库。
可选的,所述装置还包括指令解析单元,用于:
对所述程序运行指令进行解析,得到所述待运行程序标识。
图4是本申请实施例提供的一种电子设备的结构示意图。在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry StandardArchitecture,工业标准体系结构)总线、PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线或EISA(Extended IndustryStandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放执行指令。具体地,执行指令即可被执行的计算机程序。存储器可以包括内存和非易失性存储器,并向处理器提供执行指令和数据。
在一种可能实现的方式中,处理器从非易失性存储器中读取对应的执行指令到内存中然后运行,也可从其它设备上获取相应的执行指令,以在逻辑层面上形成终端的程序运行装置。处理器执行存储器所存放的执行指令,以通过执行的执行指令实现本申请任一实施例中提供的终端的程序运行方法。
上述如本申请图1所示实施例提供的终端的程序运行装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
本申请实施例还提出了一种可读介质,该可读存储介质存储有执行指令,存储的执行指令被电子设备的处理器执行时,能够使该电子设备执行本申请任一实施例中提供的终端的程序运行方法,并具体用于执行上述终端的程序运行所述的方法。
前述各个实施例中所述的电子设备可以为计算机。
本领域内的技术人员应明白,本申请的实施例可提供为方法或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例,或软件和硬件相结合的形式。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (9)
1.一种终端的程序运行方法,其特征在于,所述方法应用于终端,所述方法包括:
获取程序运行请求,其中,所述程序运行请求包括待运行程序标识;
响应于所述程序运行请求,获取所述终端的操作系统版本信息;
根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块;
根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序;
所述终端存储有预设的程序执行模块集,其中,所述预设的程序执行模块集包括所述待运行程序标识在不同操作系统版本信息下所分别对应的程序执行模块,对于所有待运行程序中需要区分操作系统版本信息的步骤,单独提取与所述步骤对应的程序执行模块作为目标程序执行模块;所述根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块,包括:
在所述预设的程序执行模块集中,查询与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块;
将所述与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块作为所述待运行程序标识对应的目标程序执行模块。
2.根据权利要求1所述的方法,其特征在于,所述响应于所述程序运行请求,获取所述终端的操作系统版本信息,包括:
响应于所述程序运行请求,利用RtlGetVersion函数获取所述终端的操作系统版本信息。
3.根据权利要求1所述的方法,其特征在于,所述终端存储有程序执行模块的存储信息集,其中,所述程序执行模块的存储信息集包括各个程序执行模块各自分别对应的存储信息;所述根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序,包括:
在所述程序执行模块的存储信息集中,查询所述目标程序执行模块的存储信息;
根据所述目标程序执行模块的存储信息,定位所述目标程序执行模块;
调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序。
4.根据权利要求1-3中任一所述的方法,其特征在于,所述终端的操作系统版本信息包括主版本号、副版本号、创建号和操作系统位数。
5.根据权利要求1-3中任一所述的方法,其特征在于,所述目标程序执行模块包括以下至少一种:可执行文件、动态链接库。
6.根据权利要求1-3中任一所述的方法,其特征在于,在所述根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块之前,所述方法还包括:
对所述程序运行指令进行解析,得到所述待运行程序标识。
7.一种终端的程序运行装置,其特征在于,所述装置应用于终端,所述装置包括:
请求获取单元,用于获取程序运行请求,其中,所述程序运行请求包括待运行程序标识;
信息获取单元,用于响应于所述程序运行请求,获取所述终端的操作系统版本信息;
模块确定单元,用于根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块;
模块调用单元,用于根据所述目标程序执行模块的存储信息,调用所述目标程序执行模块运行所述待运行程序标识对应的待运行程序;
所述终端存储有预设的程序执行模块集,其中,所述预设的程序执行模块集包括所述待运行程序标识在不同操作系统版本信息下所分别对应的程序执行模块,对于所有待运行程序中需要区分操作系统版本信息的步骤,单独提取与所述步骤对应的程序执行模块作为目标程序执行模块;所述根据所述待运行程序标识与所述操作系统版本信息,确定所述待运行程序标识对应的目标程序执行模块,包括:
在所述预设的程序执行模块集中,查询与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块;
将所述与所述待运行程序标识、所述操作系统版本信息对应的程序执行模块作为所述待运行程序标识对应的目标程序执行模块。
8.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器用于存储程序;所述处理器用于运行所述程序,以实现权利要求1-6任一项所述的终端的程序运行方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行权利要求1-6任一项所述的终端的程序运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110715204.3A CN113434213B (zh) | 2021-06-26 | 2021-06-26 | 一种终端的程序运行方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110715204.3A CN113434213B (zh) | 2021-06-26 | 2021-06-26 | 一种终端的程序运行方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113434213A CN113434213A (zh) | 2021-09-24 |
CN113434213B true CN113434213B (zh) | 2022-11-25 |
Family
ID=77754728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110715204.3A Active CN113434213B (zh) | 2021-06-26 | 2021-06-26 | 一种终端的程序运行方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434213B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860204B (zh) * | 2022-04-27 | 2024-07-02 | 恒宝股份有限公司 | 程序处理、运行方法、装置、终端、智能卡及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727316A (zh) * | 2008-10-22 | 2010-06-09 | 上海超级计算中心 | 适于集群系统的并行程序集成开发系统及其应用实现方法 |
CN107370804A (zh) * | 2017-07-11 | 2017-11-21 | 腾讯科技(深圳)有限公司 | 软件应用处理方法和装置 |
CN109284147A (zh) * | 2018-09-06 | 2019-01-29 | 平安科技(深圳)有限公司 | 一种插件适配方法和装置 |
CN111222062A (zh) * | 2020-01-09 | 2020-06-02 | 百度在线网络技术(北京)有限公司 | 小程序的运行方法、装置、电子设备和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667119A (zh) * | 2008-09-03 | 2010-03-10 | 英属开曼群岛商康帝国际科技股份有限公司 | 可在不同操作系统操作的数字权利管理程序的方法与系统 |
CN101630251A (zh) * | 2009-08-05 | 2010-01-20 | 中国船舶重工集团公司第七○九研究所 | 跨桌面和嵌入式系统的图形界面开发方法及系统 |
CN108228197B (zh) * | 2016-12-20 | 2021-07-16 | 阿里巴巴集团控股有限公司 | 一种在集群中安装软件的方法和装置 |
CN110851240B (zh) * | 2019-11-18 | 2022-04-29 | 北京小米移动软件有限公司 | 功能调用方法、装置及存储介质 |
-
2021
- 2021-06-26 CN CN202110715204.3A patent/CN113434213B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727316A (zh) * | 2008-10-22 | 2010-06-09 | 上海超级计算中心 | 适于集群系统的并行程序集成开发系统及其应用实现方法 |
CN107370804A (zh) * | 2017-07-11 | 2017-11-21 | 腾讯科技(深圳)有限公司 | 软件应用处理方法和装置 |
CN109284147A (zh) * | 2018-09-06 | 2019-01-29 | 平安科技(深圳)有限公司 | 一种插件适配方法和装置 |
CN111222062A (zh) * | 2020-01-09 | 2020-06-02 | 百度在线网络技术(北京)有限公司 | 小程序的运行方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113434213A (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303490B2 (en) | Apparatus and method for optimizing startup of embedded system | |
US9471282B2 (en) | System and method for using annotations to automatically generate a framework for a custom javaserver faces (JSF) component | |
CN106325847B (zh) | 基于iOS平台获取应用程序功能的方法和装置 | |
CN111813385B (zh) | 一种基于Web应用的页面插件化方法、装置及设备 | |
CN113434213B (zh) | 一种终端的程序运行方法以及装置 | |
CN114780173B (zh) | 一种在应用中加载插件的方法、计算设备及存储介质 | |
CN117149469B (zh) | H5页面调用宿主端功能的方法、装置、设备及存储介质 | |
CN112416612A (zh) | 服务调用方法、装置、计算机设备和可读存储介质 | |
CN112711427A (zh) | 一种镜像文件的获取方法以及装置 | |
CN111176720B (zh) | 一种实现在多系统中运行应用程序的控制方法、控制装置 | |
CN111352631A (zh) | 一种接口兼容性检测方法及装置 | |
CN116303099A (zh) | 自动化测试环境跨平台快速部署方法、装置、介质及设备 | |
CN111158777A (zh) | 组件调用方法、装置及计算机可读存储介质 | |
US20240036887A1 (en) | Intercepting calls to a dynamic library | |
CN111475226B (zh) | 电子装置、微服务调用方法和计算机可读存储介质 | |
JP4063573B2 (ja) | デバイスドライバの組み込み・実行方式、組み込み・実行方法、及びプログラム | |
CN111273940B (zh) | 将程序文件上传至代码仓库的方法及装置 | |
CN113641389A (zh) | 基于OpenCPU的软件升级方法、装置及设备 | |
CN112463262A (zh) | 一种安卓系统gps模块自适应方法及终端 | |
CN112379943A (zh) | Electron应用程序的插件应用方法及装置、存储介质 | |
CN111736863A (zh) | 一种软件升级方法、装置及电子设备 | |
CN113722011B (zh) | 应用界面启动方法、装置、设备和存储介质 | |
US7568197B1 (en) | Method and apparatus for interposing kernel symbols | |
CN111782282B (zh) | 启动程序加载方法和装置、电子设备和存储介质 | |
CN113722538B (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 |