CN116774993A - 代码转换方法、装置及存储介质 - Google Patents

代码转换方法、装置及存储介质 Download PDF

Info

Publication number
CN116774993A
CN116774993A CN202210237426.3A CN202210237426A CN116774993A CN 116774993 A CN116774993 A CN 116774993A CN 202210237426 A CN202210237426 A CN 202210237426A CN 116774993 A CN116774993 A CN 116774993A
Authority
CN
China
Prior art keywords
code
converted
platform
abstract model
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.)
Pending
Application number
CN202210237426.3A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210237426.3A priority Critical patent/CN116774993A/zh
Publication of CN116774993A publication Critical patent/CN116774993A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Document Processing Apparatus (AREA)

Abstract

本申请实施例提供一种代码转换方法、装置及存储介质,涉及计算机软件领域,该方法包括:获取待转换代码,其中,待转换代码运行于第一平台;对待转换代码进行抽象,得到通用抽象模型代码;响应于检测到的用户选取的第二平台,基于通用抽象模型代码生成与第二平台对应的目标代码,其中,第一平台与第二平台所属不同的开发规范。本申请实施例提供的方法,能够降低应用开发成本,提高应用的迁移转换效率。

Description

代码转换方法、装置及存储介质
技术领域
本申请实施例涉及计算机软件领域,尤其涉及一种代码转换方法、装置及存储介质。
背景技术
一个操作系统通常具有其对应的开发语言。开发者需要使用上述开发语言在对应的操作系统上开发应用。应用的开发主要分为用户界面(User Interface,UI)开发及业务逻辑开发。其中,业务逻辑开发主要受限于开发语言(例如,Java、Object-C、JavaScript等)。将一种语言的业务逻辑转换成另一种语言的业务逻辑的技术难度非常高,目前没有成熟的技术方案。对于UI开发来说,虽然UI开发也是通过不同开发语言实现,但UI开发遵循了一定的规范。因此,如何将不同语言实现的UI代码转换成目标平台语言支持的UI代码,成为了一个亟需解决的课题。
发明内容
本申请实施例提供了一种代码转换方法、装置及存储介质,能够降低应用开发成本,提高应用的迁移转换效率。
第一方面,本申请实施例提供了一种代码转换方法,包括:
获取待转换代码,其中,待转换代码运行于第一平台;
对待转换代码进行抽象,得到通用抽象模型代码;
响应于检测到的用户选取的第二平台,基于通用抽象模型代码生成与第二平台对应的目标代码,其中,第一平台与第二平台所属不同的开发规范。
本申请实施例中,通过构建通用抽象模型,使用该通用抽象模型隐去输入代码的持有信息,得到抽象模型代码,由此可以使得该抽象模型代码基于不同的平台生成不同的应用,从而可以实现跨平台的代码转换,降低应用开发成本,提高应用的迁移转换效率。
其中一种可能的实现方式中,待转换代码与目标代码为用户界面UI视图代码。
其中一种可能的实现方式中,通用抽象模型代码不包含待转换代码的持有信息。
其中一种可能的实现方式中,对待转换代码进行抽象,得到通用抽象模型代码包括:
使用预设通用抽象模型对待转换代码进行抽象,得到通用抽象模型代码。
其中一种可能的实现方式中,预设通用抽象模型基于多个开发规范生成。
其中一种可能的实现方式中,预设通用抽象模型包括多个通用组件,其中,通用组件用于对待转换代码中的组件信息进行抽象。
第二方面,本申请实施例提供一种代码转换装置,包括:
获取模块,用于获取待转换代码,其中,待转换代码运行于第一平台;
抽象模块,用于对待转换代码进行抽象,得到通用抽象模型代码;
转换模块,用于响应于检测到的用户选取的第二平台,基于通用抽象模型代码生成与第二平台对应的目标代码,其中,第一平台与第二平台所属不同的开发规范。
其中一种可能的实现方式中,待转换代码与目标代码为用户界面UI视图代码。
其中一种可能的实现方式中,通用抽象模型代码不包含待转换代码的持有信息。
其中一种可能的实现方式中,上述抽象模块还用于使用预设通用抽象模型对待转换代码进行抽象,得到通用抽象模型代码。
其中一种可能的实现方式中,预设通用抽象模型基于多个开发规范生成。
其中一种可能的实现方式中,预设通用抽象模型包括多个通用组件,其中,通用组件用于对待转换代码中的组件信息进行抽象。
第三方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机实现如第一方面所述的代码转换方法。
第四方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品包括计算机程序,当上述计算机程序被计算机执行时,使得计算机实现如第一方面所述的代码转换方法。
在一种可能的实现方式中,第五方面中的程序可以全部或者部分存储在与处理器封装在一起的存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。
附图说明
图1为现有技术的代码转换示意图;
图2为现有技术的一对一平台代码转换示意图;
图3为本申请实施例提供的跨平台代码转换示意图;
图4为本申请实施例提供的代码转换方法的流程示意图;
图5为本申请实施例提供的通用抽象模型的获取示意图;
图6a-图6d为本申请实施例提供的通用抽象模型中组件的示意图;
图7为本申请实施例提供的代码转换装置的结构示意图。
具体实施方式
本申请实施例中,除非另有说明,字符“/”表示前后关联对象是一种或的关系。例如,A/B可以表示A或B。“和/或”描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
需要指出的是,本申请实施例中涉及的“第一”、“第二”等词汇,仅用于区分描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量,也不能理解为指示或暗示顺序。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。此外,“以下至少一项(个)”或者其类似表达,是指的这些项中的任意组合,可以包括单项(个)或复数项(个)的任意组合。例如,A、B或C中的至少一项(个),可以表示:A,B,C,A和B,A和C,B和C,或A、B和C。其中,A、B、C中的每个本身可以是元素,也可以是包含一个或多个元素的集合。
本申请实施例中,“示例的”、“在一些实施例中”、“在另一实施例中”等用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例中的“的(of)”、“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,所要表达的含义是一致的。本申请实施例中,通信、传输有时可以混用,应当指出的是,在不强调其区别时,其所表达的含义是一致的。例如,传输可以包括发送和/或接收,可以为名词,也可以是动词。
本申请实施例中涉及的等于可以与大于连用,适用于大于时所采用的技术方案,也可以与小于连用,适用于小于时所采用的技术方案。需要说明的是,当等于与大于连用时,不能与小于连用;当等于与小于连用时,不与大于连用。
一个操作系统通常具有其对应的开发语言。开发者需要使用上述开发语言在对应的操作系统上开发应用。应用的开发主要分为用户界面(User Interface,UI)开发及业务逻辑开发。其中,业务逻辑开发主要受限于开发语言(例如,Java、Object-C、JavaScript等)。将一种语言的业务逻辑转换成另一种语言的业务逻辑的技术难度非常高,目前没有成熟的技术方案。对于UI开发来说,虽然UI开发也是通过不同开发语言实现,但UI开发遵循了一定的规范。因此,如何将不同语言实现的UI代码转换成目标平台语言支持的UI代码,成为了一个亟需解决的课题。
目前,常用的UI代码转换仅支持UI代码与目标平台一对一的转换。示例性的,以小程序W为例,若将小程序W转换成A平台的应用,则需要通过转换工具A进行转换,若将小程序W转换成B平台的应用,则需要通过转换工具B进行转换。也就是说,UI代码的转换和平台是有强关联性的,无法实现跨平台的UI代码转换,使得UI代码转换的效率降低,增加了应用开发的成本。
图1为现有技术的代码转换示意图。如图1所示,A小程序页面的代码可以通过转换工具转换成B小程序页面的代码。
示例性的,A小程序页面的代码可以是:
<view class="container">
<image class="avatar"src="/image/avatar.png"></image>
<text class="motto">Hello motto!</text>
</view>
B小程序页面的代码可以是:
<div class="container">
<image class="avatar"src="/image/avatar.png"></image>
<text class="motto">Hello motto!</text>
</div>
由上述两段代码的转换可以看出,在代码转换过程中,仅是把部分组件进行了转换,例如,将A小程序页面中的view组件转换成了B小程序页面中的div组件,其他例如image及text组件都没有更改。
图2为多平台的代码转换示意图。如图2所示,W规范的代码可以通过转换工具A转换成A规范的代码,W规范的代码也可以通过转换工具B转换成B规范的代码。
示例性的,W规范的代码可以是:
可见,如果要把W规范的代码转换成不同规范(例如,A规范,B规范)应用代码,需要对应两种不同的转换工具(例如,转换工具A,转换工具B)。这种多平台的方案其实就是依赖不同的厂商提供不同规范的转换工具,不同厂商的转换工具需要大量地重复性地在页面视图的模板、组件、样式等能力进行1对1的转换。现有技术方案不具备跨平台性。
基于上述问题,本申请实施例提出了一种代码转换方法,通过构建通用抽象模型,使用该通用抽象模型隐去输入代码的持有信息,得到通用抽象模型代码,由此可以使得该抽象模型代码基于不同的平台生成不同的应用,从而可以实现跨平台的代码转换,降低应用开发成本,提高应用的迁移转换效率。可以理解的是,本申请实施例的应用场景之一可以是为现存某一系统应用提供跨系统的支持方案,例如,可以为现存的安卓、IOS或小程序应用的开发者提供快速迁移到鸿蒙操作系统的解决方案。本申请实施例的另一个应用场景可以是为现存某一个平台应用提供跨平台的应用生成方案,例如,现存A平台的应用代码,需要生成B平台、C平台、D平台的应用代码。
现结合图3、图4、图5、图6a-图6d对本申请实施例提供的代码转换方法进行说明。图3为本申请实施例提供的架构示意图。如图3所示,原开发规范(例如W规范)的UI视图代码经过通用抽象模型进行抽象后,可以隐去W规范的持有信息,并可以获得通用抽象模型代码,根据该通用抽象模型代码可以匹配不同的平台,生成与平台对应的代码,由此可以实现跨平台的代码转换,从而可以提高代码转换的效率,降低开发成本。
如图4所示为本申请提供的代码转换方法一个实施例的流程示意图,具体包括以下步骤:
步骤401,获取待转换代码。
具体地,该待转换代码可以是用户输入的一个应用的UI视图代码。例如,该待转换代码可以是一个小程序的UI视图代码,该UI视图代码可以是使用任何开发语言开发的。其中,该应用可以是任意一个平台或者操作系统中的应用,该应用可以是开发者开发的应用,也可以是企业开发的应用,本申请实施例对应用及其待转换代码的类型不作特殊限定。可以理解的是,当该待转换代码所属一个平台时,该待转换代码使用该平台的开发规范。示例性的,若该待转换代码所属A平台,则该待转换代码使用A平台的开发规范,若该待转换代码所属B平台,则该待转换代码使用B平台的开发规范。
步骤402,对待转换代码进行抽象,得到通用抽象模型代码。
具体地,当获取到待转换代码之后,可以将待转换代码输入至通用抽象模型进行抽象。其中,抽象的具体方式可以是对与待转换代码对应的应用页面及依赖资源进行抽象。通过该通用抽象模型对与待转换代码对应的应用页面及依赖资源进行抽象,可以隐去待转换代码在原应用开发框架中的持有信息,由此可以得到通用抽象模型代码。可以理解的是,该通用抽象模型代码是与开发语言及平台无关的,也就是说,该通用抽象模型代码是通用的代码,可以适合任何平台,待转换代码在原应用开发框架中的持有信息,例如,待转换代码中在原应用开发框架中的组件信息都已经隐去,由此可以实现通用抽象模型代码与待转换代码的解耦。
其中,通用抽象模型可以预先构建,该通用抽象模型可以通过多个规范抽象后得到。上述多个规范可以包括安卓规范、IOS规范、flutter规范等。可以理解的是,上述仅示例性的示出了规范的类型,但并限于此,在一些实施例中,还可以包括更多的规范。可以理解的是,该通用抽象模型为一个UI模型,该UI模型融合了多种规范,由此可以对不同规范的输入代码进行抽象。图5示例性的示出了通用抽象模型的获取示意图。
在具体实现时,该通用抽象模型可以包括多个通用组件。例如,component组件、container组件、text组件及image组件。其中,component组件为基础组件,container组件、text组件及image组件为业务组件,业务组件可以由基础组件衍生得到。可以理解的是,本申请实施例仅示例性的示出了通用组件的类型,但并限于此,在一些实施例中,还可以包括更多的组件类型。
图6a示例性的示出了component组件的样式。如图6a所示,component组件包括data、style、layout、params、event、child等属性对象。其中,data属性对象为组件的数据对象;style属性对象为组件自身的样式对象,每个组件都会包含该style属性对象;layout属性对象为组件的内部组件约束条件对象,只有布局组件才包含该layout属性对象;params属性对象为组件的传参数据和组件构造函数传入的数据;event属性对象为组件的事件对象,不同的组件下面的事件不同(例如点击、触摸等事件);child属性对象为组件的子组件对象。
图6b示例性的示出了container组件的样式。如图6b所示,container组件可以由component组件衍生得到,container组件包括style属性对象及layout属性对象。container组件的style属性对象中包含比container组件中的style属性对象更多的对象。例如,min-width、max-width、min-height及max-height等。
图6c示例性的示出了image组件的样式。如图6c所示,image组件可以由component组件衍生得到,image组件包括data属性对象、style属性对象。
图6d示例性的示出了text组件的样式。如图6d所示,text组件可以由component组件衍生得到,text组件包括data属性对象、layout属性对象及style属性对象。
示例性的,假设输入代码的代码如下:
<view class="container">
<image class="avatar"src="/image/avatar.png"></image>
<text class="motto">Hello motto!</text>
</view>
则经过通用抽象模型进行抽象之后,可以得到的通用抽象模型代码如下:
步骤403,响应于检测到的用户选取的目标平台,基于通用抽象模型代码生成与目标平台对应的目标代码。
具体地,当获取到通用抽象模型代码后,用户可以选取待转换的目标平台。其中,该目标平台可以是任一开发平台,该开发平台可以具有其自身的开发规范。需要说明的是,该目标平台与待转换代码所属的平台不同,也就是说,待转换代码使用的开发规范与目标代码使用的开发规范不同。示例性的,若待转换代码所属的是A平台,则步骤403中用户可以选取除A平台以外的平台,例如,B平台,由此可以实现跨平台的代码转换。当用户选定目标平台后,可以根据目标平台的规范将通用抽象模型代码生成与目标平台对应的目标代码。其中,该目标代码可以是目标平台的UI视图代码。可以理解的是,当获取到目标代码后,用户还可以对该目标代码进行浏览和二次开发。
以步骤402中的通用抽象模型代码为例,若用户选取A平台,则A平台的目标代码可以如下:
<div class="container">
<img class="avatar"src="/image/avatar.png"></img>
<text class="motto">Hello motto!</text>
</div>
若用户选取B平台,则B平台的目标代码可以如下:
需要说明的是,上述目标代码的生成主要可以通过静态编译、运行时桥接或插件系统等方式实现。
图7为本申请代码转换装置一个实施例的结构示意图,如图7所示,上述代码转换装置70可以包括:获取模块71、抽象模块72及转换模块73;其中,
获取模块71,用于获取待转换代码,其中,待转换代码运行于第一平台;
抽象模块72,用于对待转换代码进行抽象,得到通用抽象模型代码;
转换模块73,用于响应于检测到的用户选取的第二平台,基于通用抽象模型代码生成与第二平台对应的目标代码,其中,第一平台与第二平台所属不同的开发规范。
其中一种可能的实现方式中,待转换代码与目标代码为用户界面UI视图代码。
其中一种可能的实现方式中,通用抽象模型代码不包含待转换代码的持有信息。
其中一种可能的实现方式中,上述抽象模块72还用于使用预设通用抽象模型对待转换代码进行抽象,得到通用抽象模型代码。
其中一种可能的实现方式中,预设通用抽象模型基于多个开发规范生成。
其中一种可能的实现方式中,预设通用抽象模型包括多个通用组件,其中,通用组件用于对待转换代码中的组件信息进行抽象。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (8)

1.一种代码转换方法,其特征在于,所述方法包括:
获取待转换代码,其中,所述待转换代码运行于第一平台;
对所述待转换代码进行抽象,得到通用抽象模型代码;
响应于检测到的用户选取的第二平台,基于所述通用抽象模型代码生成与所述第二平台对应的目标代码,其中,所述第一平台与所述第二平台所属不同的开发规范。
2.根据权利要求1所述的方法,其特征在于,所述待转换代码与所述目标代码为用户界面UI视图代码。
3.根据权利要求1或2所述的方法,其特征在于,所述通用抽象模型代码不包含所述待转换代码的持有信息。
4.根据权利要求3所述的方法,其特征在于,所述对所述待转换代码进行抽象,得到通用抽象模型代码包括:
使用预设通用抽象模型对所述待转换代码进行抽象,得到通用抽象模型代码。
5.根据权利要求4所述的方法,其特征在于,所述预设通用抽象模型基于多个开发规范生成。
6.根据权利要求4或5所述的方法,其特征在于,所述预设通用抽象模型包括多个通用组件,其中,所述通用组件用于对所述待转换代码中的组件信息进行抽象。
7.一种代码转换装置,其特征在于,包括:处理器和存储器,所述存储器用于存储计算机程序;所述处理器用于运行所述计算机程序,实现如权利要求1-6任一所述的代码转换方法。
8.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在计算机上运行时,使得所述计算机执行如权利要求1-6中任一项所述的代码转换方法。
CN202210237426.3A 2022-03-11 2022-03-11 代码转换方法、装置及存储介质 Pending CN116774993A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210237426.3A CN116774993A (zh) 2022-03-11 2022-03-11 代码转换方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210237426.3A CN116774993A (zh) 2022-03-11 2022-03-11 代码转换方法、装置及存储介质

Publications (1)

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

Family

ID=87993588

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210237426.3A Pending CN116774993A (zh) 2022-03-11 2022-03-11 代码转换方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN116774993A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117785281A (zh) * 2024-02-28 2024-03-29 南方电网调峰调频发电有限公司 一种基于操作系统移植nfc功能的方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117785281A (zh) * 2024-02-28 2024-03-29 南方电网调峰调频发电有限公司 一种基于操作系统移植nfc功能的方法

Similar Documents

Publication Publication Date Title
CN108958736B (zh) 页面生成方法、装置、电子设备及计算机可读介质
US9665841B2 (en) Cross-platform application framework
US11249734B2 (en) Tri-affinity model driven method and platform for authoring, realizing, and analyzing a cross-platform application
US7168077B2 (en) System and method of executing and controlling workflow processes
KR101645052B1 (ko) 디버깅 파이프라인
US7624349B2 (en) Declarative definition enabling graphical designer reuse
US10127023B2 (en) Computer-aided development of native mobile application code
US20170220613A1 (en) Systems and methods for database orientation transformation
US11048885B2 (en) Cognitive translation service integrated with context-sensitive derivations for determining program-integrated information relationships
JP2011159302A (ja) Ediスキーマをモデル化するためのxmlペイロード仕様
CN111324833A (zh) 页面展示方法、装置、电子设计及计算机可读介质
CN116774993A (zh) 代码转换方法、装置及存储介质
US20090265716A1 (en) System and method for feature addition to an application
CN110888972A (zh) 一种基于Spark Streaming的敏感内容识别方法及装置
CN114048415A (zh) 表单生成方法及装置、电子设备和计算机可读存储介质
CN113032275A (zh) 字段测试方法、装置、电子设备及存储介质
Savic et al. Use case specification at different levels of abstraction
CN111198738A (zh) 移动端页面展示方法、装置及电子设备
CN111126008A (zh) 基于xsd的代码生成方法、装置、计算机设备及存储介质
CN114625379B (zh) H5项目源码的生成方法及h5项目源码开发系统
CN110737431A (zh) 软件开发方法、开发平台、终端设备及存储介质
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
KR20200022254A (ko) 자기 정의 명세서 기반 os 설정 장치 및 방법
US20240126577A1 (en) Visualization of application capabilities
US20230110520A1 (en) Ui service package generation and registration method and apparatus, and ui service loading method and apparatus

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