CN109918073A - 一种源码文件的生成方法、装置以及终端 - Google Patents
一种源码文件的生成方法、装置以及终端 Download PDFInfo
- Publication number
- CN109918073A CN109918073A CN201910088232.XA CN201910088232A CN109918073A CN 109918073 A CN109918073 A CN 109918073A CN 201910088232 A CN201910088232 A CN 201910088232A CN 109918073 A CN109918073 A CN 109918073A
- Authority
- CN
- China
- Prior art keywords
- file
- converted
- syntax tree
- abstract syntax
- node
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000006243 chemical reaction Methods 0.000 claims description 27
- 238000012545 processing Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 2
- 230000004048 modification Effects 0.000 claims description 2
- 238000009434 installation Methods 0.000 abstract description 12
- 238000011161 development Methods 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000006854 communication Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012356 Product development Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000026683 transduction Effects 0.000 description 1
- 238000010361 transduction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种源码文件的生成方法、装置以及终端,所述方法包括:获取第一应用程序的各第一源码文件;在确定第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将第一源码文件转换为第二源码文件;其中,第二源码文件为第二应用程序的源码文件;第一应用程序是基于预设应用程序的免安装应用程序,第二应用程序是基于终端应用平台的免安装应用程序。因此能够快速的将第一应用程序转换为第二应用程序,操作简单、快捷,节省开发成本。
Description
技术领域
本发明涉及移动终端领域,尤其涉及一种源码文件的生成方法、装置以及终端。
背景技术
小程序是一种基于微信应用程序的无需下载安装,扫描二维码即可在移动终端上使用的应用,用户只需要扫描二维码或者是搜一搜,就能立即使用。由于无需下载安装、无需卸载,不会占用终端例如手机上的内存,使得小程序被广泛开发应用。
应运而生的是一种类似小程序的免安装应用程序的新型应用形态:快应用,它是基于移动终端的硬件平台,快应用标准由主流移动终端厂商组成的快应用联盟联合制定。
发明人在使用小程序和快应用的过程中发现,由于小程序是在微信应用中运行的一种程序,而快应用是在支持快应用标准的安卓系统手机中运行的程序,两者的实现方式和运行环境有较大差异,进而两个平台的代码无法实现兼容运行。开发者在将产品开发成小程序后,仍需要重新按照快应用的标准和语法开发一遍,耗费人力和物力。
发明内容
本发明实施例提出一种源码文件的生成方法、装置以及终端,以解决现有技术中,由于两种免安装应用之间的代码无法兼容,导致耗费开发时间的问题。
第一方面,本发明实施例提供了一种源码文件的生成方法,所述方法包括:
获取第一应用程序的第一源码文件;
在确定所述第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将所述第一源码文件转换为第二源码文件;
其中,所述第二源码文件为所述第二应用程序的源码文件,所述第一应用程序是基于预设应用程序的免安装应用程序,所述第二应用程序是基于终端应用平台的免安装应用程序。
第二方面,本发明实施例还提供了一种源码文件的生成装置,所述装置包括:
文件获取模块,用于获取第一应用程序的第一源码文件;
文件转换模块,用于在确定所述第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将所述第一源码文件转换为第二源码文件;
其中,所述第二源码文件为所述第二应用程序的源码文件,所述第一应用程序是基于预设应用程序的免安装应用程序,所述第二应用程序是基于终端应用平台的免安装应用程序。
第三方面,本发明实施例还提供了一种终端,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明所述的源码文件的生成方法的步骤。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现本发明所述的源码文件的生成方法的步骤。
在本发明实施例中,获取第一应用程序的第一源码文件;在确定所述第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将所述第一源码文件转换为第二源码文件;其中,所述第二源码文件为所述第二应用程序的源码文件,所述第一应用程序是基于预设应用程序的免安装应用程序,所述第二应用程序是基于终端应用平台的免安装应用程序。因此能够快速的根据第一应用程序的源码文件,转换出第二应用程序的源码文件,操作简单、快捷,节省开发成本。
附图说明
图1示出了本发明实施例中提供的一种源码文件的生成方法的流程图;
图2示出了本发明实施例中提供的一种源码文件的生成方法的具体步骤流程图;
图3示出了本发明实施例中提供的一种源码文件的生成装置的结构框图;
图4示出了本发明实施例中提供的另一种源码文件的生成装置的结构框图;
图5示出了本发明实施例中提供的终端的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,示出了本发明实施例中提供的一种源码文件的生成方法的流程图,具体可以包括如下步骤:
步骤101,获取第一应用程序的第一源码文件。
在本发明实施例中,所述源码文件的生成方法可以应用于终端,所述终端包括但不限于是诸如手机、平板电脑、笔记本电脑、掌上电脑、导航装置、可穿戴设备、智能手环、计步器等终端,在本发明实施例中,对此不做具体限定。
在本发明实施例中,第一应用程序可以是基于微信平台的小程序,通过下面的步骤,将小程序转换为快应用(第二应用程序)。也就是对小程序中与快应用中语法和/或标准不同的文件进行转换,以生成符合快应用语法和/ 或标准的文件,进而以快应用的形式运行。
步骤102,在确定第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将第一源码文件转换为第二源码文件。
其中,所述第一应用程序是第一类型的免安装应用程序,所述第二应用程序是第二类型的免安装应用程序。其中第一类型比如是基于预设应用程序的程序,第二类型比如是基于终端应用平台的程序。由于本发明是将例如小程序转换为快应用的技术方案,其语法和/或标准是基于小程序和快应用的,因此,在根据转换关系将小程序中的文件转换为快应用的文件之前,先判断第一应用程序是否符合预设条件,也就是确定该第一应用程序是否为小程序,其中,该预设条件可以包括:第一源码文件中是否存在全局脚本文件和全局配置文件,也就是是否在第一源码文件中存在app.js(小程序的全局脚本文件)与app.json(小程序的全局配置文件),在存在的情况下,说明可以通过预设的转换关系进行转换。
需要说明的是,转换关系是对应不同的第一源码文件中的待转换文件的类型的,每个不同类型的待转换文件对应有不同的转换关系,下面实施例中将对应不同类型进行具体说明。
在获取到第二源码文件后,在上述第二类型比如是基于终端应用平台的程序的情况下,终端中可以直接调用该第二源码文件执行。
综上所述,在本发明实施例中,获取第一应用程序的各第一源码文件;在确定第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将第一源码文件转换为第二源码文件;其中,第二源码文件为第二应用程序的文件,第一应用程序是第一类型的免安装应用程序,第二应用程序是第二类型的免安装应用程序。因此能够根据第一应用程序的源码文件,转换出第二应用程序的源码文件,实现源码文件的快速生成,操作简单,保证生成效率的同时节省开发成本。
参照图2,示出了本发明实施例中提供的一种源码文件的生成方法的具体步骤流程图。步骤102所述的在确定第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将第一源码文件转换为第二源码文件,具体可以包括:
步骤1021,在确定第一应用程序符合预设条件的情况下,清空输出目录。
其中,输出目录是用于存储第二源码文件,以生成第二应用程序的,在进行第一源码文件转换之前,需要对之前可能存留的输出目录进行清空,重新开始第一源码文件的转换,进而能够保证第二应用程序的准确生成,避免造成对当前生成的源码的污染。
步骤1022,获取第一源码文件中的待转换文件。
其中,第一源码文件中的待转换文件包括:app.json、app.js、app.wxss (小程序的全局样式文件);以及第一文件(第二文件),第二文件(第一文件)、第三文件(第三文件)以及后缀为wxml类型的文件。因此在进行文件的语法和/标准转换之前,需要先确定这些待转换文件,下面步骤再根据每个文件对应的类型选择对应的转换关系,进行转换操作。
在具体应用中,该步骤可以包括:
子步骤A1,在第一源码文件中的全局配置文件中进行页面字段的查找,以确定第一源码文件中所有页面路径。
由于,第一文件包括:全局配置文件指示的页面路径下的json后缀的文件以及第一源码文件中的非配置文件中的json后缀的文件,第二文件包括:全局配置文件指示的页面路径下的js后缀的文件以及非配置文件中的 js后缀的文件,第三文件包括:全局配置文件指示的页面路径下的wxss后缀的文件以及非配置文件中的wxss后缀的文件。因此,在具体应用中,首先确定第一源码文件中的所有页面路径以及非配置文件,以在其中查找对应的后缀为json类型,后缀为js类型,后缀为wxss类型以及后缀为wxml类型的文件。
在具体应用中,读取app.json文件中的pages(页面)字段,遍历pages 的数据,获取到第一源码文件对应的小程序中所有页面的路径,然后在转换路径中获取待转换文件:js后缀的文件、wxss后缀的文件、wxml后缀的文件以及json后缀的文件。
子步骤A2,获取非配置文件。
其中,非配置文件包括图片文件、音频文件以及库文件中的至少一者。
在具体应用中,小程序中可能还存在一些例如图片文件、音频文件以及库文件等信息,同样需要转换成符合快应用标准的文件。
子步骤A3,根据非配置文件和所有页面路径,获取第一文件、第三文件、后缀为wxml类型的文件以及第二文件。
在具体应用中,在非配置文件中和所有页面路径下查找js后缀的文件、 wxss后缀的文件、wxml后缀的文件以及json后缀的文件,即为待转换文件。
子步骤A4,获取第一源码文件中的全局脚本文件、全局样式文件和全局配置文件。
步骤1023,根据待转换文件的类型所对应的转换关系,分别将待转换文件转换为对应的目标文件。
在本发明实施例中,转换关系对应于第一源码文件中待转换文件的类型,其中,待转换文件的类型包括后缀为json类型(类型A),后缀为js 类型(类型B),后缀为wxss类型(类型C)以及后缀为wxml类型(类型D)。
对应的,上述每个类型的文件又包括如下:后缀为json类型的文件中包括全局配置文件和第二文件,后缀为js类型的文件包括全局脚本文件和第一文件,后缀为wxss类型的文件中包括全局样式文件和第三文件。
对应的,第一文件、第三文件、后缀为wxml类型的文件以及第二文件对应的目标文件是ux后缀的文件,app.json文件对应的目标文件为 manifest.json文件,app.js文件对应的目标文件为app.ux文件,app.wxss 文件对应的目标文件为app.css文件。
需要说明的是,同一类型的文件对应同样的转换关系,但同一类型下的不同待转换文件也对应不同的目标文件,即不同的文件名和/或后缀。
下面针对步骤1023中不同的待转换文件的类型,进一步细化说明步骤 1023的操作:
对于类型A,也就是后缀为json类型的文件,该类型的文件转换方式包括:
子步骤B1,确定待转换文件中的预设特征字段。
子步骤B2,在待转换文件为所述全局配置文件的情况下,将全局配置文件中的预设特征字段转换为目标字段,以生成manifest.json文件。
子步骤B3,在待转换文件为第一文件的情况下,将第一文件中的预设特征字段转换为目标字段,以生成与第一文件的文件名对应的ux后缀的文件。
示例地,在小程序的json类型的文件中查找navigationStyle字段,并对应将其转换成快应用的titleBar字段,以生成快应用的manifest.json 文件。
对于类型B,也就是后缀为js类型的文件,该类型的文件转换方式包括:
子步骤C1,获取待转换文件的源码。
在具体应用中,待转换文件的源码采用的是UTF-8格式的编码,UTF-8 格式是Unicode(统一码)的一种实现方式,作为工程领域文件通常约定的文件的编码格式。
子步骤C2,将待转换文件的源码转换为第一抽象语法树。
其中,抽象语法树(英文Abstract Syntax Tree,缩写:AST)是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,将js类型的文件从UTF-8格式的编码转换为AST树形结构的编码,以便于进行下面步骤的操作。
子步骤C3,遍历第一抽象语法树,以对应处理第一抽象语法树中的所有节点。
其中,第一抽象语法树的所有节点中包括编码规则节点和应用程序接口 (英文:Application Programming Interface缩写:API)节点。
在具体应用中该步骤包括:首先,对第一抽象语法树中满足第一条件的编码规则节点进行注释;将满足第一条件的编码规则节点的注释记录在日志文件中。
其中,第一条件用于表明节点对应的编码规则与第二应用程序的编码规则完全不匹配。示例地,完全不匹配表示,该第一应用程序的编码规则与第二应用程序的编码规则的功能相同,但是其中编码规则中的实际规定的规则内容不相同,需要将其注释掉,即直接使用第二应用程序的编码规则。
其次,将第一抽象语法树中的满足第二条件的应用程序接口节点替换成第二应用程序对应的应用程序接口节点。
其中,第二条件用于表明节点对应的应用程序接口与第二应用程序中的应用程序接口部分匹配。示例地,在第一应用程序和第二应用程序中均设置有功能相同的API,但是由于编码规则和/或编程语法不同,第一应用程序的 API与第二应用程序的相同功能的API部分匹配,则用第二应用程序的API 替换该第一应用程序的API,以便于在第二应用程序中进行使用。
此外,需要说明的是,由于小程序的API与快应用的API不完全匹配,为了能够继续在快应用中使用小程序的API,在进行替换时,可以增加与第一应用程序的API对应的垫片文件(Polyfill文件),以支持在快应用中使用小程序的不完全匹配的API,即将对应的垫片文件增加至输出目录中的垫片文件目录下(步骤1025),以保证该部分匹配的API能够继续应用于快应用中。
另外,将第一抽象语法树中的满足第三条件的编码规则节点进行转换,以生成符合第二应用程序规则的编码规则节点。
其中,第三条件用于表明节点对应的编码规则未出现在第二应用程序中。示例地,第一应用程序(小程序)与第二应用程序(快应用)是基于不同的平台具有不同的编码规则和/或编程语法,满足第三条件的编码规则节点是说明该编码规则并未出现在第二应用程序中,是第一应用程序不同于第二应用程序的编码规则,为了能够进一步使用该编码规则,则需转换成符合快应用的编码规则节点。
示例地,小程序中wx.reportAnalytics节点,属于满足第一条件的快应用的节点,其独有的数据分析API对应采取注释的方式;websocket节点属于部分匹配的节点,则采取替换并增加垫片文件的方式,实现在快应用中对该节点的使用,此外,如wx.request节点等与快应用节点完全匹配的节点,可直接作为目标文件中的内容。
子步骤C4,根据第一抽象语法树的遍历结果,生成目标文件。
可选的,根据处理后的第一抽象语法树和日志文件(log),生成目标文件。遍历AST中所有节点,对应完全匹配、完全不匹配以及部分匹配的节点分别进行处理,并将处理方式写入日志文件中,以便于后期查找和修正,处理后的第一抽象语法树和log则可以作为目标文件,写入输出目录中。
也就是说,在待转换文件为全局脚本文件的情况下,根据处理后的第一抽象语法树和日志文件,生成app.ux文件。
在待转换文件为第二文件的情况下,根据处理后的第一抽象语法树和日志文件,生成与第二文件的文件名对应的ux后缀的文件。
示例地,对应同类型不同内容的待转换文件,将对应的AST和log转换成UTF-8格式的源码文件,即作为目标文件,将写入输出目录中所有目标文件作为第二源码文件,从而获取由第一应用程序生成的第二应用程序。
对于类型C,也就是后缀为wxss类型的文件,该类型的文件转换方式包括:
子步骤D1,获取待转换文件的源码。
子步骤D2,将待转换文件的源码转换为第三抽象语法树。
上述步骤与上述类型B的操作相同,此处不再赘述。
子步骤D3,遍历第三抽象语法树,以对应处理第三抽象语法树中的所有节点。
可选的,在具体应用中,首先将第三抽象语法树中的选择器字符串解析为第一数据结构;之后,根据第一数据结构,对满足第一条件的选择器字符串所对应的规则进行注释,最后,将规则的注释写入日志文件。
其中,第一条件用于表明节点对应的选择字符串或者声明与第二应用程序的选择字符串或者声明完全不匹配。
示例地,在遇到selector(选择器)字符串时,则将字符串对应的节点内容解析为统一的数据结构,一种类似AST的数据结构,以进行遍历;当遇到与快应用完全不匹配的(例如伪类选择器after或before)的选择器,注释整个rule(规则)。
需要说明的是,小程序与快应用完全不匹配选择器字符串包括ID选择器:#id和类选择器:.className。为完全不匹配的rule添加comment(注释),并记录log(日志)文件中;如果遇到完全匹配的,则不做变更处理。也就是说,将注释了的内容记录在log中,以便于之后运行快应用时,出现故障能够在log中查找对应故障位置以进行改进和修正。
其次,在第三抽象语法树中进行声明字段的查找,以确定第三抽象语法树中的所有声明,对所有声明中满足第一条件的声明进行注释;将满足第一条件的声明的注释写入日志文件;根据第二应用程序规则,对所有声明中满足第二条件的声明进行修改,以确定符合第二应用程序规则的声明。
其中,第二条件用于表明节点对应的声明与第二应用程序的声明部分匹配。
示例地,在遇到declarations(声明)字段时,遍历每条declaration,对完全不匹配的进行注释,部分匹配的则按符合快应用的标准进行对应转换进行子步骤C7的操作。
子步骤D4,根据第三抽象语法树的遍历结果,生成目标文件。
示例地,在待转换文件为全局样式文件的情况下,根据处理后的第三抽象语法树和日志文件,生成app.css文件。
在待转换文件为第三文件的情况下,根据处理后的第三抽象语法树和日志文件,生成第三文件的文件名对应的ux后缀的文件。
上述步骤与上述类型B的操作相同,此处不再赘述。
对于类型D,也就是后缀为wxml类型的文件,该类型的文件转换方式包括:
步骤E1,获取待转换文件的源码。
步骤E2,在待转换文件的源码上增加根节点,以确定为第一源码。
其中,由于wxml文件的源码中缺少顶级父节点,即根节点,则在转换成抽象语法树之前,为其添加一个根节点。
子步骤E3,根据全局配置文件,确定待转换文件对应的页面中是否包含标签栏。
在具体应用中,根据app.json文件中的tabbar字段判断,当前所在页面上是否有tabbar(标签栏),若有则对应执行704,将标签栏增加至第一源码中,再进行转换;若无则直接转换第一源码为第二抽象语法树,也就是进行步骤705的操作。
子步骤E4,当待转换文件对应的页面中包含标签栏时,将增加标签栏的第一源码转换为第二抽象语法树。
子步骤E5,当待转换文件对应的页面中不包含标签栏时,将第一源码转换为第二抽象语法树。
子步骤E6,遍历第二抽象语法树,以对应处理第二抽象语法树中的所有节点。
在具体应用中,该步骤可以包括:
首先:将第二抽象语法树中满足第二条件的节点转换为第二应用程序的标签节点,对第二抽象语法树中满足第一条件的节点进行注释,之后将满足第一条件的节点的注释记录在日志文件中。
其中,第一条件用于表明节点对应的标签与第二应用程序的标签完全不匹配,第二条件用于表明节点对应的标签与所述第二应用程序的标签部分匹配。
示例地,小程序中的loading标签节点与第二应用程序的标签完全不匹配,则对该节点进行注释,并将注释内容记录在log中。
子步骤E7,根据第二抽象语法树的遍历结果,生成目标文件。
示例地,根据处理后的第二抽象语法树和日志文件,生成与wxml类型的文件的文件名对应的ux后缀的文件。
上述步骤与上述类型B的操作相同,此处不再赘述。
步骤1024,获取第一源码文件中的垫片文件。
其中,垫片文件为第四文件在预设执行环境下调用预设接口时提供支持的文件;所述预设接口不支持在所述预设执行环境下运行,所述第四文件为所述第一源码文件中除所述垫片文件之外的文件。垫片文件先于第一源码文件中的处垫片文件之外的其他文件加载,其可以对其他文件中不支持的接口提供兼容性支持,比如提供在各种运行环境下的实现脚本。。本发明实施例为了保证转换的快应用能够正常使用,将目标文件中的垫片文件直接将其拷贝第一源码文件中的垫片文件,该垫片文件比如Javascript文件,然后将该垫片文件写入输出目录的polyfill(垫片)目录中去。
步骤1025,将目标文件写入第二应用程序的源码文件的输出目录中,获得第二源码文件。
在本发明实施例中,在通过上述步骤完成待转换文件到目标文件的转换之后,将目标文件对应写入已经清空的输出目录中,以生成第二源码文件。
在本发明实施例中,获取第一应用程序的第一源码文件;在确定所述第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将所述第一源码文件转换为第二源码文件;其中,所述第二源码文件为所述第二应用程序的源码文件,所述第一应用程序是基于预设应用程序的免安装应用程序,所述第二应用程序是基于终端应用平台的免安装应用程序。因此能够快速的根据第一应用程序的源码文件,转换出第二应用程序的源码文件,操作简单、快捷,节省开发成本。
需要说明的是,上述不同类型的待转换文件的转换操作不限制操作顺序,可以并行执行或者顺序执行,本申请不做具体限制。
参照图3,示出了本发明实施例提供的一种源码文件的生成装置的结构框图,该装置300包括:
文件获取模块310,用于获取第一应用程序的第一源码文件。
文件转换模块320,用于在确定第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将第一源码文件转换为第二源码文件;
其中,第二源码文件为第二应用程序的源码文件;第一应用程序是基于预设应用程序的免安装应用程序,第二应用程序是基于终端应用平台的免安装应用程序。
可选的,参照图4,示出了本发明实施例提供的另一种源码文件的生成装置的结构框图,可选的,文件转换模块320包括:
文件获取子模块321,用于获取第一源码文件中的待转换文件。
文件转换子模块322,用于根据待转换文件的类型所对应的转换关系,分别将待转换文件转换为对应的目标文件。
文件写入子模块323,用于将目标文件写入第二应用程序的源码文件的输出目录中,获得第二源码文件。
其中,待转换文件的类型包括后缀为json类型,后缀为js类型,后缀为wxss类型以及后缀为wxml类型,
后缀为json类型的文件中包括全局配置文件和第二文件,后缀为js类型的文件包括全局脚本文件和第一文件,后缀为wxss类型的文件中包括全局样式文件和第三文件;
第一文件、第三文件、wxml类型的文件以及第二文件对应的目标文件是 ux后缀的文件,全局配置文件对应的目标文件为manifest.json文件,全局脚本文件对应的目标文件为app.ux文件,全局样式文件对应的目标文件为 app.css文件。
可选的,文件转换模块320还包括:
目录清空子模块324,用于在分别确定待转换文件的类型的步骤之前,在确定第一应用程序符合预设条件的情况下,清空输出目录。
可选的,符合预设条件包括:第一源码文件中存在全局脚本文件和全局配置文件。
可选的,第一文件包括:全局配置文件指示的页面路径下的json后缀的文件,以及第一源码文件中的非配置文件中的json后缀的文件,第二文件包括:全局配置文件指示的页面路径下的js后缀的文件,以及非配置文件中的js后缀的文件,第三文件包括:全局配置文件指示的页面路径下的 wxss后缀的文件以及非配置文件中的wxss后缀的文件,文件获取子模块,包括:
字段查找单元,用于在第一源码文件中的全局配置文件中进行页面字段的查找,以确定第一源码文件中所有页面路径;
文件获取单元,用于获取非配置文件;
文件确定单元,用于根据非配置文件和所有页面路径,获取第一文件、第二文件、第三文件以及后缀为wxml类型的文件;
文件获取单元,还用于获取第一源码文件中的全局脚本文、全局样式文件和全局配置文件;
其中,非配置文件包括图片文件、音频文件以及库文件中的至少一者。
可选的,目标文件还包括垫片文件,文件转换模块包括:
文件获取子模块,还用于在将将目标文件写入第二应用程序的源码文件的输出目录中,获得第二源码文件的步骤之前,获取第一源码文件中的垫片文件,所述垫片文件所述垫片文件为第四文件在预设执行环境下调用预设接口时提供支持的文件;所述预设接口不支持在所述预设执行环境下运行,所述第四文件为所述第一源码文件中除所述垫片文件之外的文件。
文件写入子模块,还用于将垫片文件写入输出目录下的垫片文件目录中。
可选的,待转换文件的类型是后缀为json类型,文件转换子模块,包括:
字段获取单元,用于确定待转换文件中的预设特征字段;
字段转换单元,用于在待转换文件为全局配置文件的情况下,将全局配置文件中的预设特征字段转换为目标字段,以生成manifest.json文件;
字段转换单元,还用于在待转换文件为第一文件的情况下,将第一文件中的预设特征字段转换为目标字段,以生成与第一文件的文件名对应的ux 后缀的文件。
可选的,待转换文件的类型是后缀为js类型,文件转换子模块,包括:
源码获取单元,用于获取待转换文件的源码;
源码转换单元,用于将待转换文件的源码转换为第一抽象语法树;
语法树遍历单元,用于遍历第一抽象语法树,以对应处理第一抽象语法树中的所有节点;
文件生成单元,用于根据第一抽象语法树的遍历结果,生成目标文件。
可选的,第一抽象语法树的所有节点中包括编码规则节点和应用程序接口节点。语法树遍历单元,包括:
节点注释子单元,用于对第一抽象语法树中满足第一条件的编码规则节点进行注释;
注释记录子单元,用于将满足第一条件的编码规则节点的注释记录在日志文件中;
节点替换子单元,用于将第一抽象语法树中的满足第二条件的应用程序接口节点替换成第二应用程序对应的应用程序接口节点;
节点转换子单元,用于将第一抽象语法树中的满足第三条件的编码规则节点进行转换,以生成符合第二应用程序规则的编码规则节点;
其中,第一条件用于表明节点对应的编码规则与第二应用程序的编码规则完全不匹配,第二条件用于表明节点对应的应用程序接口与第二应用程序中的应用程序接口部分匹配,第三条件用于表明节点对应的编码规则未出现在第二应用程序中;
文件生成单元,还用于:在待转换文件为全局脚本文件的情况下,根据处理后的第一抽象语法树和日志文件,生成app.ux文件;以及在待转换文件为第二文件的情况下,根据处理后的第一抽象语法树和日志文件,生成与第二文件的文件名对应的ux后缀的文件。
可选的,待转换文件的类型是后缀为wxml类型,文件转换子模块,包括:
源码获取单元,用于获取待转换文件的源码;
节点增加单元,用于在待转换文件的源码上增加根节点,以确定为第一源码;
标签栏确定单元,用于根据全局配置文件,确定待转换文件对应的页面中是否包含标签栏;
源码转换单元,用于当待转换文件对应的页面中包含标签栏时,将增加标签栏的第一源码转换为第二抽象语法树;
源码转换单元,用于当待转换文件对应的页面中不包含标签栏时,将第一源码转换为第二抽象语法树;
语法树遍历单元,用于遍历第二抽象语法树,以对应处理第二抽象语法树中的所有节点;
文件生成单元,用于根据第二抽象语法树的遍历结果,生成目标文件。
可选的,语法树遍历单元,包括:
节点转换子单元,用于将第二抽象语法树中满足第二条件的节点转换为第二应用程序的标签节点;
节点注释子单元,用于对第二抽象语法树中满足第一条件的节点进行注释;
注释记录子单元,用于将满足第一条件的节点的注释记录在日志文件中;
其中,第一条件用于表明节点对应的标签与第二应用程序的标签完全不匹配,第二条件用于表明节点对应的标签与第二应用程序的标签部分匹配;
文件生成单元,用于:
根据处理后的第二抽象语法树和日志文件,生成与wxml类型的文件的文件名对应的ux后缀的文件。
可选的,待转换文件的类型是后缀为wxss类型,文件转换子模块,包括:
源码获取单元,用于获取待转换文件的源码;
源码转换单元,用于将待转换文件的源码转换为第三抽象语法树;
语法树遍历单元,用于遍历第三抽象语法树,以对应处理第三抽象语法树中的所有节点;
文件生成单元,用于根据第三抽象语法树的遍历结果,生成目标文件。
可选的,语法树遍历单元,包括:
字符串解析子单元,用于将第三抽象语法树中的选择器字符串解析为第一数据结构;
字符串注释子单元,用于根据第一数据结构,对满足第一条件的选择器字符串所对应的规则进行注释;
注释写入子单元,用于将规则的注释写入日志文件;
字段查找子单元,用于在第三抽象语法树中进行声明字段的查找,以确定第三抽象语法树中的所有声明;
声明注释子单元,用于对所有声明中满足第一条件的声明进行注释;
注释写入子单元,用于将满足第一条件的声明的注释写入日志文件;
声明修改子单元,用于根据第二应用程序规则,对所有声明中满足第二条件的声明进行修改,以确定符合第二应用程序规则的声明;
其中,第一条件用于表明节点对应的选择字符串或者声明与第二应用程序的选择字符串或者声明完全不匹配,第二条件用于表明节点对应的声明与第二应用程序的声明部分匹配;
文件生成单元,还用于:在待转换文件为全局样式文件的情况下,根据处理后的第三抽象语法树和日志文件,生成app.css文件;以及在待转换文件为第三文件的情况下,根据处理后的第三抽象语法树和日志文件,生成第三文件的文件名对应的ux后缀的文件。
在本发明实施例中,获取第一应用程序的第一源码文件;在确定所述第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将所述第一源码文件转换为第二源码文件;其中,所述第二源码文件为所述第二应用程序的源码文件,所述第一应用程序是基于预设应用程序的免安装应用程序,所述第二应用程序是基于终端应用平台的免安装应用程序。因此能够快速的根据第一应用程序的源码文件,转换出第二应用程序的源码文件,操作简单、快捷,节省开发成本。
实施例五
图5为实现本发明各个实施例中的一种终端的硬件结构示意图。
该终端500包括但不限于:射频单元501、网络模块502、声音输出单元503、输入单元504、传感器505、显示单元506、用户输入单元5010、接口单元508、存储器509、处理器510、以及电源511等部件。本领域技术人员可以理解,图5中示出的终端结构并不构成对终端的限定,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,终端包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
本发明实施例提供的源码文件的生成方法、终端及计算机可读存储介质,所述源码文件的生成方法应用于终端,获取第一应用程序的各第一源码文件;在确定第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将第一源码文件转换为第二源码文件;其中,第二源码文件为第二应用程序的源码文件;第一应用程序是基于预设应用程序的免安装应用程序,第二应用程序是基于终端应用平台的免安装应用程序。这样小程序源码可以自动处理成符合快应用规范的代码,节省大量手动编写重复代码的时间,且转换后的代码可读性高,对开发者二次开发友好;转换流程清晰简单,转换能力可拓展性高,能够快速的将第一应用程序转换为第二应用程序,操作简单、快捷。
应理解的是,本发明实施例中,射频单元501可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器510处理;另外,将上行的数据发送给基站。通常,射频单元501包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元501还可以通过无线通信系统与网络和其他设备通信。
终端通过网络模块502为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
声音输出单元503可以将射频单元501或网络模块502接收的或者在存储器509中存储的声音数据转换成声音信号并且输出为声音。而且,声音输出单元503还可以提供与终端500执行的特定功能相关的声音输出(例如,呼叫信号接收声音、消息接收声音等等)。声音输出单元503包括扬声器、蜂鸣器以及受话器等。
输入单元504用于接收声音或视频信号。输入单元504可以包括图形处理器(Graphics Processing Unit,GPU)5041和麦克风5042,图形处理器5041 对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元 506上。经图形处理器5041处理后的图像帧可以存储在存储器509(或其它存储介质)中或者经由射频单元501或网络模块502进行发送。麦克风5042 可以接收声音,并且能够将这样的声音处理为声音数据。处理后的声音数据可以在电话通话模式的情况下转换为可经由射频单元501发送到移动通信基站的格式输出。
终端500还包括至少一种传感器505,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板5061的亮度,接近传感器可在终端500移动到耳边时,关闭显示面板5061或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器505还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
显示单元506用于显示由用户输入的信息或提供给用户的信息。显示单元506可包括显示面板5061,可以采用液晶显示器(Liquid Crystal Display, LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板5061。
用户输入单元507可用于接收输入的数字或字符信息,以及产生与终端的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元507包括触控面板5071以及其他输入设备5072。触控面板5071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板5071上或在触控面板5071附近的操作)。触控面板5071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器510,接收处理器510发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板5071。除了触控面板5071,用户输入单元507还可以包括其他输入设备5072。具体地,其他输入设备5072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
进一步的,触控面板5071可覆盖在显示面板5061上,当触控面板5071 检测到在其上或附近的触摸操作后,传送给处理器510以确定触摸事件的类型,随后处理器510根据触摸事件的类型在显示面板5061上提供响应的视觉输出。虽然触控面板5071与显示面板5061是作为两个独立的部件来实现终端的输入和输出功能,但是在某些实施例中,可以将触控面板5071与显示面板5061集成而实现终端的输入和输出功能,具体此处不做限定。
接口单元508为外部装置与终端500连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、声音输入 /输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元508可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到终端500内的一个或多个元件或者可以用于在终端500和外部装置之间传输数据。
存储器509可用于存储软件程序以及各种数据。存储器509可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如声音数据、电话本等)等。此外,存储器509可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器510是终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器509内的软件程序或模块,以及调用存储在存储器509内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。处理器510可包括一个或多个处理单元;优选的,处理器510 可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器510中。
终端500还可以包括给各个部件供电的电源511(比如电池),优选的,电源511可以通过电源管理系统与处理器510逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,终端500包括一些未示出的功能模块,在此不再赘述。
优选的,本发明实施例还提供一种终端,包括处理器510,存储器509,存储在存储器509上并可在上述处理器510上运行的计算机程序,该计算机程序被处理器510执行时实现上述源码文件的生成方法实施例的各个过程,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述源码文件的生成方法实施例的各个过程,为避免重复,这里不再赘述。其中,上述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (25)
1.一种源码文件的生成方法,其特征在于,所述方法包括:
获取第一应用程序的第一源码文件;
在确定所述第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将所述第一源码文件转换为第二源码文件;
其中,所述第二源码文件为第二应用程序的源码文件,所述第一应用程序是第一类型的免安装应用程序,所述第二应用程序是第二类型的免安装应用程序。
2.根据权利要求1所述的方法,其特征在于,所述转换关系对应于所述第一源码文件中待转换文件的类型,所述在确定所述第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将所述第一源码文件转换为第二源码文件,包括:
获取所述第一源码文件中的所述待转换文件;
根据所述待转换文件的类型所对应的转换关系,分别将所述待转换文件转换为对应的目标文件;
将所述目标文件写入所述第二应用程序的源码文件的输出目录中,获得所述第二源码文件;
其中,所述待转换文件的类型包括后缀为json类型,后缀为js类型,后缀为wxss类型以及后缀为wxml类型;
所述后缀为json类型的文件中包括:全局配置文件以及除所述全局配置文件以外的第一文件;所述后缀为js类型的文件包括:全局脚本文件以及除所述全局脚本文件以外的第二文件,所述后缀为wxss类型的文件中包括:全局样式文件以及除所述全局样式文件以外的第三文件;
所述第一文件、所述第二文件、第三文件以及所述wxml类型的文件分别对应的所述目标文件是ux后缀的文件,所述全局配置文件对应的所述目标文件为manifest.json文件,所述全局脚本文件对应的所述目标文件为app.ux文件,所述全局样式文件对应的所述目标文件为app.css文件。
3.根据权利要求2所述的方法,其特征在于,在所述获取所述第一源码文件中的所述待转换文件的步骤之前,所述方法还包括:
清空所述输出目录。
4.根据权利要求2所述的方法,其特征在于,所述第一文件包括:所述全局配置文件指示的页面路径下的json后缀文件,以及所述第一源码文件中的非配置文件中的json后缀文件;所述第二文件包括:所述全局配置文件指示的页面路径下的js后缀文件,以及所述非配置文件中的js后缀文件,所述第三文件包括:所述全局配置文件指示的页面路径下的wxss后缀文件,以及所述非配置文件中的wxss后缀文件,所述获取所述第一源码文件中的所述待转换文件,包括:
在所述第一源码文件中的全局配置文件中进行页面字段的查找,以确定所述第一源码文件中所述所有页面路径;
获取所述非配置文件;
根据所述非配置文件和所述所有页面路径,获取所述第一文件、第二文件、第三文件、以及所述后缀为wxml类型的文件;
获取所述第一源码文件中的所述全局脚本文件、所述全局样式文件和所述全局配置文件;
其中,所述非配置文件包括图片文件、音频文件以及库文件中的至少一者。
5.根据权利要求2所述的方法,其特征在于,所述目标文件还包括垫片文件,将所述目标文件写入所述第二应用程序的源码文件的输出目录中,获得所述第二源码文件的步骤之前,还包括:
获取所述第一源码文件中的所述垫片文件,所述垫片文件为第四文件在预设执行环境下调用预设接口时提供支持的文件;所述预设接口不支持在所述预设执行环境下运行,所述第四文件为所述第一源码文件中除所述垫片文件之外的文件;
所述将所述目标文件写入所述第二应用程序的源码文件的输出目录中,获得所述第二源码文件包括:
将所述垫片文件写入所述输出目录下的垫片文件目录中。
6.根据权利要求2所述的方法,其特征在于,所述待转换文件的类型是所述后缀为json类型,所述根据所述待转换文件的类型所对应的转换关系,分别将所述待转换文件转换为对应的目标文件,包括:
确定所述待转换文件中的预设特征字段;
在所述待转换文件为所述全局配置文件的情况下,将所述全局配置文件中的所述预设特征字段转换为目标字段,以生成所述manifest.json文件;
在所述待转换文件为所述第一文件的情况下,将所述第一文件中的所述预设特征字段转换为目标字段,以生成与所述第一文件的文件名对应的ux后缀的文件。
7.根据权利要求2所述的方法,其特征在于,所述待转换文件的类型是所述后缀为js类型,所述根据所述待转换文件的类型所对应的转换关系,分别将所述待转换文件转换为对应的目标文件,包括:
获取所述待转换文件的源码;
将所述待转换文件的源码转换为第一抽象语法树;
遍历所述第一抽象语法树,以对应处理所述第一抽象语法树中的所有节点;
根据所述第一抽象语法树的遍历结果,生成所述目标文件。
8.根据权利要求8所述的方法,其特征在于,所述第一抽象语法树的所有节点中包括编码规则节点和应用程序接口节点,所述遍历所述第一抽象语法树,以对应处理所述第一抽象语法树中的所有节点,包括:
对所述第一抽象语法树中满足第一条件的编码规则节点进行注释;
将满足所述第一条件的编码规则节点的注释记录在日志文件中;
将所述第一抽象语法树中的满足第二条件的应用程序接口节点替换成所述第二应用程序对应的应用程序接口节点;
将所述第一抽象语法树中的满足第三条件的编码规则节点进行转换,以生成符合所述第二应用程序规则的编码规则节点;
其中,所述第一条件用于表明节点对应的编码规则与所述第二应用程序的编码规则完全不匹配,所述第二条件用于表明节点对应的应用程序接口与所述第二应用程序中的应用程序接口部分匹配,所述第三条件用于表明节点对应的编码规则未出现在所述第二应用程序中;
所述根据所述第一抽象语法树的遍历结果,生成所述目标文件,包括:
在所述待转换文件为所述全局脚本文件的情况下,根据处理后的所述第一抽象语法树和所述日志文件,生成所述app.ux文件;
在所述待转换文件为所述第二文件的情况下,根据处理后的所述第一抽象语法树和所述日志文件,生成与所述第二文件的文件名对应的ux后缀的文件。
9.根据权利要求2所述的方法,其特征在于,所述待转换文件的类型是所述后缀为wxml类型,所述根据所述待转换文件的类型所对应的转换关系,分别将所述待转换文件转换为对应的目标文件,包括:
获取所述待转换文件的源码;
在所述待转换文件的源码上增加根节点,以确定为第一源码;
根据所述全局配置文件,确定所述待转换文件对应的页面中是否包含标签栏;
当所述待转换文件对应的页面中包含所述标签栏时,将增加所述标签栏的第一源码转换为第二抽象语法树;
当所述待转换文件对应的页面中不包含所述标签栏时,将所述第一源码转换为所述第二抽象语法树;
遍历所述第二抽象语法树,以对应处理所述第二抽象语法树中的所有节点;
根据所述第二抽象语法树的遍历结果,生成所述目标文件。
10.根据权利要求9所述的方法,其特征在于,所述遍历所述第二抽象语法树,以对应处理所述第二抽象语法树中的所有节点,包括:
将所述第二抽象语法树中满足第二条件的节点转换为所述第二应用程序的标签节点;
对所述第二抽象语法树中满足第一条件的节点进行注释;
将满足所述第一条件的节点的注释记录在日志文件中;
其中,所述第一条件用于表明节点对应的标签与所述第二应用程序的标签完全不匹配,所述第二条件用于表明节点对应的标签与所述第二应用程序的标签部分匹配;
所述根据所述第二抽象语法树的遍历结果,生成所述目标文件,包括:
根据处理后的所述第二抽象语法树和所述日志文件,生成与所述wxml类型的文件的文件名对应的ux后缀的文件。
11.根据权利要求2所述的方法,其特征在于,所述待转换文件的类型为所述后缀为wxss类型,所述根据所述待转换文件的类型所对应的转换关系,分别将所述待转换文件转换为对应的目标文件,包括:
获取所述待转换文件的源码;
将所述待转换文件的源码转换为第三抽象语法树;
遍历所述第三抽象语法树,以对应处理所述第三抽象语法树中的所有节点;
根据所述第三抽象语法树的遍历结果,生成所述目标文件。
12.根据权利要求11所述的方法,其特征在于,所述遍历所述第三抽象语法树,以对应处理所述第三抽象语法树中的所有节点,包括:
将所述第三抽象语法树中的选择器字符串解析为第一数据结构;
根据所述第一数据结构,对满足第一条件的选择器字符串所对应的规则进行注释;
将所述规则的注释写入日志文件;
在所述第三抽象语法树中进行声明字段的查找,以确定所述第三抽象语法树中的所有声明;
对所述所有声明中满足所述第一条件的声明进行注释;
将满足所述第一条件的声明的注释写入所述日志文件;
根据第二应用程序规则,对所述所有声明中满足第二条件的声明进行修改,以确定符合所述第二应用程序规则的声明;
其中,所述第一条件用于表明节点对应的选择字符串或者声明与所述第二应用程序的选择字符串或者声明完全不匹配,所述第二条件用于表明节点对应的声明与所述第二应用程序的声明部分匹配;
所述根据所述第三抽象语法树的遍历结果,生成所述目标文件,包括:
在所述待转换文件为所述全局样式文件的情况下,根据处理后的所述第三抽象语法树和所述日志文件,生成所述app.css文件;
在所述待转换文件为所述第三文件的情况下,根据处理后的所述第三抽象语法树和所述日志文件,生成所述第三文件的文件名对应的所述ux后缀的文件。
13.一种源码文件的生成装置,其特征在于,所述装置包括:
文件获取模块,用于获取第一应用程序的第一源码文件;
文件转换模块,用于在确定所述第一应用程序符合预设条件的情况下,根据预设的转换关系,对应将所述第一源码文件转换为第二源码文件;
其中,所述第二源码文件为所述第二应用程序的源码文件;所述第一应用程序是第一类型的免安装应用程序,所述第二应用程序是第二类型的免安装应用程序。
14.根据权利要求13所述的装置,其特征在于,所述转换关系对应于所述第一源码文件中待转换文件的类型,所述文件转换模块,包括:
文件获取子模块,用于获取所述第一源码文件中的所述待转换文件;
文件转换子模块,用于根据所述待转换文件的类型所对应的转换关系,分别将所述待转换文件转换为对应的目标文件;
文件写入子模块,用于将所述目标文件写入所述第二应用程序的源码文件的输出目录中,获得所述第二源码文件;
其中,所述待转换文件的类型包括后缀为json类型,后缀为js类型,后缀为wxss类型以及后缀为wxml类型;
所述后缀为json类型的文件中包括:全局配置文件以及除所述全局配置文件以外的第一文件,所述后缀为js类型的文件包括:全局脚本文件以及除所述全局脚本文件以外的第二文件,所述后缀为wxss类型的文件中包括:全局样式文件以及除所述全局样式文件以外的第三文件;
所述第一文件、所述第二文件、所述第三文件以及所述wxml类型分别对应的所述目标文件是ux后缀的文件,所述全局配置文件对应的所述目标文件为manifest.json文件,所述全局脚本文件对应的所述目标文件为app.ux文件,所述全局样式文件对应的所述目标文件为app.css文件。
15.根据权利要求14所述的装置,其特征在于,所述文件转换模块还包括:
目录清空子模块,用于清空所述输出目录。
16.根据权利要求15所述的装置,其特征在于,所述第一的文件包括:
所述全局配置文件指示的页面路径下的json后缀的文件,以及所述第一源码文件中的非配置文件中的json后缀的文件,所述第二文件包括:所述全局配置文件指示的页面路径下的js后缀的文件,以及所述非配置文件中的js后缀的文件,所述第三文件包括:所述全局配置文件指示的页面路径下的wxss后缀的文件,以及所述非配置文件中的wxss后缀的文件,所述文件获取子模块,包括:
字段查找单元,用于在所述第一源码文件中的全局配置文件中进行页面字段的查找,以确定所述第一源码文件中所述所有页面路径;
文件获取单元,用于获取所述非配置文件;
文件确定单元,用于根据所述非配置文件和所述所有页面路径,获取所述第一文件、所述第二文件、所述第三文件以及所述后缀为wxml类型的文件;
所述文件获取单元,还用于获取所述第一源码文件中的所述全局脚本文件、所述全局样式文件和所述全局配置文件;
其中,所述非配置文件包括图片文件、音频文件以及库文件中的至少一者。
17.根据权利要求15所述的装置,其特征在于,所述目标文件还包括垫片文件,所述文件转换模块包括:
所述文件获取子模块,还用于获取所述第一源码文件中的所述垫片文件,所述垫片文件为第四文件在预设执行环境下调用预设接口时提供支持的文件;所述预设接口不支持在所述预设执行环境下运行,所述第四文件为所述第一源码文件中除所述垫片文件之外的文件;
所述文件写入子模块,还用于将所述垫片文件写入所述输出目录下的垫片文件目录中。
18.根据权利要求15所述的装置,其特征在于,所述待转换文件的类型是所述后缀为json类型,所述文件转换子模块,包括:
字段获取单元,用于确定所述待转换文件中的预设特征字段;
字段转换单元,用于在所述待转换文件为所述全局配置文件的情况下,将所述全局配置文件中的所述预设特征字段转换为目标字段,以生成所述manifest.json文件;
所述字段转换单元,还用于在所述待转换文件为所述第一文件的情况下,将所述第一文件中的所述预设特征字段转换为目标字段,以生成与所述第一文件的文件名对应的ux后缀的文件。
19.根据权利要求15所述的装置,其特征在于,所述待转换文件的类型是所述后缀为js类型,所述文件转换子模块,包括:
源码获取单元,用于获取所述待转换文件的源码;
源码转换单元,用于将所述待转换文件的源码转换为第一抽象语法树;
语法树遍历单元,用于遍历所述第一抽象语法树,以对应处理所述第一抽象语法树中的所有节点;
文件生成单元,用于根据所述第一抽象语法树的遍历结果,生成所述目标文件。
20.根据权利要求19所述的装置,其特征在于,所述第一抽象语法树的所有节点中包括编码规则节点和应用程序接口节点,所述语法树遍历单元,包括:
节点注释子单元,用于对所述第一抽象语法树中满足第一条件的编码规则节点进行注释;
注释记录子单元,用于将满足所述第一条件的编码规则节点的注释记录在日志文件中;
节点替换子单元,用于将所述第一抽象语法树中的满足第二条件的应用程序接口节点替换成所述第二应用程序对应的应用程序接口节点;
节点转换子单元,用于将所述第一抽象语法树中的满足第三条件的编码规则节点进行转换,以生成符合所述第二应用程序规则的编码规则节点;
其中,所述第一条件用于表明节点对应的编码规则与所述第二应用程序的编码规则完全不匹配,所述第二条件用于表明节点对应的应用程序接口与所述第二应用程序中的应用程序接口部分匹配,所述第三条件用于表明节点对应的编码规则未出现在所述第二应用程序中;
所述文件生成单元,还用于:在所述待转换文件为所述全局脚本文件的情况下,根据处理后的所述第一抽象语法树和所述日志文件,生成所述app.ux文件;以及在所述待转换文件为所述第二文件的情况下,根据处理后的所述第一抽象语法树和所述日志文件,生成与所述第二文件的文件名对应的ux后缀的文件。
21.根据权利要求15所述的装置,其特征在于,所述待转换文件的类型是所述后缀为wxml类型,所述文件转换子模块,包括:
源码获取单元,用于获取所述待转换文件的源码;
节点增加单元,用于在所述待转换文件的源码上增加根节点,以确定为第一源码;
标签栏确定单元,用于根据所述全局配置文件,确定所述待转换文件对应的页面中是否包含标签栏;
源码转换单元,用于当所述待转换文件对应的页面中包含所述标签栏时,将增加所述标签栏的第一源码转换为第二抽象语法树;
源码转换单元,用于当所述待转换文件对应的页面中不包含所述标签栏时,将所述第一源码转换为所述第二抽象语法树;
语法树遍历单元,用于遍历所述第二抽象语法树,以对应处理所述第二抽象语法树中的所有节点;
文件生成单元,用于根据所述第二抽象语法树的遍历结果,生成所述目标文件。
22.根据权利要求21所述的装置,其特征在于,所述语法树遍历单元,包括:
节点转换子单元,用于将所述第二抽象语法树中满足第二条件的节点转换为所述第二应用程序的标签节点;
节点注释子单元,用于对所述第二抽象语法树中满足第一条件的节点进行注释;
注释记录子单元,用于将满足所述第一条件的节点的注释记录在日志文件中;
其中,所述第一条件用于表明节点对应的标签与所述第二应用程序的标签完全不匹配,所述第二条件用于表明节点对应的标签与所述第二应用程序的标签部分匹配;
所述文件生成单元,还用于:根据处理后的所述第二抽象语法树和所述日志文件,生成与所述wxml类型的文件的文件名对应的ux后缀的文件。
23.根据权利要求15所述的装置,其特征在于,所述待转换文件的类型是所述后缀为wxss类型,所述文件转换子模块,包括:
源码获取单元,用于获取所述待转换文件的源码;
源码转换单元,用于将所述待转换文件的源码转换为第三抽象语法树;
语法树遍历单元,用于遍历所述第三抽象语法树,以对应处理所述第三抽象语法树中的所有节点;
文件生成单元,用于根据所述第三抽象语法树的遍历结果,生成所述目标文件。
24.根据权利要求23所述的装置,其特征在于,所述语法树遍历单元,包括:
字符串解析子单元,用于将所述第三抽象语法树中的选择器字符串解析为第一数据结构;
字符串注释子单元,用于根据所述第一数据结构,对满足第一条件的选择器字符串所对应的规则进行注释;
注释写入子单元,用于将所述规则的注释写入日志文件;
字段查找子单元,用于在所述第三抽象语法树中进行声明字段的查找,以确定所述第三抽象语法树中的所有声明;
声明注释子单元,用于对所述所有声明中满足所述第一条件的声明进行注释;
注释写入子单元,用于将满足所述第一条件的声明的注释写入所述日志文件;
声明修改子单元,用于根据第二应用程序规则,对所述所有声明中满足第二条件的声明进行修改,以确定符合所述第二应用程序规则的声明;
其中,所述第一条件用于表明节点对应的选择字符串或者声明与所述第二应用程序的选择字符串或者声明完全不匹配,所述第二条件用于表明节点对应的声明与所述第二应用程序的声明部分匹配;
所述文件生成单元,还用于:在所述待转换文件为所述全局样式文件的情况下,根据处理后的所述第三抽象语法树和所述日志文件,生成所述app.css文件;以及在所述待转换文件为所述第三文件的情况下,根据处理后的所述第三抽象语法树和所述日志文件,生成所述第三文件的文件名对应的所述ux后缀的文件。
25.一种终端,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至13中任一项所述的源码文件的生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910088232.XA CN109918073A (zh) | 2019-01-29 | 2019-01-29 | 一种源码文件的生成方法、装置以及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910088232.XA CN109918073A (zh) | 2019-01-29 | 2019-01-29 | 一种源码文件的生成方法、装置以及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109918073A true CN109918073A (zh) | 2019-06-21 |
Family
ID=66961095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910088232.XA Pending CN109918073A (zh) | 2019-01-29 | 2019-01-29 | 一种源码文件的生成方法、装置以及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109918073A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704053A (zh) * | 2019-09-03 | 2020-01-17 | 五八有限公司 | 一种样式信息的处理方法及装置 |
CN111381825A (zh) * | 2020-03-06 | 2020-07-07 | 北京五八信息技术有限公司 | 一种小程序的生成方法和装置 |
CN111736840A (zh) * | 2019-09-19 | 2020-10-02 | 北京沃东天骏信息技术有限公司 | 小程序应用的编译方法、运行方法、存储介质及电子设备 |
CN112764763A (zh) * | 2020-12-31 | 2021-05-07 | 亿企赢网络科技有限公司 | 一种代码转换方法、系统、设备及计算机可读存储介质 |
CN113312055A (zh) * | 2021-05-28 | 2021-08-27 | 支付宝(杭州)信息技术有限公司 | 一种小程序投放方法、装置以及设备 |
WO2021174538A1 (zh) * | 2020-03-06 | 2021-09-10 | 深圳市欢太科技有限公司 | 应用处理方法及相关装置 |
CN113805890A (zh) * | 2021-09-10 | 2021-12-17 | 中国银联股份有限公司 | 小程序跨应用迁移方法、设备、终端、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239318A (zh) * | 2017-06-13 | 2017-10-10 | 腾讯科技(深圳)有限公司 | 应用转换方法、装置及设备 |
CN108170435A (zh) * | 2018-01-16 | 2018-06-15 | 优视科技新加坡有限公司 | 一种源代码转换方法、装置及设备 |
CN108268262A (zh) * | 2017-12-27 | 2018-07-10 | 广东耐思尼克信息技术有限公司 | 实现将html转换为微信小程序的方法、装置及系统 |
-
2019
- 2019-01-29 CN CN201910088232.XA patent/CN109918073A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239318A (zh) * | 2017-06-13 | 2017-10-10 | 腾讯科技(深圳)有限公司 | 应用转换方法、装置及设备 |
CN108268262A (zh) * | 2017-12-27 | 2018-07-10 | 广东耐思尼克信息技术有限公司 | 实现将html转换为微信小程序的方法、装置及系统 |
CN108170435A (zh) * | 2018-01-16 | 2018-06-15 | 优视科技新加坡有限公司 | 一种源代码转换方法、装置及设备 |
Non-Patent Citations (3)
Title |
---|
DCLOUD_UNI_CHB: "小程序转快应用教程", 《HTTPS://ASK.DCLOUD.NET.CN/ARTICLE/13175》 * |
FXY060608: "dcloudio", 《HTTPS://GITHUB.COM/DCLOUDIO/UNI-MIGRATION/BLOB/MASTER/SRC/WEAPP/INDEX.JS》 * |
苏煜辉 等: "浅析快应用与微信小程序技术的异同", 《电脑知识与技术》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704053A (zh) * | 2019-09-03 | 2020-01-17 | 五八有限公司 | 一种样式信息的处理方法及装置 |
CN111736840A (zh) * | 2019-09-19 | 2020-10-02 | 北京沃东天骏信息技术有限公司 | 小程序应用的编译方法、运行方法、存储介质及电子设备 |
CN113110825A (zh) * | 2020-03-06 | 2021-07-13 | 北京五八信息技术有限公司 | 一种小程序的接口转换方法和装置 |
CN111381825B (zh) * | 2020-03-06 | 2021-04-09 | 北京五八信息技术有限公司 | 一种小程序的生成方法和装置 |
CN112965719A (zh) * | 2020-03-06 | 2021-06-15 | 北京五八信息技术有限公司 | 一种小程序的生成方法和装置 |
CN111381825A (zh) * | 2020-03-06 | 2020-07-07 | 北京五八信息技术有限公司 | 一种小程序的生成方法和装置 |
WO2021174538A1 (zh) * | 2020-03-06 | 2021-09-10 | 深圳市欢太科技有限公司 | 应用处理方法及相关装置 |
CN113110825B (zh) * | 2020-03-06 | 2022-06-03 | 北京五八信息技术有限公司 | 一种小程序的接口转换方法和装置 |
CN112764763A (zh) * | 2020-12-31 | 2021-05-07 | 亿企赢网络科技有限公司 | 一种代码转换方法、系统、设备及计算机可读存储介质 |
CN112764763B (zh) * | 2020-12-31 | 2024-01-26 | 亿企赢网络科技有限公司 | 一种代码转换方法、系统、设备及计算机可读存储介质 |
CN113312055A (zh) * | 2021-05-28 | 2021-08-27 | 支付宝(杭州)信息技术有限公司 | 一种小程序投放方法、装置以及设备 |
CN113312055B (zh) * | 2021-05-28 | 2023-02-24 | 支付宝(中国)网络技术有限公司 | 一种小程序投放方法、装置以及设备 |
CN113805890A (zh) * | 2021-09-10 | 2021-12-17 | 中国银联股份有限公司 | 小程序跨应用迁移方法、设备、终端、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109918073A (zh) | 一种源码文件的生成方法、装置以及终端 | |
KR102563314B1 (ko) | 전자 장치 및 단축 명령어의 바로가기 생성 방법 | |
CN107038112B (zh) | 应用界面的调试方法及装置 | |
CN103702297B (zh) | 短信增强方法、装置及系统 | |
CN111274777B (zh) | 思维导图显示方法及电子设备 | |
CN110058850B (zh) | 一种应用的开发方法、装置以及存储介质 | |
CN106295353B (zh) | 一种引擎漏洞检测的方法以及检测装置 | |
CN112882772B (zh) | 移动终端应用界面的配置方法、移动终端及存储介质 | |
CN109189286A (zh) | 一种桌面应用的操作方法及终端 | |
CN109189258A (zh) | 记录笔记的方法及装置 | |
CN112116690B (zh) | 视频特效生成方法、装置及终端 | |
CN110177040A (zh) | 图片分享方法和移动终端 | |
CN110046497A (zh) | 一种函数挂钩实现方法、装置和存储介质 | |
CN110378107A (zh) | 一种安装包检测的方法及相关装置 | |
CN109085963A (zh) | 一种界面显示方法及终端设备 | |
CN109344125A (zh) | 一种文件名称更新方法及终端设备 | |
CN106202422B (zh) | 网页图标的处理方法和装置 | |
CN110457631A (zh) | 跳转异常信息确定方法及装置 | |
CN108874554A (zh) | 信息通信方法及装置 | |
WO2017005080A1 (zh) | 网页显示方法、终端设备及存储介质 | |
CN105335434B (zh) | 日志管理方法、装置及电子设备 | |
CN110012152A (zh) | 一种界面显示方法及终端设备 | |
CN109857646A (zh) | 一种自动化测试方法和装置 | |
CN109951373A (zh) | 一种文件发送方法及终端设备 | |
KR20220154825A (ko) | 노트 생성 방법 및 전자기기 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190621 |
|
RJ01 | Rejection of invention patent application after publication |