CN111142935A - 跨平台运行应用程序的方法、装置、计算机系统和介质 - Google Patents

跨平台运行应用程序的方法、装置、计算机系统和介质 Download PDF

Info

Publication number
CN111142935A
CN111142935A CN201911425317.9A CN201911425317A CN111142935A CN 111142935 A CN111142935 A CN 111142935A CN 201911425317 A CN201911425317 A CN 201911425317A CN 111142935 A CN111142935 A CN 111142935A
Authority
CN
China
Prior art keywords
code
platform
running
file
determining
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
CN201911425317.9A
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.)
Qianxin Technology Group Co Ltd
Secworld Information Technology Beijing Co Ltd
Original Assignee
Qianxin Technology Group Co Ltd
Secworld Information Technology Beijing 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 Qianxin Technology Group Co Ltd, Secworld Information Technology Beijing Co Ltd filed Critical Qianxin Technology Group Co Ltd
Priority to CN201911425317.9A priority Critical patent/CN111142935A/zh
Publication of CN111142935A publication Critical patent/CN111142935A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种跨平台运行应用程序的方法,包括:获取能够在第一平台上运行的应用程序的功能代码;确定用于运行功能代码的第二平台的编译文件,其中,编译文件包括用于实现跨平台运行功能代码的编译代码;确定针对第二平台的头文件;以及根据功能代码、编译文件和头文件在第二平台运行应用程序。本公开还提供了一种跨平台运行应用程序的装置、一种计算机系统和一种计算机可读存储介质。

Description

跨平台运行应用程序的方法、装置、计算机系统和介质
技术领域
本公开涉及计算机技术领域,更具体地,涉及一种跨平台运行应用程序的方法、一种跨平台运行应用程序的装置、一种计算机系统、一种计算机可读存储介质和一种计算机程序产品。
背景技术
随着计算机技术的快速发展,各种应用程序层出不穷,支持应用程序运行的操作平台也越来越多。例如,对于移动终端,存在安卓系统和iOS系统。由于应用环境和需要实现的功能越来越复杂,现有的项目开发,同一个产品项目可能运行在多个平台下,例如,新开发的一款应用程序可能需要运行在安卓系统和iOS系统。
在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:新增一种平台支持会涉及到编译差异、代码内部的逻辑差异、运行差异等方方面面的差异,相关技术中针对实现相同或类似功能的应用程序大多需要拆分出多套代码,一套代码一般支持一种平台,既不利于维护,也不利于扩展,同时增加了开发工作量和出错风险。
发明内容
有鉴于此,本公开提供了一种跨平台运行应用程序的方法、一种跨平台运行应用程序的装置、一种计算机系统、一种计算机可读存储介质和一种计算机程序产品。
本公开的一个方面提供了一种跨平台运行应用程序的方法,包括:获取能够在第一平台上运行的应用程序的功能代码;确定用于运行上述功能代码的第二平台的编译文件,其中,上述编译文件包括用于实现跨平台运行上述功能代码的编译代码;确定针对上述第二平台的头文件;以及根据上述功能代码、上述编译文件和上述头文件在上述第二平台运行上述应用程序。
根据本公开的实施例,上述确定针对上述第二平台的头文件包括:确定上述功能代码中属于可移植的代码部分和不可移植的代码部分;以及在上述第二平台的头文件中添加上述不可移植的代码部分的定义。
根据本公开的实施例,上述的方法还包括:确定上述功能代码中不能在上述第二平台上运行的特殊逻辑代码;以及在上述功能代码中对上述特殊逻辑代码进行标记。
根据本公开的实施例,在上述功能代码中对上述特殊逻辑代码进行标记包括:利用上述第一平台的标识对上述特殊逻辑代码进行标记。
根据本公开的实施例,上述编译文件包括:用于检测系统配置、定义所需环境变量并建立软链接目录的文件,以及用于编译操作和安装操作的规则文件。
本公开的另一个方面提供了一种跨平台运行应用程序的装置,包括:获取模块,用于获取能够在第一平台上运行的应用程序的功能代码;第一确定模块,用于确定用于运行上述功能代码的第二平台的编译文件,其中,上述编译文件包括用于实现跨平台运行上述功能代码的编译代码;第二确定模块,用于确定针对上述第二平台的头文件;以及运行模块,用于根据上述功能代码、上述编译文件和上述头文件在上述第二平台运行上述应用程序。
根据本公开的实施例,上述第二确定模块包括:确定单元,用于确定上述功能代码中属于可移植的代码部分和不可移植的代码部分;以及添加单元,用于在上述第二平台的头文件中添加上述不可移植的代码部分的定义。
根据本公开的实施例,上述的装置还包括:第三确定模块,用于确定上述功能代码中不能在上述第二平台上运行的特殊逻辑代码;以及标记模块,用于在上述功能代码中对上述特殊逻辑代码进行标记;其中,在上述功能代码中对上述特殊逻辑代码进行标记包括:利用上述第一平台的标识对上述特殊逻辑代码进行标记。
本公开的另一个方面提供了一种计算机系统,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
本公开的另一个方面提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现如上所述的方法。
本公开的另一方面提供了一种计算机程序产品,包括可执行指令,该指令被处理器执行时使处理器实现如上所述的方法。
根据本公开的实施例,通过获取能够在第一平台上运行的应用程序的功能代码;确定用于运行功能代码的第二平台的编译文件,其中,编译文件包括用于实现跨平台运行所述功能代码的编译代码;确定针对第二平台的头文件;以及根据功能代码、编译文件和头文件在第二平台运行应用程序,使得能够在一套用户态功能代码的前提下,为不同平台提供对应的编译代码,功能代码不感知编译差异。同时应用程序具有可移植性,新增一种平台支持无需新增一套代码,改动量小,大大提高了效率,节约了开发时间及成本。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的可以应用跨平台运行应用程序的方法及装置的应用场景;
图2示意性示出了根据本公开实施例的跨平台运行应用程序的方法的流程图;
图3示意性示出了根据本公开实施例的确定针对所述第二平台的头文件的流程图;
图4示意性示出了根据本公开另一实施例的跨平台运行应用程序的方法的流程图;
图5示意性示出了根据本公开另一实施例的跨平台运行应用程序的方法的流程图;
图6示意性示出了根据本公开实施例的跨平台运行应用程序的装置的框图;以及
图7示意性示出了根据本公开实施例的适于实现跨平台运行应用程序的方法的计算机系统的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
在本公开的实施例中,与本公开相关的术语解释可以包括如下。
可移植性:是软件产品的一种能力属性,属于软件质量之一,是指将软件从某一环境转移到另一环境下的难易程度。可移植性并不意味着程序不作修改就可以通用,而是指在不同的场景下,程序无需作很多修改就可以运行。
Configure文件:有大量的命令行选项的脚本,根据运行的系统环境生成makefile文件及其他规则文件。
gencfg文件:被configure文件调用的脚本,完成configure功能的主题文件。
Makefile文件:Makefile按某种语法编写,用于自动编译源文件、链接生成可执行文件,Makefile文件要定义源文件之间的依赖关系。
GCC:一个编程常用到的编译器,用来将源代码编译出可执行程序。
builtin:GCC提供的用于实现一些简单快捷的功能的一系列函数,方便程序编写,也可以用来优化编译结果。
本公开的实施例提供了一种跨平台运行应用程序的方法,包括:获取能够在第一平台上运行的应用程序的功能代码;确定用于运行功能代码的第二平台的编译文件,其中,编译文件包括用于实现跨平台运行功能代码的编译代码;确定针对第二平台的头文件;以及根据功能代码、编译文件和头文件在第二平台运行应用程序。
图1示意性示出了根据本公开实施例的可以应用跨平台运行应用程序的方法及装置的应用场景。需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、终端设备102和网络103。网络103用以在终端设备101和终端设备102之间提供通信链路的介质。网络103可以包括各种连接类型,例如有线和/或无线通信链路等等。
终端设备101和102可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
终端设备101可以支持iOS系统,终端设备102可以支持安卓系统。
终端设备102可以获取能够在iOS系统上运行的应用程序的功能代码,确定用于运行功能代码的安卓系统的编译文件,其中,所述编译文件包括用于实现跨平台运行所述功能代码的编译代码;确定针对安卓系统的头文件;以及根据所述功能代码、所述编译文件和所述头文件在所述安卓系统运行所述应用程序。
本公开实施例所提供的跨平台运行应用程序的方法可以由终端设备102执行,或者也可以由不同于终端设备102的其他终端设备执行。相应地,本公开实施例所提供的跨平台运行应用程序的装置也可以设置于终端设备102中,或设置于不同于终端设备102的其他终端设备中。
应该理解,图1中的终端设备和网络的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备和网络。
图2示意性示出了根据本公开实施例的跨平台运行应用程序的方法的流程图。
如图2所示,该方法包括操作S210~S240。
在操作S210,获取能够在第一平台上运行的应用程序的功能代码。
在操作S220,确定用于运行所述功能代码的第二平台的编译文件,其中,所述编译文件包括用于实现跨平台运行所述功能代码的编译代码。
根据本公开的实施例,所述编译文件包括:用于检测系统配置、定义所需环境变量并建立软链接目录的文件,以及用于编译操作和安装操作的规则文件。
例如,编译文件涉及configure、gencfg、linux.mak、Top.mak四个编译相关文件。其中,configure文件和gencfg文件是执行configure时的脚本,用于检测系统配置、定义所需环境变量、建立软链接目录及文件并生成各目录下的Makefile,linux.mak和Top.mak是后续编译、安装等操作的规则文件。
本公开可以在编写功能代码时屏蔽平台差异,比如原子操作、内存屏障等尽量用GCC的builtin代替等方式,保证了底层代码的通用性,将平台差异重点体现在编译过程是实现跨平台功能的重要部分。
根据本公开的实施例,对第一平台、第二平台的类型不做限定,以国产化平台为例,例如飞腾平台、兆芯平台、申威平台。飞腾基于ARM架构,兆芯是X86架构,申威Alpha架构,在功能需求基本一致的前提下,每新增一种平台支持可以不单独开发新的用户态功能代码,而只需为该平台增加对应的编译代码,即增加该平台的上述四个文件作为编译文件,在编译文件内定义所需的编译内容。如飞腾平台需要定义arm相关的流程,兆芯是x86流程,申威则是sw流程。三套编译代码互不影响,功能代码无需单独开发。
在操作S230,确定针对所述第二平台的头文件。
由于代码内部逻辑可能会存在平台差异,实现代码可移植性的关键是代码最大程度通用。通过采用本公开的跨平台运行应用程序的方法,可以保证基于国产化平台架构的应用程序的可移植性,如编程时数据结构考虑对齐,多核共享数据的读写考虑弱序CPU,数据结构名、宏、接口等尽可能保持一致,这样使得每新增一种平台支持,代码基本是可移植的而不需改动,只需在新增该平台自定义的头文件,将数据、接口的差异性体现在头文件中。国产化代码在公共头文件目录下,定义了arm64、x86、alpha三个平台的头文件目录,分别对应飞腾平台、兆芯平台和申威平台。例如,以头文件rte_atomic.h为例,该三个平台的头文件里定义的许多接口的实现内容不一样。
根据本公开的实施例,如需新增一种平台,可以增加对应的头文件目录及头文件代码,通过确定针对新增平台的头文件,可以保证底层代码的可移植性,增加平台相关性文件。
在操作S240,根据所述功能代码、所述编译文件和所述头文件在所述第二平台运行所述应用程序。
根据本公开的实施例,通过获取能够在第一平台上运行的应用程序的功能代码;确定用于运行功能代码的第二平台的编译文件,其中,编译文件包括用于实现跨平台运行所述功能代码的编译代码;确定针对第二平台的头文件;以及根据功能代码、编译文件和头文件在第二平台运行应用程序,使得能够在一套用户态功能代码的前提下,为不同平台提供对应的编译代码,功能代码不感知编译差异。同时应用程序具有可移植性,新增一种平台支持无需新增一套代码,改动量小,大大提高了效率,节约了开发时间及成本。
下面参考图3~图5,结合具体实施例对图2所示的方法做进一步说明。
图3示意性示出了根据本公开实施例的确定针对所述第二平台的头文件的流程图。
如图3所示,确定针对所述第二平台的头文件包括操作S310~S320。
在操作S310,确定所述功能代码中属于可移植的代码部分和不可移植的代码部分。
在操作S320,在所述第二平台的头文件中添加所述不可移植的代码部分的定义。
操作平台的可移植性的其中一个关键因素是内核的可移植性。如果对操作平台的内核的改动较小,而重要的数据收发逻辑需要在用户态功能代码实现,这可以降低跨平台的可移植与内核之间的耦合度。用户态功能代码的实现一般为产品自主研发,通过确定功能代码中属于可移植的代码部分和不可移植的代码部分,在新增平台的头文件中添加不可移植的代码部分的定义,可以充分考虑跨平台和可移植性的实现,在编码过程中可以使用C、Phython、Go等可移植性语言,从而使新增一种平台支持的方法大大简化而水到渠成。
图4示意性示出了根据本公开另一实施例的跨平台运行应用程序的方法的流程图。
如图4所示,在该实施例中,除了包括操作S210~S240之外,还可以包括操作S410~S420。
在操作S410,确定所述功能代码中不能在所述第二平台上运行的特殊逻辑代码。
在操作S420,在所述功能代码中对所述特殊逻辑代码进行标记。
根据本公开的实施例,可以利用第一平台的标识对特殊逻辑代码进行标记。
根据本公开的实施例,可以以平台标识区分代码内部逻辑差异。对于无法做到通用性的特殊逻辑,可以在功能代码中新增以该平台标识来区分的特殊处理流程。例如,国产化支持的三种平台对应三个标识:SYSTEM_AARCH64、SYSTEM_X86、SYSTEM_SW64,分别定义在飞腾平台、兆芯平台、申威平台各自的编译文件linux.mak中。例如,如需新增平台,则可以在其新增的linux.mak文件中为MODFLAGS设置SYSTEM_XXX属性,并在功能代码中以该SYSTEM_XXX属性区分特殊流程。
根据本公开的实施例,例如,以第一平台为飞腾平台,第二平台为兆芯平台为例,可以在功能代码中利用飞腾平台的标识对特殊逻辑代码进行标记。例如,在功能代码中利用SYSTEM_AARCH64对特殊逻辑代码进行标记。
图5示意性示出了根据本公开另一实施例的跨平台运行应用程序的方法的流程图。
如图5所示,在该实施例中,该方法包括操作S510~S570。
在操作S510,编写编译文件。
在操作S520,区分可移植性代码。
在操作S530,代码是否与新增平台无关。
在操作S540,若代码与新增平台相关,则无变更,复用可移植性代码。
在操作S550,若代码与新增平台无关,判断代码是否是统一逻辑。
在操作S560,若代码不是统一逻辑,可以以平台标识区分特有逻辑。
在操作S570,若代码统一逻辑,也可以在新增平台的头文件中区分差异。例如,在新增平台自定义的头文件中,将数据结构、接口函数和宏的差异性体现在头文件中。
根据本公开的实施例,通过一套功能代码,可以同时支持多种平台,如果后续有需求,可以支持其他平台,可以方便地扩展和切换,大幅度提高了开发效率,减少开发成本,提高了经济效益。
图6示意性示出了根据本公开实施例的跨平台运行应用程序的装置的框图。
如图6所示,跨平台运行应用程序的装置600包括获取模块601、第一确定模块602、第二确定模块603和运行模块604。
获取模块601用于获取能够在第一平台上运行的应用程序的功能代码。
第一确定模块602用于确定用于运行所述功能代码的第二平台的编译文件,其中,所述编译文件包括用于实现跨平台运行所述功能代码的编译代码。
根据本公开的实施例,所述编译文件包括:用于检测系统配置、定义所需环境变量并建立软链接目录的文件,以及用于编译操作和安装操作的规则文件。
第二确定模块603用于确定针对所述第二平台的头文件。
运行模块604用于根据所述功能代码、所述编译文件和所述头文件在所述第二平台运行所述应用程序。
根据本公开的实施例,通过获取能够在第一平台上运行的应用程序的功能代码;确定用于运行功能代码的第二平台的编译文件,其中,编译文件包括用于实现跨平台运行所述功能代码的编译代码;确定针对第二平台的头文件;以及根据功能代码、编译文件和头文件在第二平台运行应用程序,使得能够在一套用户态功能代码的前提下,为不同平台提供对应的编译代码,功能代码不感知编译差异。同时应用程序具有可移植性,新增一种平台支持无需新增一套代码,改动量小,大大提高了效率,节约了开发时间及成本。
根据本公开的实施例,所述第二确定模块603包括确定单元和添加单元。
确定单元用于确定所述功能代码中属于可移植的代码部分和不可移植的代码部分。
添加单元用于在所述第二平台的头文件中添加所述不可移植的代码部分的定义。
根据本公开的实施例,跨平台运行应用程序的装置600除了包括获取模块601、第一确定模块602、第二确定模块603和运行模块604之外,还包括第三确定模块和标记模块。
第三确定模块用于确定所述功能代码中不能在所述第二平台上运行的特殊逻辑代码。
标记模块用于在所述功能代码中对所述特殊逻辑代码进行标记。
其中,在所述功能代码中对所述特殊逻辑代码进行标记包括利用所述第一平台的标识对所述特殊逻辑代码进行标记。
根据本公开的实施例,可以以平台标识区分代码内部逻辑差异。对于无法做到通用性的特殊逻辑,可以在功能代码中新增以该平台标识来区分的特殊处理流程。
根据本公开的实施例,通过一套功能代码,可以同时支持多种平台,如果后续有需求,可以支持其他平台,可以方便地扩展和切换,大幅度提高了开发效率,减少开发成本,提高了经济效益。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,获取模块601、第一确定模块602、第二确定模块603和运行模块604中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本公开的实施例,获取模块601、第一确定模块602、第二确定模块603和运行模块604中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块601、第一确定模块602、第二确定模块603和运行模块604中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
需要说明的是,本公开的实施例中跨平台运行应用程序的装置部分与本公开的实施例中跨平台运行应用程序的方法部分是相对应的,跨平台运行应用程序的装置部分的描述具体参考跨平台运行应用程序的方法部分,在此不再赘述。
图7示意性示出了根据本公开实施例的适于实现上文描述的方法的计算机系统的框图。图7示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,根据本公开实施例的计算机系统700包括处理器701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。处理器701例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器701还可以包括用于缓存用途的板载存储器。处理器701可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 703中,存储有系统700操作所需的各种程序和数据。处理器701、ROM 702以及RAM 703通过总线704彼此相连。处理器701通过执行ROM 702和/或RAM 703中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 702和RAM 703以外的一个或多个存储器中。处理器701也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,系统700还可以包括输入/输出(I/O)接口705,输入/输出(I/O)接口705也连接至总线704。系统700还可以包括连接至I/O接口705的以下部件中的一项或多项:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被处理器701执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 702和/或RAM 703和/或ROM 702和RAM 703以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (10)

1.一种跨平台运行应用程序的方法,包括:
获取能够在第一平台上运行的应用程序的功能代码;
确定用于运行所述功能代码的第二平台的编译文件,其中,所述编译文件包括用于实现跨平台运行所述功能代码的编译代码;
确定针对所述第二平台的头文件;以及
根据所述功能代码、所述编译文件和所述头文件在所述第二平台运行所述应用程序。
2.根据权利要求1所述的方法,其中,所述确定针对所述第二平台的头文件包括:
确定所述功能代码中属于可移植的代码部分和不可移植的代码部分;以及
在所述第二平台的头文件中添加所述不可移植的代码部分的定义。
3.根据权利要求1所述的方法,还包括:
确定所述功能代码中不能在所述第二平台上运行的特殊逻辑代码;以及
在所述功能代码中对所述特殊逻辑代码进行标记。
4.根据权利要求3所述的方法,其中,在所述功能代码中对所述特殊逻辑代码进行标记包括:
利用所述第一平台的标识对所述特殊逻辑代码进行标记。
5.根据权利要求1所述的方法,其中,所述编译文件包括:
用于检测系统配置、定义所需环境变量并建立软链接目录的文件,以及用于编译操作和安装操作的规则文件。
6.一种跨平台运行应用程序的装置,包括:
获取模块,用于获取能够在第一平台上运行的应用程序的功能代码;
第一确定模块,用于确定用于运行所述功能代码的第二平台的编译文件,其中,所述编译文件包括用于实现跨平台运行所述功能代码的编译代码;
第二确定模块,用于确定针对所述第二平台的头文件;以及
运行模块,用于根据所述功能代码、所述编译文件和所述头文件在所述第二平台运行所述应用程序。
7.根据权利要求6所述的装置,其中,所述第二确定模块包括:
确定单元,用于确定所述功能代码中属于可移植的代码部分和不可移植的代码部分;以及
添加单元,用于在所述第二平台的头文件中添加所述不可移植的代码部分的定义。
8.一种计算机系统,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至5中任一项所述的方法。
9.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现权利要求1至5中任一项所述的方法。
10.一种计算机程序产品,包括可执行指令,该指令被处理器执行时使处理器实现权利要求1至5中任一项所述的方法。
CN201911425317.9A 2019-12-31 2019-12-31 跨平台运行应用程序的方法、装置、计算机系统和介质 Pending CN111142935A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911425317.9A CN111142935A (zh) 2019-12-31 2019-12-31 跨平台运行应用程序的方法、装置、计算机系统和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911425317.9A CN111142935A (zh) 2019-12-31 2019-12-31 跨平台运行应用程序的方法、装置、计算机系统和介质

Publications (1)

Publication Number Publication Date
CN111142935A true CN111142935A (zh) 2020-05-12

Family

ID=70523183

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911425317.9A Pending CN111142935A (zh) 2019-12-31 2019-12-31 跨平台运行应用程序的方法、装置、计算机系统和介质

Country Status (1)

Country Link
CN (1) CN111142935A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111880803A (zh) * 2020-07-06 2020-11-03 苏州浪潮智能科技有限公司 一种应用于多平台的软件构建方法及装置
CN112148296A (zh) * 2020-08-18 2020-12-29 华控清交信息科技(北京)有限公司 一种编译运行方法、装置和用于编译运行的装置
CN113535180A (zh) * 2021-06-15 2021-10-22 杭州电魂网络科技股份有限公司 一种跨平台的游戏发布方法、系统和计算机可读存储介质
CN116700727A (zh) * 2023-06-21 2023-09-05 广州洋葱时尚集团有限公司 一种跨平台的数据处理方法及系统
CN117573154A (zh) * 2024-01-16 2024-02-20 麒麟软件有限公司 Linux系统上对基于electron的桌面应用安装包的优化方法及装置
WO2024065445A1 (zh) * 2022-09-29 2024-04-04 西门子(中国)有限公司 扩展功能块的能力的方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346146A (zh) * 2013-07-29 2015-02-11 腾讯科技(深圳)有限公司 一种跨平台转换应用代码的方法及装置
CN104536797A (zh) * 2015-01-14 2015-04-22 大唐微电子技术有限公司 一种Java程序预编译方法和预编译器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104346146A (zh) * 2013-07-29 2015-02-11 腾讯科技(深圳)有限公司 一种跨平台转换应用代码的方法及装置
CN104536797A (zh) * 2015-01-14 2015-04-22 大唐微电子技术有限公司 一种Java程序预编译方法和预编译器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李永强,杨林楠,何汉明: "跨平台应用系统的开发" *
陈锺;: "电力监控系统的跨平台解决方案" *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111880803A (zh) * 2020-07-06 2020-11-03 苏州浪潮智能科技有限公司 一种应用于多平台的软件构建方法及装置
CN111880803B (zh) * 2020-07-06 2022-12-27 苏州浪潮智能科技有限公司 一种应用于多平台的软件构建方法及装置
CN112148296A (zh) * 2020-08-18 2020-12-29 华控清交信息科技(北京)有限公司 一种编译运行方法、装置和用于编译运行的装置
CN112148296B (zh) * 2020-08-18 2022-03-15 华控清交信息科技(北京)有限公司 一种编译运行方法、装置和用于编译运行的装置
CN113535180A (zh) * 2021-06-15 2021-10-22 杭州电魂网络科技股份有限公司 一种跨平台的游戏发布方法、系统和计算机可读存储介质
WO2024065445A1 (zh) * 2022-09-29 2024-04-04 西门子(中国)有限公司 扩展功能块的能力的方法、装置、电子设备及存储介质
CN116700727A (zh) * 2023-06-21 2023-09-05 广州洋葱时尚集团有限公司 一种跨平台的数据处理方法及系统
CN116700727B (zh) * 2023-06-21 2024-02-13 广州洋葱时尚集团有限公司 一种跨平台的数据处理方法及系统
CN117573154A (zh) * 2024-01-16 2024-02-20 麒麟软件有限公司 Linux系统上对基于electron的桌面应用安装包的优化方法及装置
CN117573154B (zh) * 2024-01-16 2024-04-12 麒麟软件有限公司 Linux系统上对基于electron的桌面应用安装包的优化方法及装置

Similar Documents

Publication Publication Date Title
CN111142935A (zh) 跨平台运行应用程序的方法、装置、计算机系统和介质
JP6122493B2 (ja) 適応的に移植性を有したライブラリ
EP2359247B1 (en) Transforming user script code for debugging
US8935683B2 (en) Inline function linking
US20180074843A1 (en) System, method, and computer program product for linking devices for coordinated operation
US9146713B2 (en) Tool composition for supporting openCL application software development for embedded system and method thereof
CN103092654B (zh) 一种基于WebKit的WebOS实现方法和系统
CN102364433B (zh) 在ARM处理器上实现Wine构建工具移植的方法
CN111966396A (zh) 数据处理方法及装置、计算机系统和计算机可读存储介质
US8397217B2 (en) Integrating templates into tests
US9690681B1 (en) Method and system for automatically generating executable system-level tests
US8806453B1 (en) Integrating disparate programming languages to form a new programming language
CN115525282A (zh) 跨平台桌面应用程序的实现方法及其相关设备
CN102722438A (zh) 一种内核调试的方法和设备
KR20120056472A (ko) 모바일 웹 어플리케이션 프레임워크
CN103631585A (zh) 一种用于开发应用程序的方法及系统
CN105260224A (zh) 一种lua脚本扩展系统及其运行方法
CN116685946A (zh) 在不停止应用的执行的情况下的更新的共享库的重新加载
CN104978227B (zh) 一种进程控制方法、装置,及系统
US20160196205A1 (en) Method and apparatus for accessing remote mobile devices
CN113778451A (zh) 文件加载方法、装置、计算机系统和计算机可读存储介质
CN110673834A (zh) 一种源码调用方法、装置、计算机设备及存储介质
US9697018B2 (en) Synthesizing inputs to preserve functionality
CN103744687A (zh) 输入/输出端口的访问方法和装置
US20220066911A1 (en) Virtual machine for developing and testing target code for hardware designs

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
CB02 Change of applicant information
CB02 Change of applicant information

Country or region after: China

Address after: Room 332, 3 / F, Building 102, 28 xinjiekouwei street, Xicheng District, Beijing 100088

Applicant after: Qianxin Technology Group Co.,Ltd.

Applicant after: Qianxin Wangshen information technology (Beijing) Co.,Ltd.

Address before: Room 332, 3 / F, Building 102, 28 xinjiekouwei street, Xicheng District, Beijing 100088

Applicant before: Qianxin Technology Group Co.,Ltd.

Country or region before: China

Applicant before: LEGENDSEC INFORMATION TECHNOLOGY (BEIJING) Inc.