一种跨平台转换应用代码的方法及装置制造方法

文档序号:6506591阅读:227来源:国知局
一种跨平台转换应用代码的方法及装置制造方法
【专利摘要】本发明公开了一种跨平台转换应用代码的方法及装置,属于计算机【技术领域】。所述方法包括:获取待转换的第一平台的应用的第一代码的语义规则以及常量和变量信息;根据语义规则以及常量和变量信息,生成第二平台的应用的第二代码;根据第二代码,编译生成第二平台的应用的可执行文件。本发明实现了不改变应用逻辑的方式下,提高了生成不同的平台下相同应用的速度,提高了开发应用的效率。
【专利说明】一种跨平台转换应用代码的方法及装置

【技术领域】
[0001]本发明涉及计算机【技术领域】,特别涉及一种跨平台转换应用代码的方法及装置。

【背景技术】
[0002]随着应用技术的发展,同一个应用会根据需求发布不同平台的版本,以供使用不同平台的用户可以获得该应用的服务。例如,某款游戏会发布PC (Personal Computer,个人计算机)端的版本、安卓平台的版本、1S平台的版本,以供使用PC或移动终端的用户进行游戏。
[0003]现有技术中,对于同一个应用生成各个平台的版本的方式为:根据各个平台所对应的应用的代码类型,分别进行各个平台的应用的编写,之后再对代码进行编译以生成对应平台的版本的应用。例如:基于Win32环境下开发了一款C++的客户端游戏,如果需要开发该游戏的浏览器Flash版本,则需要将该游戏通过Act1nScript动作脚本语言重新编写一遍,并根据该代码编译生成swf格式的Flash文件。
[0004]在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0005]由于编写不同平台对应的同一个应用时,需要通过不同的代码类型进行重复的编写,因此这个过程会消耗更多的时间,影响应用的开发进度。


【发明内容】

[0006]为了解决现有技术的问题,本发明实施例提供了一种跨平台转换应用代码的方法及装置。所述技术方案如下:
[0007]—方面,提供了一种跨平台转换应用代码的方法,所述方法包括:
[0008]获取待转换的第一平台的应用的第一代码的语义规则以及常量和变量信息;
[0009]根据所述语义规则以及常量和变量信息,生成第二平台的应用的第二代码;
[0010]根据所述第二代码,编译生成所述第二平台的应用的可执行文件。
[0011]另一方面,提供了一种跨平台转换应用代码的装置,所述装置包括:
[0012]第一获取模块,用于获取待转换的第一平台的应用的第一代码的语义规则以及常量和变量信息;
[0013]生成模块,用于根据所述语义规则以及常量和变量信息,生成第二平台的应用的第二代码;
[0014]编译模块,用于根据所述第二代码,编译生成所述第二平台的应用的可执行文件。
[0015]本发明实施例提供的技术方案带来的有益效果是:
[0016]通过获取第一平台的应用的第一代码中的语义规则,以及其中的常量和变量信息,并根据预先设置的第一代码的语义规则的类型对应的转换关系,对第一代码的语义规则进行转换,并根据转换后的代码以及常量和变量信息,生成第二平台的第二代码,再对第二代码进行编译生成第二平台的应用。实现了不改变应用逻辑的方式下,提高了生成不同的平台下相同应用的速度,提高了开发应用的效率。

【专利附图】

【附图说明】
[0017]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018]图1是本发明实施例一提供的跨平台转换应用代码的方法流程图;
[0019]图2是本发明实施例二提供的跨平台转换应用代码的方法流程图;
[0020]图3是本发明实施例三提供的跨平台转换应用代码的装置结构示意图。

【具体实施方式】
[0021]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0022]实施例一
[0023]本发明实施例提供了一种跨平台转换应用代码的方法,参见图1。
[0024]101:获取待转换的第一平台的应用的第一代码的语义规则以及常量和变量信息;
[0025]102:根据所述语义规则以及常量和变量信息,生成第二平台的应用的第二代码;
[0026]103:根据所述第二代码,编译生成所述第二平台的应用的可执行文件。
[0027]本发明实施例通过获取第一平台的应用的第一代码中的语义规则,以及其中的常量和变量信息,并根据预先设置的第一代码的语义规则的类型对应的转换关系,对第一代码的语义规则进行转换,并根据转换后的代码以及常量和变量信息,生成第二平台的第二代码,再对第二代码进行编译生成第二平台的应用。实现了不改变应用逻辑的方式下,提高了生成不同的平台下相同应用的速度,提高了开发应用的效率。
[0028]实施例二
[0029]本发明实施例提供了一种跨平台转换应用代码的方法,参见图2。
[0030]需要说明的是,本发明实施例以第一平台的应用为PC端的Win32平台,通过C++语言编写的应用,第二平台的应用为PC端的浏览器平台,通过Act1nScript动作脚本语言编写的应用。
[0031]其中,该跨平台转换应用代码的方法流程包括:
[0032]201:获取待转换的第一平台的应用的文件路径信息。
[0033]在得到第一平台的应用的代码之前,需要对当前进行应用代码转换的过程进行设置。其中,至少需要设置第一平台的应用的项目源代码的文件路径信息,根据该文件路径信息,会获取到保存有代码的该应用的源代码文件。
[0034]进一步的,还可以包括对转换后生成的第二平台的应用的文件名;还可以包括编译过程中所需的第一平台的应用的资源文件的路径信息,例如:图片、视频、声音文件的路径信息;还可以包括项目源代码的文件路径的查找方式,例如:是否进行递归查找,即在给出文件路径信息后,是否对其中包含的更深层的文件路径进行查找;还可以包括第一平台的应用的文件代码中所涉及的头文件的文件路径信息。
[0035]202:根据所述文件路径信息获取保存有所述第一平台的应用的代码的文件。
[0036]其中,文件路径信息中可以包含一个或多个文件的文件路径信息,因此根据文件路径信息中包含的一个或多个文件的文件路径信息,按照该文件路径信息获取到的顺序依次获取保存有第一平台的应用的代码的文件。
[0037]203:按照所述文件路径信息中文件的获取顺序,依次获取所述第一平台的应用的代码的文件中的第一代码。
[0038]204:获取待转换的第一平台的应用的第一代码的语义规则以及常量和变量信息。
[0039]其中,第一代码的语义规则为两种:
[0040]第一种为第一代码的语法规则。
[0041]例如:代码为A+B=C,则该语法规则为赋值语句,其中A和B可以为变量或者常量;或者,语法规则为循环操作等语法规则。
[0042]预先保存不同平台之间对应的代码的语法规则之间的对应关系,即在本发明实施例中预先保存C++代码与Act1nScript代码的语法规则之间的对应关系。由于应用在不同平台之间的应用逻辑是相同的,因此通过上述对应关系,并将常量和变量添加如转换后的第二代码的语法规则中,即可进行代码之间的语法规则的转换。
[0043]第二种为第一代码的预设函数。
[0044]具体的,预先保存不同平台之间各个功能函数之间的对应关系,即在本发明实施例中预先保存C++与Act1nScript之间功能函数的对应关系。在获取到的代码中,依次将C++代码中的每一个功能函数在功能函数的对应关系中进行查询,并依次得到每一个C++功能函数对应的Act1nScript功能函数。
[0045]其中,本发明实施例中涉及到的各种功能函数主要由应用层、渲染接口、网络接口层、系统接口层、事件接口层、声音接口层以及平台接口层等几部分组成。
[0046]其中,渲染接口层:渲染相关接口功能函数直接使用相应Flash功能实现,例如:C++中的drawBitmap功能函数对应到Act1nScript中的Bitmap功能函数、C++中的drawText功能函数对应到Act1nScript中的TextField功能函数,C++中的drawRect/drawLine等功能函数对应到Act1nScript中的Graphic功能函数。
[0047]其中,系统接口层:系统接口功能函数包括ufo_system_common.h、ufo_system_u1.h、ufo_system_common.h主要包括一些时间接口功能函数,可对应Act1nScript中的时间功能实现;目录接口功能函数,可对应到实现本发明实施例中进行代码转换的工具中提供的VFS (Virtual File System,虚拟文件系统)来模拟本地目录,保存一些配置数据。ufo_system_u1.h主要包含文本编辑框、内置浏览框等,编辑框对应的功能函数可对应到Act1nScript 中的 TextField 功能函数。
[0048]其中,事件接口层:事件接口功能函数主要包括ufoOnTouchDown()、ufoOnTouchUp O、ufoOnTouchMove O、UfoOnKeyDown O、UfoOnKeyUp O ,可对应到Act1nScript中的鼠标键盘事件功能函数。
[0049]平台接口层:实现了上述接口,即可将整个Flash平台接口层编译为库文件,后续应用项目需链接即可。
[0050]另外,应用公共模块包括了闪屏、登录、设置等功能,各应用可直接使用,目前该模块中的功能函数已被编译为对应的Act1nScript功能函数。
[0051]进一步的,网络接口层:网络是用Socket实现的,Flash的Socket功能是异步的,同时又有安全域问题,目前实现跨域访问的方式为新建立一个代理服务器,通过接收Flash应用中发出的网络通信的请求,并进行转发该请求,当有数据回馈时,将该数据回馈通过代理服务器转发给发送该网络通信请求的Flash应用。因此,将原有的C++对应的网络通信函数中的目的地址修改为预设的代理服务器的地址,并将C++对应的网络通信函数中的目的地址作为转发目的地址参数设置在Act1nScript对应的网络通信函数中,使得Flash应用在发送Act1nScript对应的网络通信函数进行网络通信请求时,代理服务器根据该转发目的地址参数对该网络通信请求进行转发。因此,对于网络通信函数的转换过程如下:
[0052]当所述预设函数为网络通信函数时,根据预设函数与中间函数的对应关系,确定所述网络通信函数对应的中间函数;
[0053]将预设的代理服务器的地址作为所述网络通信函数对应的中间函数中的目的地址,并将所述网络通信函数中的目的地址作为所述网络通信函数对应的中间函数中的转发目的地址参数。
[0054]因此,步骤204中获取待转换的第一平台的应用的第一代码的语义规则以及常量和变量信息的过程具体为:
[0055]2041:当所述语义规则属于所述第一代码的语法规则时,根据第一代码的语法规则和第二代码的语法规则之间的对应关系,确定所述语义规则对应的第二代码的语法规则。
[0056]2042:当所述语义规则属于第一代码的预设函数时,根据第一代码的预设函数与第二代码的预设函数之间的对应关系,确定所述语义规则对应的第二代码的预设函数。
[0057]其中,查找到对应的第二代码的预设函数后,将原有的常量和变量信息,添加入第二代码的预设函数中对应的位置。
[0058]其中,当第一代吗的预设函数为网络通信函数时,本步骤可以具体为:
[0059]当所述第一代码的预设函数为网络通信函数时,根据第一代码的预设函数与第二代码的预设函数之间的对应关系,确定所述网络通信函数对应的第二代码的预设函数;
[0060]将预设的代理服务器的地址作为所述网络通信函数对应的第二代码的预设函数中的目的地址,并将所述网络通信函数中的目的地址作为所述网络通信函数对应的第二代码的预设函数中的转发目的地址参数。
[0061]2043:根据所述第二代码的语法规则和/或所述第二代码的预设函数,以及所述常量和变量信息,生成第二平台的应用的第二代码。
[0062]205:根据所述第二代码,编译生成所述第二平台的应用的可执行文件。
[0063]得到了该第二平台的应用的Act1nScript中间代码和中间函数后,进行编译,生成对应的Flash的swf可执行文件,此过程即完成了从第一平台的应用转换为第二平台的应用的过程。
[0064]本发明实施例通过获取第一平台的应用的第一代码中的语义规则,以及其中的常量和变量信息,并根据预先设置的第一代码的语义规则的类型对应的转换关系,对第一代码的语义规则进行转换,并根据转换后的代码以及常量和变量信息,生成第二平台的第二代码,再对第二代码进行编译生成第二平台的应用。实现了不改变应用逻辑的方式下,提高了生成不同的平台下相同应用的速度,提高了开发应用的效率。
[0065]实施例三
[0066]本发明实施例提供了一种跨平台转换应用代码的,参见图3,该装置包括:
[0067]第一获取模块301,用于获取待转换的第一平台的应用的第一代码的语义规则以及常量和变量信息;
[0068]生成模块302,用于根据所述语义规则以及常量和变量信息,生成第二平台的应用的第二代码;
[0069]编译模块303,用于根据所述第二代码,编译生成所述第二平台的应用的可执行文件。
[0070]其中,所述生成模块302,包括:
[0071]第一确定单元,用于当所述语义规则属于所述第一代码的语法规则时,根据第一代码的语法规则和第二代码的语法规则之间的对应关系,确定所述语义规则对应的第二代码的语法规则;
[0072]第二确定单元,用于当所述语义规则属于第一代码的预设函数时,根据第一代码的预设函数与第二代码的预设函数之间的对应关系,确定所述语义规则对应的第二代码的预设函数;
[0073]生成单元,用于根据所述第二代码的语法规则和/或所述第二代码的预设函数,以及所述常量和变量信息,生成第二平台的应用的第二代码。
[0074]其中,,所述第二确定单元,包括:
[0075]确定子单元,用于当所述第一代码的预设函数为网络通信函数时,根据第一代码的预设函数与第二代码的预设函数之间的对应关系,确定所述网络通信函数对应的第二代码的预设函数;
[0076]处理子单元,用于将预设的代理服务器的地址作为所述网络通信函数对应的第二代码的预设函数中的目的地址,并将所述网络通信函数中的目的地址作为所述网络通信函数对应的第二代码的预设函数中的转发目的地址参数。
[0077]其中,所述装置还包括:
[0078]第二获取模块304,用于获取待转换的第一平台的应用的文件路径信息;
[0079]第三获取模块305,用于根据所述文件路径信息获取保存有所述第一平台的应用的代码的文件;
[0080]第四获取模块306,用于按照所述文件路径信息中文件的获取顺序,依次获取所述第一平台的应用的代码的文件中的第一代码。
[0081]本发明实施例通过获取第一平台的应用的第一代码中的语义规则,以及其中的常量和变量信息,并根据预先设置的第一代码的语义规则的类型对应的转换关系,对第一代码的语义规则进行转换,并根据转换后的代码以及常量和变量信息,生成第二平台的第二代码,再对第二代码进行编译生成第二平台的应用。实现了不改变应用逻辑的方式下,提高了生成不同的平台下相同应用的速度,提高了开发应用的效率。
[0082]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0083]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0084]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种跨平台转换应用代码的方法,其特征在于,所述方法包括: 获取待转换的第一平台的应用的第一代码的语义规则以及常量和变量信息; 根据所述语义规则以及常量和变量信息,生成第二平台的应用的第二代码; 根据所述第二代码,编译生成所述第二平台的应用的可执行文件。
2.根据权利要求1所述的方法,其特征在于,所述根据所述语义规则以及常量和变量信息,生成第二平台的应用的第二代码,包括: 当所述语义规则属于所述第一代码的语法规则时,根据第一代码的语法规则和第二代码的语法规则之间的对应关系,确定所述语义规则对应的第二代码的语法规则; 当所述语义规则属于第一代码的预设函数时,根据第一代码的预设函数与第二代码的预设函数之间的对应关系,确定所述语义规则对应的第二代码的预设函数; 根据所述第二代码的语法规则和/或所述第二代码的预设函数,以及所述常量和变量信息,生成第二平台的应用的第二代码。
3.根据权利要求2所述的方法,其特征在于,所述根据第一代码的预设函数与第二代码的预设函数之间的对应关系,确定所述语义规则对应的第二代码的预设函数,包括: 当所述第一代码的预设函数为网络通信函数时,根据第一代码的预设函数与第二代码的预设函数之间的对应关系,确定所述网络通信函数对应的第二代码的预设函数; 将预设的代理服务器的地址作为所述网络通信函数对应的第二代码的预设函数中的目的地址,并将所述网络通信函数中的目的地址作为所述网络通信函数对应的第二代码的预设函数中的转发目的地址参数。
4.根据权利要求1所述的方法,其特征在于,所述获取待转换的第一平台的应用的第一代码的语义规则以及常量和变量信息之前,所述方法还包括: 获取待转换的第一平台的应用的文件路径信息; 根据所述文件路径信息获取保存有所述第一平台的应用的代码的文件; 按照所述文件路径信息中文件的获取顺序,依次获取所述第一平台的应用的代码的文件中的第一代码。
5.一种跨平台转换应用代码的装置,其特征在于,所述装置包括: 第一获取模块,用于获取待转换的第一平台的应用的第一代码的语义规则以及常量和变量信息; 生成模块,用于根据所述语义规则以及常量和变量信息,生成第二平台的应用的第二代码; 编译模块,用于根据所述第二代码,编译生成所述第二平台的应用的可执行文件。
6.根据权利要求5所述的装置,其特征在于,所述生成模块,包括: 第一确定单元,用于当所述语义规则属于所述第一代码的语法规则时,根据第一代码的语法规则和第二代码的语法规则之间的对应关系,确定所述语义规则对应的第二代码的语法规则; 第二确定单元,用于当所述语义规则属于第一代码的预设函数时,根据第一代码的预设函数与第二代码的预设函数之间的对应关系,确定所述语义规则对应的第二代码的预设函数; 生成单元,用于根据所述第二代码的语法规则和/或所述第二代码的预设函数,以及所述常量和变量信息,生成第二平台的应用的第二代码。
7.根据权利要求6所述的装置,其特征在于,所述第二确定单元,包括: 确定子单元,用于当所述第一代码的预设函数为网络通信函数时,根据第一代码的预设函数与第二代码的预设函数之间的对应关系,确定所述网络通信函数对应的第二代码的预设函数; 处理子单元,用于将预设的代理服务器的地址作为所述网络通信函数对应的第二代码的预设函数中的目的地址,并将所述网络通信函数中的目的地址作为所述网络通信函数对应的第二代码的预设函数中的转发目的地址参数。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括: 第二获取模块,用于获取待转换的第一平台的应用的文件路径信息; 第三获取模块,用于根据所述文件路径信息获取保存有所述第一平台的应用的代码的文件; 第四获取模块,用于按照所述文件路径信息中文件的获取顺序,依次获取所述第一平台的应用的代码的文件中的第一代码。
【文档编号】G06F9/44GK104346146SQ201310323033
【公开日】2015年2月11日 申请日期:2013年7月29日 优先权日:2013年7月29日
【发明者】马亮, 黄桂山, 罗春华, 贺志强 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1