CN117519691B - 应用程序处理方法、装置、计算机设备和存储介质 - Google Patents
应用程序处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN117519691B CN117519691B CN202410011248.1A CN202410011248A CN117519691B CN 117519691 B CN117519691 B CN 117519691B CN 202410011248 A CN202410011248 A CN 202410011248A CN 117519691 B CN117519691 B CN 117519691B
- Authority
- CN
- China
- Prior art keywords
- resource
- desktop
- type
- frame
- application
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 20
- 238000000034 method Methods 0.000 claims abstract description 116
- 230000001419 dependent effect Effects 0.000 claims abstract description 52
- 238000011161 development Methods 0.000 claims abstract description 28
- 238000012545 processing Methods 0.000 claims abstract description 26
- 238000004590 computer program Methods 0.000 claims abstract description 25
- 238000004891 communication Methods 0.000 claims description 113
- 230000008569 process Effects 0.000 claims description 63
- 230000006870 function Effects 0.000 claims description 44
- 238000009877 rendering Methods 0.000 claims description 36
- 230000007613 environmental effect Effects 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 16
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 7
- 230000003993 interaction Effects 0.000 description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 239000011800 void material Substances 0.000 description 5
- 239000012634 fragment Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种应用程序处理方法、装置、计算机设备、存储介质和计算机程序产品。方法包括:确定依赖于第一桌面框架开发的桌面应用程序;获取桌面应用程序的第一资源包,第一资源包适用于第一桌面框架,且包含有桌面应用程序在应用程序的生命周期内所需的应用资源;依据与第二桌面框架匹配的资源要求,对第一资源包进行调整,得到适用于第二桌面框架的第二资源包;通过第二资源包在第二桌面框架中运行桌面应用程序。采用本方法能够能使得调整后的依赖于第二桌面框架的桌面应用程序的使用体验与调整前的依赖于第一桌面框架的该桌面应用程序的使用体验对齐。
Description
技术领域
本申请涉计算机技术领域,特别是涉及一种应用程序处理方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
在跨平台桌面应用开发领域内,针对业界通用的一款桌面应用程序,如一款功能强大且通用的代码编辑器,往往由于该代码编辑器对自身所使用的桌面开发框架具有强依赖性,导致使用其他桌面开发框架的业务无法直接使用该代码编辑器。相关技术中,为了使得该代码编辑能够适配其他桌面开发框架,通常只能使用能力更低的简化版的代码编辑器,或者基于自身框架通过大量开发工作开发一款新的复杂的编辑器工具。
但是,简化版的编辑器不仅功能降级,还缺乏插件市场、更多依赖系统和文件底层能力的编辑能力。新开发的编辑器的使用体验无法和业界通用的编辑器的使用体验对齐。这些处理方式根本上还是未能打破不同桌面开发框架之间不互通的壁垒,无法提供一种可以灵活适用于其他桌面开发框架中的应用。
发明内容
基于此,有必要针对上述技术问题,提供一种能够能使得调整后的依赖于第二桌面框架的桌面应用程序的使用体验与调整前的依赖于第一桌面框架的该桌面应用程序的使用体验对齐的应用程序处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
一方面,本申请提供了一种应用程序处理方法,包括:
确定依赖于第一桌面框架开发的桌面应用程序;
获取所述桌面应用程序的第一资源包,所述第一资源包适用于所述第一桌面框架,且包含有所述桌面应用程序在应用程序的生命周期内所需的应用资源;
依据与第二桌面框架匹配的资源要求,对所述第一资源包进行调整,得到适用于所述第二桌面框架的第二资源包;
通过所述第二资源包在所述第二桌面框架中运行所述桌面应用程序。
另一方面,本申请还提供了一种应用程序处理装置,包括:
确定模块,用于确定依赖于第一桌面框架开发的桌面应用程序;
获取模块,用于获取所述桌面应用程序的第一资源包,所述第一资源包适用于所述第一桌面框架,且包含有所述桌面应用程序在应用程序的生命周期内所需的应用资源;
调整模块,用于依据与第二桌面框架匹配的资源要求,对所述第一资源包进行调整,得到适用于所述第二桌面框架的第二资源包;
运行模块,用于通过所述第二资源包在所述第二桌面框架中运行所述桌面应用程序。
在一些实施例中,所述获取模块获取的所述第一资源包中的应用资源包括以下至少之一:
所述桌面应用程序在应用程序的生命周期的启动阶段所需的启动资源,
所述桌面应用程序在应用程序的生命周期的运行阶段所需的运行环境资源,
所述桌面应用程序在应用程序的生命周期的运行阶段所需的通信资源。
在一些实施例中,所述调整模块,还用于确定桌面应用程序在应用程序的生命周期内所需的应用资源的资源类型;
针对各所述资源类型,确定与第二桌面框架匹配的资源要求;
针对任一资源类型,依据所针对资源类型的资源要求,对所述第一资源包中的所针对资源类型的资源进行调整,得到调整后的资源;
基于各资源类型的所述调整后的资源,确定适用于所述第二桌面框架的第二资源包。
在一些实施例中,所述资源类型包括启动资源类型,所述调整模块,还用于针对启动资源类型,获取所述第一资源包中的第一启动文件;所述第一启动文件对应第一格式;
依据所述启动资源类型的资源要求,构建与第二桌面框架匹配的对应第二格式的初始启动文件;
在所述初始启动文件中引用所述第一启动文件,以生成适用于第二桌面框架的目标启动文件;所述目标启动文件为调整后的资源。
在一些实施例中,所述资源类型包括环境资源类型,所述环境资源类型包括第一子环境类型和第二子环境类型,所述第一子环境类型用于指示桌面应用程序的运行环境的文件夹,所述第二子环境类型用于指示桌面应用程序运行时所依赖的基于通用编程语言实现的依赖产物,
所述调整模块,还用于针对环境资源类型,依据所述环境资源类型的资源要求,对所述第一资源包中所述第一子环境类型的资源进行调整,对所述第一资源包中所述第二子环境类型的资源进行调整;
基于调整后的所述第一子环境类型的资源,以及调整后的所述第二子环境类型的资源,确定调整后的所述环境资源类型的资源。
在一些实施例中,所述调整模块,还用于确定所述第一资源包中与运行环境相关的第一文件夹;
确定与所述第二桌面框架匹配的且与运行环境相关的第二文件夹;
删除所述第一文件夹中与第一桌面框架相关的文件夹,并将所述第二文件夹添置至所述第一资源包中。
在一些实施例中,所述调整模块,还用于确定所述第一资源包中第一依赖产物;
获取所述第一依赖产物的源代码,通过所述第二桌面框架对应的编译组件对所述源代码进行重新编译,生成与所述第二桌面框架相适配的第二依赖产物;
将所述第一资源包中的所述第一依赖产物替换为所述第二依赖产物。
在一些实施例中,所述资源类型包括通信资源类型,所述通信资源类型包括第一子通信类型和第二子通信类型,所述第一子通信类型用于指示进行跨进程通信所需的资源,所述第二子通信类型用于指示调用操作系统相关的系统接口所需的资源,
所述调整模块,还用于针对通信资源类型,依据所述通信资源类型的资源要求,对所述第一资源包中所述第一子通信类型的资源进行调整,对所述第一资源包中所述第二子通信类型的资源进行调整;
基于调整后的所述第一子通信类型的资源,以及调整后的所述第二子通信类型的资源,确定调整后的所述通信资源类型的资源。
在一些实施例中,所述调整模块,还用于确定所述第一资源包中存在跨进程通信的渲染进程的代码;所述跨进程通信用于实现渲染进程与操作系统间的通信;
对所述渲染进程的代码进行调整,以使得代码调整后的渲染进程在与操作系统进行通信时直接通过上下文调用实现。
在一些实施例中,所述调整模块,还用于确定所述第一资源包调用的第一系统接口;
从所述第二桌面框架提供的系统接口中,确定与所述第一系统接口的功能一致的第二系统接口;
基于所述第二系统接口,对所述第一资源包中调用所述第一系统接口的代码进行调整。
在一些实施例中,所述运行模块,还用于通过所述第二资源包,直接在所述第二桌面框架中以桌面应用的形式运行所述桌面应用程序,或者,
通过第二桌面框架中运行的目标应用程序调用所述第二资源包,以插件的形式在所述目标应用程序中运行所述桌面应用程序。
在一些实施例中,所述桌面应用程序包括代码编辑应用,通过所述第二资源包运行的桌面应用程序,用于对所述第二桌面框架中运行的应用程序的资源进行编辑。
另一方面,本申请还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
确定依赖于第一桌面框架 开发的桌面应用程序;
获取所述桌面应用程序的第一资源包,所述第一资源包适用于所述第一桌面框架,且包含有所述桌面应用程序在应用程序的生命周期内所需的应用资源;
依据与第二桌面框架匹配的资源要求,对所述第一资源包进行调整,得到适用于所述第二桌面框架的第二资源包;
通过所述第二资源包在所述第二桌面框架中运行所述桌面应用程序。
另一方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
确定依赖于第一桌面框架 开发的桌面应用程序;
获取所述桌面应用程序的第一资源包,所述第一资源包适用于所述第一桌面框架,且包含有所述桌面应用程序在应用程序的生命周期内所需的应用资源;
依据与第二桌面框架匹配的资源要求,对所述第一资源包进行调整,得到适用于所述第二桌面框架的第二资源包;
通过所述第二资源包在所述第二桌面框架中运行所述桌面应用程序。
另一方面,本申请还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
确定依赖于第一桌面框架 开发的桌面应用程序;
获取所述桌面应用程序的第一资源包,所述第一资源包适用于所述第一桌面框架,且包含有所述桌面应用程序在应用程序的生命周期内所需的应用资源;
依据与第二桌面框架匹配的资源要求,对所述第一资源包进行调整,得到适用于所述第二桌面框架的第二资源包;
通过所述第二资源包在所述第二桌面框架中运行所述桌面应用程序。
上述应用程序处理方法、装置、计算机设备、存储介质和计算机程序产品,针对依赖于第一桌面框架的桌面应用程序的第一资源包,依据与第二桌面框架匹配的资源要求,进行调整,得到适用于第二桌面框架的桌面应用程序的第二资源包,如此,能够去除第一资源包针对第一桌面框架的绝对依赖,得到能够适配第二桌面框架的第二资源包。然后,通过第二资源包,在第二桌面框架中运行该桌面应用程序,如此,让依赖于第二桌面框架的应用,可以集成使用桌面应用程序的功能,实现了不同桌面开发框架之间的互通,使得调整后的依赖于第二桌面框架的桌面应用程序的使用体验与调整前的依赖于第一桌面框架的该桌面应用程序的使用体验对齐。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中应用程序处理方法的应用环境图;
图2为一个实施例中应用程序处理方法的流程示意图;
图3为一个实施例中应用程序处理操作的操作界面示例图;
图4为一个实施例中针对第一资源包的资源调整方法的流程示意图;
图5为一个实施例中针对启动资源类型的资源的调整方法的流程示意图;
图6为一个实施例中桌面框架中第一子环境类型的资源示例图;
图7为一个实施例中第二子通信类型的资源调整方法的流程示意图;
图8A为一个实施例中第二资源包的应用方式示例图;
图8B为另一个实施例中第二资源包的应用方式示例图;
图9为一个实施例中运行环境模块的调整方式示例图;
图10为一个实施例中通用进程间通信模块的结构示例图;
图11为一个实施例中应用程序处理装置的结构框图;
图12为一个实施例中执行应用程序处理方法的计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的应用程序处理方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。终端的界面中显示有针对该应用程序的调整功能项,响应于针对该调整功能项的触发操作,向服务器发送针对该桌面应用程序的应用程序处理请求,该应用程序处理请求用于请求服务器对该桌面应用程序的第一资源包进行调整以得到适用于第二桌面框架的第二资源包,服务器接收并解析该应用程序处理请求,确定依赖于第一桌面框架开发的桌面应用程序;获取该桌面应用程序的第一资源包,第一资源包适用于第一桌面框架,且包含有所述桌面应用程序在应用程序的生命周期内所需的应用资源;依据与第二桌面框架匹配的资源要求,对第一资源包进行调整,得到适用于该第二桌面框架的第二资源包;通过第二资源包在第二桌面框架中运行所述桌面应用程序。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一些实施例中,如图2所示,提供了一种应用程序处理方法,以该方法应用于计算机设备(该计算机设备具体可以是图1中的终端或服务器)为例进行说明,包括以下步骤202至步骤208。其中:
步骤202,确定依赖于第一桌面框架开发的桌面应用程序。
在实际实施时,桌面框架是指实现跨平台应用开发的桌面应用开发框架,它是一种工具或框架,它允许开发者使用一种统一的代码库或语言构建跨平台的桌面应用。本申请中的桌面框架主要是指基于Web技术的跨平台桌面应用开发框架,这种框架使用Web前端技术,如HTML(Hyper Text Markup Language,超文本标记语言)、CSS(Cascading StyleSheets,层叠样式表)和JavaScript(一种脚本编程语言,简称JS)来构建桌面应用程序。不同桌面框架的实现原理不同,为了便于说明,将待处理的桌面应用程序所依赖的桌面框架称为第一桌面框架,将处理后的桌面应用程序所适用的桌面框架称为第二桌面框架。第一桌面框架的实现原理不同于第二桌面框架,依赖于第一桌面框架的桌面应用程序在未进行本申请中的应用程序处理前不能适用于第二桌面框架。常见的桌面框架至少包括Electron框架、NW.js框架、QT框架等。
示例性地,以第一桌面框架是Electron框架,第二桌面框架是NW.js框架为例说明不同桌面框架的不同实现原理。Electron是一种基于Node.js(运行于服务端的JavaScript解释器,一个基于Chrome V8引擎的JavaScript运行环境)和Chromium(一种浏览器内核)的桌面框架,实现原理是将Chromium作为一个单独组件进行调用,工作机制更像是Node.js的运行时。可以用HTML、CSS和JavaScript创建跨平台的桌面应用。NW.js也是一个基于Node.js的框架,但与Electron框架不同的是,NW.js框架的实现原理是将Node.js集成到Chromium中,对Chromium内核进行了修改,相当于一个有Node能力的浏览器。允许使用JavaScript、HTML和CSS编写桌面应用程序,并提供与操作系统的集成。
在实际实施时,计算机设备确定待处理的桌面应用程序的方式可以是基于可操作的输入界面确定,也可以是从预设的配置文件中读取。示例性地,如图3所示,图3为一个实施例中应用程序处理操作的操作界面示例图,图中示出的可视化输入界面中包括编号1示出的用于选择第一桌面框架的功能项,编号2示出的用于选择基于第一桌面框架开发的需要调整桌面应用程序的功能项,编号3示出的用于选择调整后的桌面应用程序需要适配的第二桌面框架的功能项,以及编号4示出的执行应用程序处理的确定功能项,通过编号1和编号2示出的功能项获取待处理的依赖于第一桌面框架开发的桌面应用程序,通过编号3示出的功能项,确定需要适用的第二桌面框架,基于针对确定功能项的触发操作,计算机设备确定此次应用程序处理操作需处理的依赖于第一桌面框架开发的桌面应用程序。
步骤204,获取桌面应用程序的第一资源包,第一资源包适用于第一桌面框架,且包含有桌面应用程序在应用程序的生命周期内所需的应用资源。
在实际实施时,计算机设备在确定了待处理的桌面应用程序后,获取该待处理的桌面应用程序的第一资源包,第一资源包是待处理的桌面应用程序依赖于第一桌面框架环境运行所需的资源包,该第一资源包中包括待处理的桌面应用程序在应用程序的整个生命周期内所需的全部应用资源。计算机设备针对待处理的桌面应用程序的应用程序处理操作,本质上是对第一资源包所包括的应用资源的调整操作,以使得调整后的第一资源包能够适用于第二桌面框架。另外,可以通过文件目录的方式查看第一资源包所包括的应用资源。
针对第一资源包中的应用资源进行说明,在一些实施例中,第一资源包中的应用资源包括以下至少之一:待处理的桌面应用程序在应用程序的生命周期的启动阶段所需的启动资源,待处理的桌面应用程序在应用程序的生命周期的运行阶段所需的运行环境资源,待处理的桌面应用程序在应用程序的生命周期的运行阶段所需的通信资源。
在实际实施时,依赖于第一桌面框架环境的待处理的桌面应用程序在应用程序的生命周期的不同阶段需要不同的应用资源,如在生命周期的启动阶段需要相应的启动资源,在生命周期的运行阶段需要相应的运行环境资源以及能够与操作系统进行交互的通信资源。
步骤206,依据与第二桌面框架匹配的资源要求,对第一资源包进行调整,得到适用于第二桌面框架的第二资源包。
在实际实施时,计算机设备对第一资源包所包括的应用资源进行调整操作时,需要满足与第二桌面框架匹配的资源要求。与第二桌面框架匹配的资源要求是指能够依赖于第二桌面框架环境运行的桌面应用程序的应用资源需要满足的条件。针对第一资源包,计算机设备依据与第二桌面框架匹配的资源要求,对第一资源包进行调整,得到适用于第二桌面框架的第二资源包。由于第一资源包中包括启动资源、运行环境资源和通信资源,在一些实施例中,计算机设备可以依据与第二桌面框架匹配的资源要求,对第一资源包中的启动资源、运行环境资源和通信资源进行调整,得到适用于第二桌面框架的第二资源包。
在实际实施时,由于资源包中的应用资源可以以至少一种文件格式的形式存在,如此,可以将资源包看作文件夹,文件夹中包括可以包括子文件夹以及多种不同文件格式的文件,在这种情况下,计算机设备针对第一资源包的调整,可以是依据目标顺序对文件夹或文件夹中的文件按照与第二桌面框架匹配的资源要求进行调整,如针对每个文件夹都按照逐文件的方式进行调整。具体的可以是计算机设备读取文件或文件夹中的内容,若读取到的内容与第一桌面框架相关,则获取第二桌面框架中与读取到内容相适配的资源要求,并按照该要求对读取到的内容进行调整。另外,还可以依据应用资源在应用程序的生命周期的不同阶段的特性进行类型划分,具体的,应用资源的资源类型至少可以包括启动资源类型、通信资源类型以及环境资源类型。此时,计算机设备就可以基于资源类型,对第一资源包中的应用资源按照资源类型分别进行调整,得到每个资源类型对应的调整后的应用资源,计算机设备整合每个资源类型对应的调整后的应用资源作为适用于第二桌面框架的第二资源包。
步骤208,通过第二资源包在第二桌面框架中运行桌面应用程序。
在实际实施时,调整后的待处理的桌面应用程序的第二资源包适用于第二桌面框架,即计算机设备能够通过第二资源包在第二桌面框架中运行,对待处理的桌面应用程序进行应用程序处理操作后的桌面应用程序。可以理解的是,针对同一个桌面应用程序存在两个资源包,分别是适用于第一桌面框架的第一资源包以及适用于第二桌面框架的第二资源包,计算机设备对第一资源包所对应的桌面应用程序进行应用程序处理,即可以得到第二资源包所对应的桌面应用程序。第二资源包在第二桌面框架环境中的运行方式可以直接以桌面应用的形式运行,在第二桌面框架环境下运行第二资源包对应的桌面应用程序,也就是将第二资源包作为安装包,直接在计算机设备中安装并启动。还可以是将第二资源包与依赖于第二桌面框架的其他桌面应用程序进行集成,即将第二资源包作为插件,在第二桌面框架中运行的目标应用程序中以插件形式调用该第二资源包。
上述应用程序处理方法中,针对依赖于第一桌面框架的桌面应用程序的第一资源包,依据与第二桌面框架匹配的资源要求,进行调整,得到适用于第二桌面框架的桌面应用程序的第二资源包,如此,能够去除第一资源包针对第一桌面框架的绝对依赖,得到能够适配第二桌面框架的第二资源包。然后,通过第二资源包,在第二桌面框架中运行该桌面应用程序,如此,让依赖于第二桌面框架的应用,可以集成使用桌面应用程序的功能,以满足基于NW.js框架的桌面应用的编辑功能,同时能够避免重新开发适用于第二桌面框架的桌面应用程序的成本投入,并能使得调整后的依赖于第二桌面框架的桌面应用程序的使用体验与调整前的依赖于第一桌面框架的该桌面应用程序的使用体验对齐。
在一些实施例中,如图4所示,计算机设备依据与第二桌面框架匹配的资源要求,对第一资源包进行调整,得到适用于第二桌面框架的第二资源包,包括步骤402至步骤408。其中:
步骤402,确定桌面应用程序在应用程序的生命周期内所需的应用资源的资源类型。
在实际实施时,桌面应用程序在第一桌面框架所提供的环境中运行时,在应用程序的整个生命周期内,桌面应用程序所需的应用资源可以按照资源类型进行划分,资源类型至少可以包括启动资源类型、通信资源类型、以及依赖资源类型。其中,启动资源类型,是指在生命周期的启动阶段桌面应用程序依赖于桌面框架启动时所需的应用资源的类型。环境资源类型,是指在生命周期的运行阶段桌面应用程序运行时所需的运行环境资源的类型。通信资源类型是指在生命周期的运行阶段桌面应用程序依赖于桌面框架与操作系统进行通信时所需的应用资源的类型。针对每个资源类型,第一资源包中包括与该资源类型匹配的应用资源。针对待处理的桌面应用程序,计算机设备确定其在生命周期的每个阶段所需的应用资源的资源类型,如待处理的桌面应用程序在启动阶段所需的应用资源的资源类型为启动资源类型等。
步骤404,针对各资源类型,确定与第二桌面框架匹配的资源要求。
在实际实施时,针对每个资源类型,依赖于第二桌面框架开发的桌面应用程序同样包括该与资源类型匹配的应用资源。计算机设备在对待处理的桌面应用程序进行处理操作时,针对各资源类型,会先确定该资源类型与第二桌面框架匹配的资源要求。为了与资源类型相匹配,计算机设备确定第二桌面框架中与该资源类型匹配的资源要求。资源要求,用于指示对第一资源包中该资源类型的应用资源的调整方向,以使得该资源类型对应的调整后的应用资源适用于第二桌面框架。
示例性地,以资源类型为启动资源类型为例,桌面框架中与启动资源类型相匹配的资源要求,可以是针对启动阶段作为启动资源的启动入口的文件的格式的要求。不同的桌面框架所对应的启动入口的格式可以不同,如第一桌面框架中与启动资源类型匹配的启动资源的启动入口的格式是js文件,如将index.js文件作为启动入口,即所有依赖于第一桌面框架开发的桌面应用程序的第一资源包中都必须包括一个index.js文件才能正常启动。而第二桌面框架中与启动资源类型匹配的启动资源的启动入口的格式是html文件,如将index.html文件作为启动入口,即所有依赖于第二桌面框架开发的桌面应用程序的资源包中都必须包括一个index.html文件才能正常启动。可以理解的是,针对启动资源类型,与第二桌面框架匹配的资源要求是启动文件必须是index.html文件。
步骤406,针对任一资源类型,依据所针对资源类型的资源要求,对第一资源包中的所针对资源类型的资源进行调整,得到调整后的资源。
在实际实施时,对于每个资源类型而言,计算机设备在确定了第二桌面框架中针对该资源类型的资源要求后,会依据该资源要求,对第一资源保重该资源要求所指示的资源类型的资源进行调整,得到调整后的资源。
承接上例,继续以资源类型为启动资源类型为例,计算机设备确定待处理的桌面应用程序的第一资源包中包括index.js文件,但不包括第二桌面框架针对启动资源类型的资源要求中所需要的index.html文件,基于此,计算机设备可以对第一资源包中相关资源进行调整,以使得调整后的启动资源类型关联的资源符合第二桌面框架针对启动资源类型的资源要求。此时,计算机设备可以新建一个index.html文件,并与第一资源包中的index.js文件进行整合。
步骤408,基于各资源类型的调整后的资源,确定适用于第二桌面框架的第二资源包。
在实际实施时,计算机设备按照资源类型对第一资源包中每个资源类型对应的资源进行调整后,可以直接将调整后的第一资源包作为适用于第二桌面框架基的第二资源包,也可以在调整后的第一资源包的基础上追加该第二桌面框架需要的其他资源,重新封装得到第二资源包,本申请实施例中对调整后的资源的具体操作包括任何形式的能够得到适用于第二桌面框架的第二资源包的操作。
本实施例中,将对应用资源的调整操作,转换成分别对不同资源类型所关联的资源的调整操作,可以采用并行方式执行针对每个资源类型所关联的应用资源的调整操作,提高资源调整效率。
在一些实施例中,在资源类型包括启动资源类型的情况下,计算机设备针对启动资源类型的应用资源的调整方式,如图5所示,包括步骤502至步骤506。其中:
步骤502,针对启动资源类型,获取第一资源包中的第一启动文件,第一启动文件对应第一格式。
在实际实施时,启动资源可以是指桌面应用程序依赖于桌面框架启动时的启动方式对应的资源。启动方式对应的资源通常以目标格式的文件表征,以该目标格式的文件作为基于相应桌面框架所开发的桌面应用程序的启动入口文件。第一资源包中的启动资源类型为第一格式的第一启动文件,如第一格式为js格式,第一启动文件为index.js。
步骤504,依据启动资源类型的资源要求,构建与第二桌面框架匹配的对应第二格式的初始启动文件。
在实际实施时,为了得到适用于第二桌面框架的第二资源包,针对启动资源类型,第二桌面框架中存在与启动资源类型对应的资源要求,该资源要求可以用于指示与第二桌面框架匹配的启动入口所对应的启动文件的第二格式。如启动资源类型的资源要求可以是第二格式为html的初始启动文件index.html。
步骤506,在初始启动文件中引用第一启动文件,以生成适用于第二桌面框架的目标启动文件,目标启动文件为调整后的资源。
在实际实施时,计算机设备将第一启动文件作为引用文件添加至初始启动文件中,得到与第二桌面框架适配的目标启动文件。
示例性地,以第一桌面框架是Electron框架,第二桌面框架是NW.js框架为例,Electron框架的第一启动文件为js格式的文件,NW.js框架所要求的启动文件为html格式,计算机设备新增index.html文件作为初始启动文件,并在该初始启动文件的标签<script></script>中引入第一启动文件bundle.js,计算机设备通过超时调用函数setTimeout执行引入操作,引入操作的伪代码如下述伪代码片段1所示:
{setTimeout(() => {//调用超时调用函数
const s = document.createElement('script')//创建新的script元素
s.type = 'text/javascript'//类型为javascript
const content = ';require("../dist/bundle.js");'//引入的js文件为bundle.js
const blob=newBlob([content], [ type: 'application/javascript'})//创建新的blob对象用于指示bundle.js
s.src = URL.createObjectURL(blob)// 将Blob二进制文件转换为浏览器可以直接显示的URL地址
s.defer = true
const el = document.getElementsByTagName( 'script') [0]//结束新的script元素
},0)
}//结束
计算机设备可以基于上述伪代码在初始启动文件中引入第一启动文件,从而实现针对启动资源类型的资源调整,得到与NW.js框架匹配的新的启动资源。
本实施例中,针对启动资源类型,通过调整启动文件的方式,实现启动资源在第二桌面框架中的适配性。
在一些实施例中,资源类型包括环境资源类型,环境资源类型包括第一子环境类型和第二子环境类型,第一子环境类型用于指示桌面应用程序的运行环境的文件夹,第二子环境类型用于指示桌面应用程序运行时所依赖的基于通用编程语言实现的依赖产物,基于此,计算机设备依据所针对环境资源类型的资源要求,对第一资源包中的环境资源类型的资源进行调整,得到调整后的资源,包括:针对环境资源类型,依据环境资源类型的资源要求,对第一资源包中第一子环境类型的资源进行调整,对第一资源包中第二子环境类型的资源进行调整;基于调整后的第一子环境类型的资源,以及调整后的第二子环境类型的资源,确定调整后的环境资源类型的资源。
在实际实施时,针对每个子环境类型,计算机设备从环境类型的资源要求中,筛选相应子环境类型的资源要求,得到调整后的子环境类型的资源。计算机设备对调整后的子环境类型的资源进行整个,就得到了调整后的环境资源类型的资源。
本实施例中,针对环境资源类型的资源,划分为更细粒度的资源,将对环境资源类型的资源调整,转换为针对各子环境类型相关的资源的调整,如此,能够提高资源调整的效率,以及资源调整的准确性。
在一些实施例中,对第一资源包中第一子环境类型的资源进行调整,包括:确定第一资源包中与运行环境相关的第一文件夹;确定与第二桌面框架匹配的且与运行环境相关的第二文件夹;删除第一文件夹中与第一桌面框架相关的文件夹,并将第二文件夹添置至第一资源包中。
在实际实施时,第一子环境类型的环境资源通常采用文件夹的形式表征,计算机设备确定第一资源包中与第一子环境类型所指示的运行环境相关的第一文件夹,同时确定与第二桌面框架匹配的且与运行环境相关的第二文件夹,基于第一文件夹与第二文件夹进行资源调整,具体的资源调整操作为删除第一文件夹中与第一桌面框架相关的文件夹,并将第二文件夹添置至第一资源包中。
示例性地,如图6所示,图6为一个实施例中桌面框架中第一子环境类型的资源示例图,如图6所示,以第一桌面框架是Electron框架,第二桌面框架是NW.js框架为例,图6中编号1示出的Electron框架中第一子环境类型所指示的运行环境相关的第一文件夹electron-browser文件夹以及electron-main文件夹。图6中编号2示出的NW.js框架中第一子环境类型所指示的运行环境相关的第二文件夹Nw.js文件夹。计算机设备删除第一文件夹electron-browser文件夹以及electron-main文件夹,将第二文件夹Nw.js文件夹添置至第一资源包中。
本实施例中,针对第一子环境类型的资源的调整操作,直接转换为针对文件夹以及文件夹下的文件的替换操作,如此,能够提高针对第一子环境类型的资源的调整效率。
在一些实施例中,计算机设备对第一资源包中第二子环境类型的资源进行调整,包括:确定第一资源包中第一依赖产物;获取第一依赖产物的源代码,通过第二桌面框架对应的编译组件对源代码进行重新编译,生成与第二桌面框架相适配的第二依赖产物;将第一资源包中的第一依赖产物替换为第二依赖产物。
在实际实施时,第二子环境类型的资源是指桌面应用程序运行时所依赖的基于通用编程语言实现的依赖产物。由于不同的桌面框架对第二子环境类型的资源的编译方式不同,因此,计算机设备对第二子环境类型的资源的调整操作,本质上是通过与第二桌面框架匹配的编辑组件对第二子环境类型的资源进行重新编译,从而得到与第二桌面框架相适配的第二依赖产物。最后,在将第一资源包中的第一依赖产物替换为第二依赖产物。
示例性地,以第一桌面框架是Electron框架,第二桌面框架是NW.js框架,依赖于第一桌面框架的应用程序是vscode为例,vscode作为基于Electron框架开发的桌面应用程序,是一种现代化轻量级代码编辑器,具有支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。vscode的第一资源包中包括基于c++(c plus plus,是一种计算机高级程序设计语言)实现的原生资源,通过与Electron框架相适配的node-gyp工具生成生成跨平台的第一依赖产物(至少一个二进制形式的文件)如vscode-ripgrep、vscode-oniguruma、vscode-textmate等,第一依赖产物不能直接适用于NW.js框架,计算机设备针对第一依赖产物的调整操作,具体的,调用与NW.js框架相适配的nw-gyp的编译工具对第一依赖产物的代码进行重新编译生成第二依赖产物。其中,nw-gyp是一个基于node-gyp修改的工具,其用户构建NW.js框架环境运行的原生模块。相对于node-gyp会将NW.js所需的额外依赖的头文件等添加捡来进行编译。使其能够在NW.js框架环境中运行。
本实施例中,针对第二子环境类型的资源的调整操作,直接转换为针对源代码的重新编译操作,能够降低调整操作的复杂性,直接操作源码,保证调整操作的去干扰性,提高调整操作的效率以及调整结果的准确性。
在一些实施例中,资源类型包括通信资源类型,通信资源类型包括第一子通信类型和第二子通信类型,第一子通信类型用于指示进行跨进程通信所需的资源,第二子通信类型用于指示调用操作系统相关的系统接口所需的资源。计算机设备对第一资源包中通信资源类型的资源进行调整,包括:针对通信资源类型,依据通信资源类型的资源要求,对第一资源包中第一子通信类型的资源进行调整,对第一资源包中第二子通信类型的资源进行调整;基于调整后的第一子通信类型的资源,以及调整后的第二子通信类型的资源,确定调整后的通信资源类型的资源。
在实际实施时,第一子通信类型是指存在跨进程通信的资源类型,由于不同桌面框架的实现原理不同,相应的,基于不同桌面框架与操作系统进行通信的原理也不同。为了便于说明,以第一桌面框架是Electron框架,第二桌面框架是NW.js框架为例说明不同桌面框架与操作系统进行通信的原理。
针对Electron框架而言,在Electron框架中将Chromium作为一个单独组件,浏览器因为安全问题不便于直接与操作系统进行通信,因此Electron框架所支持的桌面应用的进程被分成渲染进程和主进程。渲染进程用于执行用户页面渲染,主进程用来管理窗口创建、与操作系统进行通信,即调用系统能力。一个基于Electron框架的应用程序由一个主进程(有且只有一个)和多个渲染进程组成。因为只有主进程可以调用操作系统能力,且负责管理所有窗口及其对应的渲染进程。
针对NW.js框架而言,在NW.js框架中将Node.js集成到Chromium中,对Chromium内核进行了修改,相当于一个有node能力的浏览器。其可以在每个单独进程中实现渲染和调用系统能力。
可以理解的是,第一桌面框架与第二桌面框架在进程通信方面存在着差异。即第一桌面框架中往往通过跨进程通信方式与操作系统交互,而第二桌面框架中是每个进程独立完成与操作系统的交互。将这种进程通信差异关联的资源的类型称为第一子通信类型。另外,不同的桌面框架在与操作系统交互时所提供的系统接口也会存在差异,将这种系统接口关联的资源的类型称为第二子通信类型。计算机设备针对第一子通信类型的资源以及第二子通信类型的资源执行与第二桌面框架匹配的通信资源类型的资源要求符合的调整操作,最后基于调整后的第一子通信类型的资源,以及调整后的第二子通信类型的资源,确定调整后的通信资源类型的资源。
本实施例中,针对环境资源类型的资源,划分为更细粒度的资源,将对环境资源类型的资源调整,转换为针对各子环境类型相关的资源的调整,如此,能够提高资源调整的效率,以及资源调整的准确性。
在一些实施例中,计算机设备对第一资源包中第一子通信类型的资源进行调整,包括:确定第一资源包中存在跨进程通信的渲染进程的代码;跨进程通信用于实现渲染进程与操作系统间的通信;对渲染进程的代码进行调整,以使得代码调整后的渲染进程在与操作系统进行通信时直接通过上下文调用实现。
在实际实施时,计算机设备针对第一资源包中的第一子通信类型的资源的调整方式如下:第一资源包中涉及到与操作系统进行交互的渲染进程都需要基于跨进程通信实现,即该渲染进程需要通过调用第一桌面框架运行的主进程与操作系统进行交互,而第二桌面框架中每个进程都可以实现与操作系统的交互,不存在通过跨进程通信的方式与操作系统交互。因此,计算机设备首先确定第一资源包中存在跨进程通信的渲染进程可称为目标渲染进程,然后确定目标渲染进程的代码,将该代码中调用主线程的代码调整为通过上下文调用实现。
示例性地,以第一桌面框架为Electron框架,第二桌面框架为NW.js框架为例,第一资源包中存在跨进程通信的渲染进程withSharedProcessConnecton,与操作系统进行交互时,需要通过主进程mainProcessService实现。计算机设备获取渲染进程withSharedProcessConnecton,并将通过mainProcessService实现的代码直接修改通过当前进程调用。Electron框架中进程间通信的伪代码如下述伪代码片段2所示:
export class 进程1 {
//在Electron框架中通过mainProcessService实现与操作系统的通信
this.sharedProcessMainChannel=mainProcessService.getChannel();
this.withSharedProcessConnection =this.whensharedprocessReady( )
.then(()=>connect(参数));.
}
而在NW.js框架中,this.whensharedprocessReady自身具备与操作系统交互的能力,则直接将上述伪代码片段二调整为以下伪代码片段3:
export class 进程1 {
this.withSharedProcessConnection = this.whenSharedProcessReady( )
.then(() => connect( ' ' ,window:1 ' ));
}
本实施例中,针对第一子通信类型的资源的调整操作,本质上是对存在跨进程通信的第一资源包中相关资源所对应的进程实例的调整,如此,调整后的进程通信只需要每个进程独立进行即可,减少进程通信的开销,提高与操作系统的交互效率。
在一些实施例中,如图7所示,计算机设备对第一资源包中第二子通信类型的资源进行调整,包括步骤702至步骤706,其中:
步骤702,确定第一资源包调用的第一系统接口。
在实际实施时,第一系统接口是第一桌面框架所提供的供桌面应用程序与操作系统进行交互的接口。第一系统接口包括以下至少之一:创建系统菜单、剪贴板、文件系统处理。使用系统剪贴板读写能力的相关的系统接口、打开指定路径的文件位置的相关的系统接口、使用文件选择弹窗等功能的系统接口等。
示例性地,以第一桌面框架为Electron框架为例,Electron框架所提供的第一系统接口是支持系统剪贴板读写能力的系统接口,包括writeClipboardText和readClipboardText。
步骤704,从第二桌面框架提供的系统接口中,确定与第一系统接口的功能一致的第二系统接口。
在实际实施时,第二桌面框架也会提供用于与操作系统交互的多个系统接口,用于依赖于第二桌面框架的桌面应用程序能够与操作系统进行交互。其中,第二桌面框架所提供的系统接口中存在与第一系统接口功能一致的第二系统接口,即第二桌面框架提供的第二系统接口与第一桌面框架提供的第一系统接口所实现的功能一致。计算机设备可以预先设置第一系统接口与第二系统接口之间的匹配关系,由于第一系统接口的接口名称与第二系统接口的接口名称可能不同,因此,可以预先设置第一系统接口与第二系统接口之间的匹配关系,如此,计算机设备可以通过该匹配关系,确定与第一系统接口功能一致的目标第二系统接口,需要说明的是,匹配关系的创建也可以是基于人工智能模型实现的。
示例性地,以第一桌面框架为Electron框架,第二桌面框架为NW.js框架为例,预先设置Electron框架的第一系统接口与NW.js框架的第二系统接口之间的匹配关系,如表1所示:
表1
由表1可知,NW框架所提供的支持系统剪贴板读写能力的第二系统接口为nw.Clipboard,也就是说,NW框架提供的nw.Clipboard系统接口与Electron框架提供的nativeHostService.writeClipboardTex系统接口实现的功能一致。
步骤706,基于第二系统接口,对第一资源包中调用第一系统接口的代码进行调整。
在实际实施时,计算机设备确定第一资源包中第一系统接口,依据与第一系统接口匹配的第二系统接口的实现代码,对第一系统接口的代码进行调整。如此,计算机设备可以通过系统接口间的匹配关系,确定与第一系统接口功能一致的目标第二系统接口,并将第一系统接口的代码修改为目标第二系统接口的代码。
承接上例,以写系统剪贴版writeText的功能实现为例,基于Electron框架实现writeText的伪代码如下述伪代码片段4所示:
async writeText(参数类型): Promise<void>{
//调用Electron框架提供的第一系统接口writeClipboardText实现写操作
return this.nativeHostService.writeClipboardText(text, type);
}
其中,针对第一系统接口nativeHostService.writeClipboardText,根据表1所示的匹配关系,可以确定与该第一系统接口匹配的NW.js框架提供的第二系统接口为nw.Clipboard,计算机设备将第一资源包中引用writeClipboardText的代码片段调整与nw.Clipboard.get().set()匹配的代码片段,其中,调整后的writeText的伪代码如下述伪代码片段5所示:
async writeText(参数类型): Promise<void>{
//调用NW.js框架的第二系统接口nw.Clipboard.get().set实现写操作
nw.Clipboard.get().set({
data: text,
type:'text',
})
}
计算机设备基于上述伪代码片段五,调整第一资源包中的writeText相关的代码,得到适用于NW.js框架的writeText功能。
承接上例,以读系统剪贴版readText的功能实现为例,基于Electron框架实现readText的伪代码如下述伪代码片段6所示:
async readText(tyoe?: "clioboard Promisesstrino>
//调用Electron框架的第一系统接口readClipboardText实现读操作
return this.nativeHostservice.readClipboardText(类型);
}
其中,针对第一系统接口readClipboardText,根据表1所示的匹配关系,可以确定与该第一系统接口匹配的NW.js框架提供的第二系统接口为nw.Clipboard.get().get(),计算机设备将第一资源包中引用writeClipboardText的代码片段调整与nw.Clipboard.get().get()匹配的代码片段,其中,调整后的readText的伪代码如下述伪代码片段7所示:
async readText(参数类型): Promise<void>{
//调用NW.js框架的第二系统接口nw.Clipboard.get().get实现写操作
return nw.Clipboard.get( ).get( 'text')
}
计算机设备基于上述伪代码片段7,调整第一资源包中的readText相关的的代码,得到适用于NW.js框架的writeText功能。
在实际实施时,除了前述所示的与系统剪贴板读写能力相关的系统接口的不同之外,还存在其他系统接口的不同。
承接上例,以打开操作系统中指定路径的文件位置的功能为例,该功能的功能名称可以为revealResourcesInOS,针对该功能第一桌面框架Electron所提供的第一系统接口是nativeHostService.showItemInFoler,第二桌面框架NW框架所提供的第二系统接口是nw.Shell.showItemInFoler。因此,针对第一资源包中revealResourcesInOS功能的伪代码如下述伪代码片段8所示,
export function revealResourcesInOS(参数): void {
// 调用Electron框架的第一系统接口showItemInFolder实现文件打开
nativeHostService.showItemInFolder(文件位置);
……
}
其中,针对第一系统接口showItemInFolder,根据表1所示的匹配关系,可以确定与该第一系统接口匹配的NW.js框架提供的第二系统接口为nw.Shell.showItemInFolder,计算机设备将第一资源包中引用showItemInFolder的代码片段调整与nw.Shell.showItemInFolder匹配的代码片段,其中,调整后的revealResourcesInOS的伪代码如下述伪代码片段9所示:
export function revealResourcesInOS(参数)
void {
……
// 调用Electron框架的第一系统接口nw.Shell.showItemInFoldernw.Shell.showItemInFolder(文件位置)
……
}
计算机设备基于上述伪代码片段9,对第一资源包中的调整第一资源包中的revealResourcesInOS相关的的代码,得到适用于NW.js框架的revealResourcesInOS功能。
承接上例,以拉起文件选择弹窗的功能为例,第一桌面框架Electron所提供的第一系统接口是 dialog.showSaveDialog 方法,第二桌面框架NW框架所提供的第二系统接口是nw.Shell.showItemInFoler。因此,针对第一资源包中revealResourcesInOS功能的伪代码如下述伪代码片段10所示,
async showSaveDialog(参数) {
……
result = await dialog.showSaveDialog(window, options);
…… }
其中,针对拉起文件选择弹窗的功能,在NW.js框架中转换成使用 input 标签设置对应的 nw 特有属性如 nwworkingdir\nwsaves来支持,相应的伪代码如下述伪代码片段11所示:
export const saveFileDialog = (参数): Promise<string>=> {
input.setAtribute("nwworkingdir',目录)//nw 特有属性如nwworkingdir
input.setAttribute( 'nwdirectory','nwdirectory')
input.onchange = e => {//为Input添加事件 }
//为Input取消事件
input.oncancel = e=> reject ({type:'CANCFKL'/})
}
计算机设备基于上述伪代码片段11,对第一资源包中的与拉起文件选择弹窗的功能相关的资源进行调整,使其适用于NW.js框架。
本实施例中,针对第二子通信类型的资源的调整操作,本质上是通过第二系统接口替换与之存在匹配关系的第一系统接口,如此,以系统接口为调整单位,能够提高系统接口调整的完整性,提高资源调整小,基于系统接口匹配关系的调整,能够提高该方式的普适性,有效适应多种不同桌面框架之间的打通场景。
在一些实施例中,计算机设备可以对适用于第二桌面框架的第二资源包执行以下操作:通过第二资源包,直接在第二桌面框架中以桌面应用的形式运行桌面应用程序,或者,通过第二桌面框架中运行的目标应用程序调用第二资源包,以插件的形式在目标应用程序中运行桌面应用程序。
在实际实施时,第二资源包是对适用于第一桌面框架的桌面应用程序的第一资源包进行调整后得到的。第二资源包适用于第二桌面框架。其中第二资源包在第二桌面框架环境中的运行方式可以直接以桌面应用的形式,在第二桌面框架环境下运行第二资源包对应的桌面应用程序,也就是将第二资源包作为安装包,直接在计算机设备中安装并启动。还可以是将第二资源包与依赖于第二桌面框架的其他桌面应用程序进行集成,即将第二资源包作为插件,在第二桌面框架中运行的目标应用程序中以插件形式调用该第二资源包。
示例性地,以第一桌面框架为Electron框架,第二桌面框架为NW.js框架,依赖于第一桌面框架的应用程序是vscode为例。如图8A所示,在依赖于NW.JS桌面框架开发的已有的开发者工具直接使用调整后的vscode的第二资源包,通过调整后的vscode执行针对NW.JS桌面框架开发的桌面应用程序的资源的相关操作,如图中所示的查看指定文件的文件内容。如图8B所示,将调整后的vscode作为插件,封装在依赖于NW.js框架开发的已有的开发者工具中,以在需要时进行插件安装,从而使用调整后的vscode的能力对依赖于NW.js框架开发的桌面应用程序的资源包进行操作。
本实施例中,针对第二资源包存在多种不同的基于第二桌面框架环境的运行方式,如此,能够增加第二资源包的应用场景。
在一些实施例中,基于第一桌面框架开发的桌面应用程序包括代码编辑应用,通过第二资源包运行的桌面应用程序,用于对第二桌面框架中运行的应用程序的资源进行编辑。
在实际实施时,基于第一桌面框架开发的桌面应用程序可以是代码编辑应用,以第一桌面框架为Electron框架为例,基于Electron框架开发的代码编辑应用如前文中调到的vscode。为了能够让该代码编辑应用能够执行基于第二桌面框架开发的桌面应用程序的应用资源的编辑操作,计算机设备对代码编辑应用的第一资源包执行本申请实施例提供的应用程序处理方法,得到代码编辑应用对应的第二资源包,该第二资源包能够适用于第二桌面框架,如NW.js框架等。
本实施例中,通过对依赖于第一桌面框架开发的代码编辑应用的调整操作,得到适用于第二桌面框架的代码编辑应用,能够让依赖于第二桌面框架的桌面应用程序,可以集成使用该代码编辑应用。从而满足基于第二桌面框架的桌面应用的编辑功能,避免通过降级功能实现,或者消耗自身开发成本来对齐实现一款代码编辑应用。
为详细说明本方案中的应用程序处理方法,下面以一个实施例进行说明,在该实施例中,第一桌面框架是Electron框架,第二桌面框架是NW.js框架,依赖于第一桌面框架开发的桌面应用程序为前文提到的代码编辑工具vscode。具体的应用场景是计算机设备对基于Electron框架开发的vscode进行调整,得到适用于NW.js框架的调整后的vscode。
vscode是一个基于Electron框架的代码编辑器,由于其对Electron框架的强依赖,导致使用其他底层桌面框架(如 NW.js、QT)的业务,无法直接使用到vscode这样强大通用的编辑器。这种其他桌面框架的桌面应用程序,通常只能使用能力更少的vscode的Web版的编辑器,或者自身通过大量开发工作实现维护复杂的编辑器工具。然而,使用降级功能的web版编辑器。不仅功能降级了,缺乏插件市场、更多依赖系统和文件底层能力的编辑能力;另外,还可以针对单独基于NW.js框架开发一款编辑器,但开发编辑器工作十分繁琐且复杂。且无法和业界通用的vscode体验对齐。基于此,本申请实施例提供一种针对基于Electron框架的桌面应用程序vscode的应用程序处理方法,能够去除vscode对Electron框架的绝对依赖,使得vscode能够兼容适配NW.js框架,当然也可以基于其他桌面框架的资源要求,对vscode进行调整,使其兼容相应的桌面框架。
在实际实施时,基于前述描述可知,Electron框架和NW.js框架在技术实现上存在相似的地方,本申请实施例中,对强依赖于Electron框架的vscode进行应用程序处理,本质上是依据与NW.js框架匹配的资源要求,对vscode适用于Electron框架的资源包(即前文中的第一资源包)进行调整,以使得调整后的vscode的资源包(即前文中的第二资源包)能够依赖于NW.js框架使用。在对资源进行调整的过程中至少需要解决Electron桌面框架和NW.js框架之间跨进程通信的差异、启动方式的差异、系统能力接口调用和应用所需文件路径等差异。从而去除vscode的第一资源包针对Electron框架的绝对依赖,得到能够适用于NW.js框架的vscode的第二资源包,如此,不仅能够避免重新开发适用于NW.js框架的vscode的成本投入,还能够使得调整后的依赖于NW.js框架的vscode的使用体验与调整前的依赖于Electron框架的vscode的使用体验对齐。
可以理解的是,本申请实施例所提供的应用程序处理方法在技术层面上主要是以下5个方面去除vscode针对Electron框架的绝对依赖,以得到能够兼容适配NW.js框架的调整后的vscode。具体包括:1)去除不必要的环境模块代码;2)解决系统能力调用通信差异;3)解决桌面框架能力API接口差异;4)解决vscode针对两个桌面框架的依赖差异;5)解决不同桌面框架间启动方式的差异。
针对去除不必要的环境模块代码的具体实现方式进行说明,如图7所示,vscode将整个功能按照不同运行环境模块分成图中5个运行环境模块,每个运行环境模块本质上是一个文件夹,common模块包括公共的js方法,browser模块包括只使用浏览器应用程序接口(Application Programming Interface,API)的代码,node模块只使用nodejs API的代码,electron-browser模块是使用electron渲染线程和浏览器API的代码,electron-main模块是使用electron主进程和node.js API的代码。但是如图6所示,在NW.js框架中不包括electron-browser模块和electron-main模块,因此,计算机设备可以直接去除electron-browser模块和electron-main模块以及模块关联的代码,并增加NW.js的适配的运行环境模块。示例性地,如图9,图9为一个实施例中运行环境模块的调整方式示例图,去除图9中编号1示出的vscode中与electron相关的运行环境模块electron-browser模块中的electron-browser/extensionService,同时新增图9中编号2示出的与NW.js框架相关的“nw/extensionService”运行环境模块。
针对解决系统能力调用通信差异的具体实现方式进行说明,根据前述描述可知,electron框架与nw.js框架的实现原理不同。Electron桌框架中与操作系统交互时存在跨进程通信,为了实现该跨进程通信,Electron专门实现了一个实现进程间通信的通用通信模块可称为IPC,来负责渲染进程和主进程之间跨进程的通信处理。如图10所示,图10为一个实施例中通用进程间通信模块的结构示例图,图中示出的是IPC通用通信模块的结构。可以理解的是,两个桌面框架存在着对系统能力调用的差异,因此,计算机设备将vscode中通过IPC通道调用主进程服务的渲染进程,直接改成每个进程上下文单独调用即可。示例性地,如前述伪代码片段2示出的基于Electron框架的vscode需要通过MainProcessService这个实例去获取和主进程跨进度通信的IPC通道。然后通过该通道发送系统接口命令给到主进程调用,以通过主进程实现与操作系统的交互。而在NW.js桌面框架中运行时,无需依赖MainProcessService,直接在自身进程中进行系统能力的调用,如前述伪代码片段3所示。
针对解决桌面框架能力系统接口差异的具体实现方式进行说明,在实际实施时,Electron和NW.js两个桌面框架都提供了多个与操作系统交互的API(即前文中的系统接口)。如创建系统菜单、剪贴板、文件系统处理等。由于在NW.js框架运行的桌面应用,无法调用Electron框架所支持的系统接口,因此,计算机设备将Electron框架所支持的系统接口(即前文中的第一系统接口)转换成NW.js框架所支持的系统接(即前文中的第二系统接口)。在接口转换过程中,通常可以预设设置一个如表1所示的系统接口匹配关系,计算机设备根据该系统接口匹配关系,将vscode中Electron框架所支持的第一系统接口调整为NW.js框架所支持的第二系统接口。如前述伪代码片段4至7示出的使用系统剪贴板读写能力的系统接口调整示例,前述伪代码片段8和9示出的打开指定路径的文件位置的系统接口的调整示例,以及前述伪代码片段10和11示出的拉起文件选择弹窗的系统接口的调整示例。
针对解决vscode针对两个桌面框架的依赖差异的具体实现方式进行说明,在实际实施时,vscode依赖了一些基于通用编程语言(如c++)实现的原生组件,其是通过与Electron桌面框架相适配的node-gyp工具构建生成跨平台二进制文件如vscode-ripgrep、vscode-oniguruma、vscode-textmate、vscode-fsevents、node-pty、spdlog等,这些依赖产物不能直接适用于NW.js桌面框架,计算机设备调用与NW.js桌面框架相适配的nw-gyp的编译工具对上述依赖产物的代码进行重新编译。具体的编译步骤包括:首先,获取每个原生模块的源码;其次,使用nw-gyp编译工具重新编译成所需的NW.js环境的二进制形式的依赖产物;最后,替换vscode所依赖的基于node-gyp所编译的原生模块二进制形式的依赖产物。
针对解决不同桌面框架间启动方式的差异的具体实现方式进行说明。在实际实施时,Electron应用的入口是js文件,而NW.js的启动入口是html,因此计算机设备执行新增操作,即新增一个html格式的启动文件作为启动入口,来并在该html格式的启动文件中加载vscode编辑器的js文件,具体的代码修改过程如前述伪代码片段1所示。
在实际实施时,计算机设备解决了上述5个方面的差异之后,得到的调整后的vscode能够兼容并适用于NW.js桌面框架,也就是可以以插件的形式在依赖于NW.JS桌面框架的桌面应用程序中使用调整后的vscode。示例性地,如图8A所示,在依赖于NW.js桌面框架开发的已有的开发者工具中直接使用调整后的vscode的编辑器能力。如图8B所示,将调整后的vscode作为插件,封装在依赖于NW.js桌面框架开发的已有的开发者工具中,以在需要时进行插件安装,从而使用vscode的编辑能力。
应用本申请实施例,能够让依赖于NW.js桌面框架的桌面应用程序,可以集成使用vscode编辑器模块。从而满足基于NW.js的桌面应用的编辑功能,避免通过降级功能实现,或者消耗自身开发成本来对齐实现一款编辑器。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的应用程序处理方法的应用程序处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个应用程序处理装置实施例中的具体限定可以参见上文中对于应用程序处理方法的限定,在此不再赘述。
在一些实施例中,如图11所示,提供了一种应用程序处理装置1100包括:确定模块1110、获取模块1120、调整模块1130和运行模块1140,其中:
确定模块1110,用于确定依赖于第一桌面框架开发的桌面应用程序。
获取模块1120,用于获取桌面应用程序的第一资源包,第一资源包适用于第一桌面框架,且包含有桌面应用程序在应用程序的生命周期内所需的应用资源。
调整模块1130,用于依据与第二桌面框架匹配的资源要求,对第一资源包进行调整,得到适用于第二桌面框架的第二资源包。
运行模块1140,用于通过第二资源包在第二桌面框架中运行桌面应用程序。
在一些实施例中,第一资源包中的应用资源包括以下至少之一:桌面应用程序在应用程序的生命周期的启动阶段所需的启动资源,桌面应用程序在应用程序的生命周期的运行阶段所需的运行环境资源,桌面应用程序在应用程序的生命周期的运行阶段所需的通信资源。
在一些实施例中,调整模块,还用于确定桌面应用程序在应用程序的生命周期内所需的应用资源的资源类型;针对各资源类型,确定与第二桌面框架匹配的资源要求;针对任一资源类型,依据所针对资源类型的资源要求,对第一资源包中的所针对资源类型的资源进行调整,得到调整后的资源;基于各资源类型的调整后的资源,确定适用于第二桌面框架的第二资源包。
在一些实施例中,资源类型包括启动资源类型,调整模块,还用于针对启动资源类型,获取第一资源包中的第一启动文件;第一启动文件对应第一格式;依据启动资源类型的资源要求,构建与第二桌面框架匹配的对应第二格式的初始启动文件;在初始启动文件中引用第一启动文件,以生成适用于第二桌面框架的目标启动文件;目标启动文件为调整后的资源。
在一些实施例中,资源类型包括环境资源类型,环境资源类型包括第一子环境类型和第二子环境类型,第一子环境类型用于指示桌面应用程序的运行环境的文件夹,第二子环境类型用于指示桌面应用程序运行时所依赖的基于通用编程语言实现的依赖产物,调整模块,还用于针对环境资源类型,依据环境资源类型的资源要求,对第一资源包中第一子环境类型的资源进行调整,对第一资源包中第二子环境类型的资源进行调整;基于调整后的第一子环境类型的资源,以及调整后的第二子环境类型的资源,确定调整后的环境资源类型的资源。
在一些实施例中,调整模块,还用于确定第一资源包中与运行环境相关的第一文件夹;确定与第二桌面框架匹配的且与运行环境相关的第二文件夹;删除第一文件夹中与第一桌面框架相关的文件夹,并将第二文件夹添置至第一资源包中。
在一些实施例中,调整模块,还用于确定第一资源包中第一依赖产物;获取第一依赖产物的源代码,通过第二桌面框架对应的编译组件对源代码进行重新编译,生成与第二桌面框架相适配的第二依赖产物;将第一资源包中的第一依赖产物替换为第二依赖产物。
在一些实施例中,资源类型包括通信资源类型,通信资源类型包括第一子通信类型和第二子通信类型,第一子通信类型用于指示进行跨进程通信所需的资源,第二子通信类型用于指示调用操作系统相关的系统接口所需的资源,调整模块,还用于针对通信资源类型,依据通信资源类型的资源要求,对第一资源包中第一子通信类型的资源进行调整,对第一资源包中第二子通信类型的资源进行调整;基于调整后的第一子通信类型的资源,以及调整后的第二子通信类型的资源,确定调整后的通信资源类型的资源。
在一些实施例中,调整模块,还用于确定第一资源包中存在跨进程通信的渲染进程的代码;跨进程通信用于实现渲染进程与操作系统间的通信;对渲染进程的代码进行调整,以使得代码调整后的渲染进程在与操作系统进行通信时直接通过上下文调用实现。
在一些实施例中,调整模块,还用于确定第一资源包调用的第一系统接口;从第二桌面框架提供的系统接口中,确定与第一系统接口的功能一致的第二系统接口;基于第二系统接口,对第一资源包中调用第一系统接口的代码进行调整。
在一些实施例中,运行模块,还用于通过第二资源包,直接在第二桌面框架中以桌面应用的形式运行所述桌面应用程序,或者,通过第二桌面框架中运行的目标应用程序调用第二资源包,以插件的形式在目标应用程序中运行桌面应用程序。
在一些实施例中,应用程序处理装置所使用的桌面应用程序包括代码编辑应用,通过第二资源包运行的桌面应用程序,用于对第二桌面框架中运行的应用程序的资源进行编辑。
上述应用程序处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个示例性的实施例中,提供了一种计算机设备,该计算机设备可以是图1中的服务器或终端,其内部结构图可以如图12所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储桌面应用程序的资源数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种应用程序处理方法。
本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一些实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一些实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一些实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要符合相关规定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (19)
1.一种应用程序处理方法,其特征在于,所述方法包括:
确定依赖于第一桌面框架开发的桌面应用程序;所述第一桌面框架包括Electron框架;
获取所述桌面应用程序依赖于所述第一桌面框架运行所需的第一资源包,所述第一资源包包含有所述桌面应用程序在应用程序的生命周期内所需的应用资源;所述应用资源包括所述桌面应用程序在启动阶段所需的启动资源,以及在运行阶段所需的运行环境资源和通信资源;
依据与第二桌面框架匹配的资源要求,对所述第一资源包中的启动资源、运行环境资源和通信资源进行调整,得到依赖于所述第二桌面框架使用的第二资源包;所述第二桌面框架包括NW.js框架;
通过所述第二资源包在所述第二桌面框架中运行所述桌面应用程序;
其中,对所述第一资源包中的通信资源进行调整的步骤包括:
确定所述第一资源包中存在跨进程通信的渲染进程的代码,所述跨进程通信用于实现渲染进程与操作系统间的通信,对所述渲染进程的代码进行调整,以使得代码调整后的渲染进程在与操作系统进行通信时直接通过上下文调用实现;
确定所述第一资源包调用的第一系统接口,从所述第二桌面框架提供的系统接口中,确定与所述第一系统接口的功能一致的第二系统接口,基于所述第二系统接口,对所述第一资源包中调用所述第一系统接口的代码进行调整。
2.根据权利要求1所述的方法,其特征在于,所述依据与第二桌面框架匹配的资源要求,对所述第一资源包中的启动资源、运行环境资源和通信资源进行调整,得到依赖于所述第二桌面框架使用的第二资源包,包括:
分别确定所述第一资源包中的启动资源、运行环境资源和通信资源的资源类型;
针对各所述资源类型,确定与第二桌面框架匹配的资源要求;
针对任一资源类型,依据所针对资源类型的资源要求,对所述第一资源包中的所针对资源类型的资源进行调整,得到调整后的资源;
基于各资源类型的所述调整后的资源,确定适用于所述第二桌面框架的第二资源包。
3.根据权利要求2所述的方法,其特征在于,所述资源类型包括启动资源类型,所述针对任一资源类型,依据所针对资源类型的资源要求,对所述第一资源包中的所针对资源类型的资源进行调整,得到调整后的资源,包括:
针对启动资源类型,获取所述第一资源包中的第一启动文件;所述第一启动文件对应第一格式;
依据所述启动资源类型的资源要求,构建与第二桌面框架匹配的对应第二格式的初始启动文件;
在所述初始启动文件中引用所述第一启动文件,以生成适用于第二桌面框架的目标启动文件;所述目标启动文件为调整后的资源。
4.根据权利要求2所述的方法,其特征在于,所述资源类型包括环境资源类型,所述环境资源类型包括第一子环境类型和第二子环境类型,所述第一子环境类型用于指示桌面应用程序的运行环境的文件夹,所述第二子环境类型用于指示桌面应用程序运行时所依赖的基于通用编程语言实现的依赖产物,
所述针对任一资源类型,依据所针对资源类型的资源要求,对所述第一资源包中的所针对资源类型的资源进行调整,得到调整后的资源,包括:
针对环境资源类型,依据所述环境资源类型的资源要求,对所述第一资源包中所述第一子环境类型的资源进行调整,对所述第一资源包中所述第二子环境类型的资源进行调整;
基于调整后的所述第一子环境类型的资源,以及调整后的所述第二子环境类型的资源,确定调整后的所述环境资源类型的资源。
5.根据权利要求4所述的方法,其特征在于,所述对所述第一资源包中所述第一子环境类型的资源进行调整,包括:
确定所述第一资源包中与运行环境相关的第一文件夹;
确定与所述第二桌面框架匹配的且与运行环境相关的第二文件夹;
删除所述第一文件夹中与第一桌面框架相关的文件夹,并将所述第二文件夹添置至所述第一资源包中。
6.根据权利要求4所述的方法,其特征在于,所述对所述第一资源包中所述第二子环境类型的资源进行调整,包括:
确定所述第一资源包中第一依赖产物;
获取所述第一依赖产物的源代码,通过所述第二桌面框架对应的编译组件对所述源代码进行重新编译,生成与所述第二桌面框架相适配的第二依赖产物;
将所述第一资源包中的所述第一依赖产物替换为所述第二依赖产物。
7.根据权利要求1所述的方法,其特征在于,所述通过所述第二资源包在所述第二桌面框架中运行所述桌面应用程序,包括:
通过所述第二资源包,直接在所述第二桌面框架中以桌面应用的形式运行所述桌面应用程序,或者,
通过第二桌面框架中运行的目标应用程序调用所述第二资源包,以插件的形式在所述目标应用程序中运行所述桌面应用程序。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述桌面应用程序包括代码编辑应用,通过所述第二资源包运行的桌面应用程序,用于对所述第二桌面框架中运行的应用程序的资源进行编辑。
9.一种应用程序处理装置,其特征在于,所述装置包括:
确定模块,用于确定依赖于第一桌面框架开发的桌面应用程序;所述第一桌面框架包括Electron框架;
获取模块,用于获取所述桌面应用程序依赖于所述第一桌面框架运行所需的第一资源包,所述第一资源包包含有所述桌面应用程序在应用程序的生命周期内所需的应用资源;所述应用资源包括所述桌面应用程序在启动阶段所需的启动资源,以及在运行阶段所需的运行环境资源和通信资源;
调整模块,用于依据与第二桌面框架匹配的资源要求,对所述第一资源包中的启动资源、运行环境资源和通信资源进行调整,得到适用于所述第二桌面框架的第二资源包;所述第二桌面框架包括NW.js框架;
运行模块,用于通过所述第二资源包在所述第二桌面框架中运行所述桌面应用程序;
其中,所述调整模块具体用于:确定所述第一资源包中存在跨进程通信的渲染进程的代码,所述跨进程通信用于实现渲染进程与操作系统间的通信,对所述渲染进程的代码进行调整,以使得代码调整后的渲染进程在与操作系统进行通信时直接通过上下文调用实现;确定所述第一资源包调用的第一系统接口,从所述第二桌面框架提供的系统接口中,确定与所述第一系统接口的功能一致的第二系统接口,基于所述第二系统接口,对所述第一资源包中调用所述第一系统接口的代码进行调整。
10.根据权利要求9所述的装置,其特征在于,
所述调整模块,还用于分别确定所述第一资源包中的启动资源、运行环境资源和通信资源的资源类型;针对各所述资源类型,确定与第二桌面框架匹配的资源要求;针对任一资源类型,依据所针对资源类型的资源要求,对所述第一资源包中的所针对资源类型的资源进行调整,得到调整后的资源;基于各资源类型的所述调整后的资源,确定适用于所述第二桌面框架的第二资源包。
11.根据权利要求10所述的装置,其特征在于,所述资源类型包括启动资源类型,
所述调整模块,还用于针对启动资源类型,获取所述第一资源包中的第一启动文件;所述第一启动文件对应第一格式;依据所述启动资源类型的资源要求,构建与第二桌面框架匹配的对应第二格式的初始启动文件;在所述初始启动文件中引用所述第一启动文件,以生成适用于第二桌面框架的目标启动文件;所述目标启动文件为调整后的资源。
12.根据权利要求10所述的装置,其特征在于,所述资源类型包括环境资源类型,所述环境资源类型包括第一子环境类型和第二子环境类型,所述第一子环境类型用于指示桌面应用程序的运行环境的文件夹,所述第二子环境类型用于指示桌面应用程序运行时所依赖的基于通用编程语言实现的依赖产物,
所述调整模块,还用于针对环境资源类型,依据所述环境资源类型的资源要求,对所述第一资源包中所述第一子环境类型的资源进行调整,对所述第一资源包中所述第二子环境类型的资源进行调整;基于调整后的所述第一子环境类型的资源,以及调整后的所述第二子环境类型的资源,确定调整后的所述环境资源类型的资源。
13.根据权利要求12所述的装置,其特征在于,
所述调整模块,还用于确定所述第一资源包中与运行环境相关的第一文件夹;确定与所述第二桌面框架匹配的且与运行环境相关的第二文件夹;删除所述第一文件夹中与第一桌面框架相关的文件夹,并将所述第二文件夹添置至所述第一资源包中。
14.根据权利要求12所述的装置,其特征在于,
所述调整模块,还用于确定所述第一资源包中第一依赖产物;获取所述第一依赖产物的源代码,通过所述第二桌面框架对应的编译组件对所述源代码进行重新编译,生成与所述第二桌面框架相适配的第二依赖产物;将所述第一资源包中的所述第一依赖产物替换为所述第二依赖产物。
15.根据权利要求9所述的装置,其特征在于,
所述运行模块,还用于通过所述第二资源包,直接在所述第二桌面框架中以桌面应用的形式运行所述桌面应用程序,或者,通过第二桌面框架中运行的目标应用程序调用所述第二资源包,以插件的形式在所述目标应用程序中运行所述桌面应用程序。
16.根据权利要求9至15中任一项所述的装置,其特征在于,
所述桌面应用程序包括代码编辑应用,通过所述第二资源包运行的桌面应用程序,用于对所述第二桌面框架中运行的应用程序的资源进行编辑。
17.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
19.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410011248.1A CN117519691B (zh) | 2024-01-04 | 2024-01-04 | 应用程序处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410011248.1A CN117519691B (zh) | 2024-01-04 | 2024-01-04 | 应用程序处理方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117519691A CN117519691A (zh) | 2024-02-06 |
CN117519691B true CN117519691B (zh) | 2024-04-16 |
Family
ID=89753463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410011248.1A Active CN117519691B (zh) | 2024-01-04 | 2024-01-04 | 应用程序处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117519691B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9118538B1 (en) * | 2013-03-15 | 2015-08-25 | Emc Corporation | Method and system for configuring resources to enable resource monitoring |
CN110297624A (zh) * | 2019-07-03 | 2019-10-01 | 四川长虹电器股份有限公司 | 基于electron框架的Widget系统的实现方法及采用该系统的电视机 |
CN112822193A (zh) * | 2021-01-05 | 2021-05-18 | 网易(杭州)网络有限公司 | 应用通信方法、装置、设备及存储介质 |
CN113760362A (zh) * | 2020-06-03 | 2021-12-07 | 腾讯科技(深圳)有限公司 | 应用程序的移植方法、装置、设备及介质 |
WO2022120640A1 (zh) * | 2020-12-09 | 2022-06-16 | 深圳智药科技有限公司 | 基于electron的更新方法及系统 |
CN114706616A (zh) * | 2022-03-25 | 2022-07-05 | 中国建设银行股份有限公司 | 小程序构建方法和装置 |
CN115525282A (zh) * | 2022-10-26 | 2022-12-27 | 平安银行股份有限公司 | 跨平台桌面应用程序的实现方法及其相关设备 |
CN116010002A (zh) * | 2022-12-14 | 2023-04-25 | 中电信数智科技有限公司 | 基于IndexedDB存储的Electron桌面应用任务管理方法 |
CN116204227A (zh) * | 2023-01-19 | 2023-06-02 | 麒麟软件有限公司 | 快速移植electron软件的方法 |
-
2024
- 2024-01-04 CN CN202410011248.1A patent/CN117519691B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9118538B1 (en) * | 2013-03-15 | 2015-08-25 | Emc Corporation | Method and system for configuring resources to enable resource monitoring |
CN110297624A (zh) * | 2019-07-03 | 2019-10-01 | 四川长虹电器股份有限公司 | 基于electron框架的Widget系统的实现方法及采用该系统的电视机 |
CN113760362A (zh) * | 2020-06-03 | 2021-12-07 | 腾讯科技(深圳)有限公司 | 应用程序的移植方法、装置、设备及介质 |
WO2022120640A1 (zh) * | 2020-12-09 | 2022-06-16 | 深圳智药科技有限公司 | 基于electron的更新方法及系统 |
CN112822193A (zh) * | 2021-01-05 | 2021-05-18 | 网易(杭州)网络有限公司 | 应用通信方法、装置、设备及存储介质 |
CN114706616A (zh) * | 2022-03-25 | 2022-07-05 | 中国建设银行股份有限公司 | 小程序构建方法和装置 |
CN115525282A (zh) * | 2022-10-26 | 2022-12-27 | 平安银行股份有限公司 | 跨平台桌面应用程序的实现方法及其相关设备 |
CN116010002A (zh) * | 2022-12-14 | 2023-04-25 | 中电信数智科技有限公司 | 基于IndexedDB存储的Electron桌面应用任务管理方法 |
CN116204227A (zh) * | 2023-01-19 | 2023-06-02 | 麒麟软件有限公司 | 快速移植electron软件的方法 |
Non-Patent Citations (1)
Title |
---|
基于Electron的跨平台客户端技术;张佳伟等;智能计算机与应用;20170628(03);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117519691A (zh) | 2024-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9934005B2 (en) | Dynamically building locale objects or subsections of locale objects based on historical data | |
US9161156B2 (en) | Tiles in a mobile application framework | |
US10146522B1 (en) | Live code updates | |
KR101795844B1 (ko) | 런타임 시스템 | |
US10296297B2 (en) | Execution semantics for sub-processes in BPEL | |
US10303449B2 (en) | Compiling non-native constants | |
US20170269929A1 (en) | Modular serialization | |
CN111680253B (zh) | 页面应用数据包生成方法、装置、计算机设备及存储介质 | |
US9135035B2 (en) | Markup language integration at runtime | |
US9552239B2 (en) | Using sub-processes across business processes in different composites | |
US6785880B1 (en) | Tooling framework system and method for code generation | |
US9244706B2 (en) | Command line shell command generation based on schema | |
US20140089906A1 (en) | Dynamically building locale objects at run-time | |
CN117519691B (zh) | 应用程序处理方法、装置、计算机设备和存储介质 | |
CN116226921A (zh) | 一种脱敏处理方法及装置 | |
US20090265717A1 (en) | Container Context Information Propagation in an Aspect-Oriented Environment | |
US9141383B2 (en) | Subprocess definition and visualization in BPEL | |
US10346225B2 (en) | Synthesized modules for module renaming | |
CN117195239A (zh) | 微应用资源包生成方法、装置、计算机设备和存储介质 | |
US9792093B2 (en) | Dynamically building subsections of locale objects at run-time | |
CN118051221A (zh) | 一种程序生成方法及相关设备 | |
CN116301780A (zh) | 基于Springboot框架的代码自动生成方法及系统 | |
CN114968200A (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 |