CN108762767B - 应用发布方法、装置及计算机可读存储介质 - Google Patents
应用发布方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN108762767B CN108762767B CN201810546880.0A CN201810546880A CN108762767B CN 108762767 B CN108762767 B CN 108762767B CN 201810546880 A CN201810546880 A CN 201810546880A CN 108762767 B CN108762767 B CN 108762767B
- Authority
- CN
- China
- Prior art keywords
- component
- code
- reactivative
- reactive
- 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
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000004806 packaging method and process Methods 0.000 claims abstract description 49
- 230000006870 function Effects 0.000 claims description 38
- 238000011161 development Methods 0.000 abstract description 14
- 239000002699 waste material Substances 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000005540 biological transmission 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/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种应用发布方法,该方法包括:接收用户终端上传的ReactNative代码;基于预设组件库将ReactNative代码转译为React代码,其中,预设组件库中存储有ReactNative组件,以及与ReactNative组件具有相同应用程序接口和功能的React组件;获取第一配置信息,根据第一配置信息从预设组件库中获取附加代码,将附加代码添加到React代码中;将ReactNative代码打包为原生版本的应用程序包,将React代码打包为web版本的应用程序包;分别将原生版本的应用程序包和web版本的应用程序包发送至对应的应用服务器。本发明还提出一种应用发布装置以及一种计算机可读存储介质。本发明解决了开发多平台应用时浪费开发资源且开发成本高的技术问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用发布方法、装置及计算机可读存储介质。
背景技术
ReactNative是facebook公司推出的一种基于javascript的开源框架,ReactNative结合了web应用和native应用的优势,可以在ios和android上共用,因此可以使用javascript来开发ios和android原生应用,但是无法直接用来开发web应用。当一个应用需要在不同的平台发布时,就需要开发适用于不同平台的应用程序包,而平台的差异意味着开发人员需要具备不同的开发技能。如果一个应用需要发布ios、android和web三个版本,则软件公司可以为ios和android平台配备掌握ReactNative技术的开发人员,同时需要为web版本的开发配备另外的开发人员,导致浪费开发资源,且开发成本高。
发明内容
本发明提供一种应用发布方法、装置及计算机可读存储介质,其主要目的在于解决开发多平台应用时浪费开发资源且开发成本高的技术问题。
为实现上述目的,本发明还提供一种应用发布方法,该方法包括:
接收用户终端上传的ReactNative代码;
基于预设组件库将所述ReactNative代码转译为React代码,其中,所述预设组件库中存储有ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件;
获取第一配置信息,根据第一配置信息从所述预设组件库中获取附加代码,将所述附加代码添加到所述React代码中;
将所述ReactNative代码打包为原生版本的应用程序包,将所述React代码打包为web版本的应用程序包;
分别将所述原生版本的应用程序包和web版本的应用程序包发送至对应的应用服务器。
可选地,所述基于预设组件库将所述ReactNative代码转译为React代码的步骤包括:
对所述ReactNative代码进行解析,查找所述ReactNative代码中的ReactNative组件;
基于所述预设组件库将查找的ReactNative组件替换为具有相同应用程序接口和功能的React组件。
可选地,所述基于预设组件库将所述ReactNative代码转译为React代码的步骤之前,所述方法还包括步骤:
获取初始组件库,所述初始组件库中包含有原生组件目录和web组件目录,其中所述原生组件目录下的路径中存储有ReactNative组件,所述web组件目录中存储有与原生组件目录下的ReactNative组件具有相同应用程序接口和功能的React组件;
获取第三方组件和自定义组件的原生版本和web版本,并按照初始组件库的目录分布方式添加至预设组件库中;
在所述预设组件库中创建附加目录,将用户上传的附加代码存储至所述附加目录中。
可选地,所述基于所述预设组件库将查找的ReactNative组件替换为具有相同应用程序接口和功能的React组件的步骤包括:
确定查找到的ReactNative组件在所述预设组件库中的原生组件目录下的存储路径;
根据所述存储路径在所述预设组件库中的web目录下查找与所述ReactNative组件具有相同应用程序接口和功能的React组件;
将所述ReactNative代码中的ReactNative组件替换为查找到的React组件。
可选地,所述附加代码包括前端路由和webpack打包代码。
此外,为实现上述目的,本发明还提供一种应用发布装置,该装置包括存储器和处理器,所述存储器中存储有可在所述处理器上运行的应用发布程序,所述应用发布程序被所述处理器执行时实现如下步骤:
接收用户终端上传的ReactNative代码;
基于预设组件库将所述ReactNative代码转译为React代码,其中,所述预设组件库中存储有ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件;
获取第一配置信息,根据第一配置信息从所述预设组件库中获取附加代码,将所述附加代码添加到所述React代码中;
将所述ReactNative代码打包为原生版本的应用程序包,将所述React代码打包为web版本的应用程序包;
分别将所述原生版本的应用程序包和web版本的应用程序包发送至对应的应用服务器。
可选地,所述基于预设组件库将所述ReactNative代码转译为React代码的步骤包括:
对所述ReactNative代码进行解析,查找所述ReactNative代码中的ReactNative组件;
基于所述预设组件库将查找的ReactNative组件替换为具有相同应用程序接口和功能的React组件。
可选地,所述应用发布程序还可被所述处理器执行,以在所述基于预设组件库将所述ReactNative代码转译为React代码的步骤之前,还实现如下步骤:
获取初始组件库,所述初始组件库中包含有原生组件目录和web组件目录,其中所述原生组件目录下的路径中存储有ReactNative组件,所述web组件目录中存储有与原生组件目录下的ReactNative组件具有相同应用程序接口和功能的React组件;
获取第三方组件和自定义组件的原生版本和web版本,并按照初始组件库的目录分布方式添加至预设组件库中;
在所述预设组件库中创建附加目录,将用户上传的附加代码存储至所述附加目录中。
可选地,所述基于所述预设组件库将查找的ReactNative组件替换为具有相同应用程序接口和功能的React组件的步骤包括:
确定查找到的ReactNative组件在所述预设组件库中的原生组件目录下的存储路径;
根据所述存储路径在所述预设组件库中的web目录下查找与所述ReactNative组件具有相同应用程序接口和功能的React组件;
将所述ReactNative代码中的ReactNative组件替换为查找到的React组件。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有应用发布程序,所述应用发布程序可被一个或者多个处理器执行,以实现如上所述的应用发布方法的步骤。
本发明提出的应用发布方法、装置及计算机可读存储介质,本实施例提出的应用发布方法,接收用户终端上传的ReactNative代码;基于预设组件库将ReactNative代码转译为React代码,其中,预设组件库中存储有ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件;获取第一配置信息,根据第一配置信息从预设组件库中获取附加代码,将附加代码添加到React代码中;将ReactNative代码打包为原生版本的应用程序包,将React代码打包为web版本的应用程序包;分别将原生版本的应用程序包和web版本的应用程序包发送至对应的应用服务器。通过上述方案,开发人员只需要基于ReactNative技术开发一次ReactNative代码即可,发布装置基于预设组件库将ReactNative代码转译为React代码,并根据第一配置信息为其添加附加代码;可以直接将上述React代码打包为web版本的应用程序包,不需要配备另外的开发人员开发web版本的应用,节省开发资源并降低开发成本。
附图说明
图1为本发明一实施例提供的应用发布方法的流程示意图;
图2为本发明一实施例提供的应用发布装置的内部结构示意图;
图3为本发明一实施例提供的应用发布装置中应用发布程序的模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种应用发布方法。参照图1所示,为本发明一实施例提供的应用发布方法的流程示意图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
在本实施例中,应用发布方法包括:
步骤S10,接收用户终端上传的ReactNative代码。
步骤S20,基于预设组件库将所述ReactNative代码转译为React代码,其中,所述预设组件库中存储有ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件。
在发布装置上预先配置好组件库,基于该组件库将ReactNative代码转译为React代码。其中,预设组件库的配置步骤如下:
获取依赖于RNW(React-Native-Web)的初始组件库,初始组件库中包含有原生组件目录和web组件目录,其中原生组件目录下的路径中存储有ReactNative组件,web组件目录中存储有与原生组件目录下的ReactNative组件具有相同应用程序接口和功能的React组件,并且ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件分别在原生组件目录和web组件目录中具有相同的存储路径;获取第三方组件和自定义组件的原生版本和web版本,并将获取的第三方组件和自定义组件的原生版本和web版本按照初始组件库的目录分布方式添加至预设组件库中;在预设组件库中创建附加目录,将用户上传的附加代码存储至附加目录中,其中,附加代码为编译web版软件所需要的额外信息,例如前端路由、webpack打包代码等。ReactNative代码适用于iOS平台和安卓平台,React代码适用于WEB平台。
开发人员开发完成ReactNative代码后将其上传至发布装置,发布装置存储ReactNative代码,并在接收到转译命令时,获取上述ReactNative代码,通过webpack工具对上传的ReactNative代码进行解析,并基于上述预设组件库对ReactNative代码进行转译。
步骤S20具体地包括如下步骤:
对所述ReactNative代码进行解析,查找所述ReactNative代码中的ReactNative组件;基于所述预设组件库将查找的ReactNative组件替换为具有相同应用程序接口和功能的React组件。
由于ReactNative是一种组件化的框架,因此,在本实施例中,以组件作为最小粒度对ReactNative代码进行转译。具体地,确定查找到的ReactNative组件在预设组件库中的原生组件目录下的存储路径;根据存储路径在所述预设组件库中的web目录下查找与所述ReactNative组件具有相同应用程序接口和功能的React组件;将ReactNative代码中的ReactNative组件替换为查找到的React组件。按照这种方式,当ReactNative代码中的全部ReactNative组件均替换为查找到的React组件时,完成ReactNative代码的转译。存储转译得到的React代码。
步骤S30,获取第一配置信息,根据第一配置信息从所述预设组件库中获取附加代码,将所述附加代码添加到所述React代码中。
对于web版的应用来说,需要使用webpack工具对代码进行打包,因此需要在代码中加入webpack打包代码;此外,还需要对web版的前端路由进行设置。因此预先设置好这些附加代码并将其添加至预设组件库的附加目录中。在转译得到React代码后,从附加目录中获取上述附加代码并添加至React代码中。
步骤S40,将所述ReactNative代码打包为原生版本的应用程序包,将所述React代码打包为web版本的应用程序包。
步骤S50,分别将所述原生版本的应用程序包和web版本的应用程序包发送至对应的应用服务器。
在对代码进行打包之前,预先配置好三条任务线路分别用于三个平台的代码打包任务的执行。其中,对于将ReactNative代码,将其打包为适用于ios平台和安卓平台的应用包,ReactNative技术中已经有对应的打包方案,在打包时,分别直接调用对应于ios平台或者安卓平台ReactNative原生打包命令,并执行这些打包命令生成ios平台或者安卓平台的应用程序包,因此不需要使用额外的打包工具。web代码的打包基于代码中的webpack打包工具实现。
在将各个平台对应的代码打包为应用程序包之后,将打包得到的各个平台的应用程序包发送到与各个平台对应的应用服务器,同时生成各个平台的应用版本号存储至热更新数据库。在用户打开客户端应用时,比较应用版本号,如果远程的应用服务器有更新的版本,则从应用服务器处下载最新版本的应用程序包替换本地已经下载的版本,实现热更新。此处如果用户已经进入对应的应用内,则提示用户手动升级。针对web端用户的访问,由于用户的访问是基于URL实现的,则直接可以通过服务器更新,无需下载程序包。
此外,可以理解的是,本实施例中的应用程序包可以只是针对一个应用中的业务项目,或者说是功能模块,例如,微信中的朋友圈功能即为微信的一个业务项目。即用户上传的ReactNative代码只是对一个应用中的一个业务项目的更新。发布的应用程序包只是针对这个业务项目,则在用户打开客户端应用时,从服务器处获取应用程序包对应用中对应的业务项目进行热更新。
本实施例提出的应用发布方法,接收用户终端上传的ReactNative代码;基于预设组件库将ReactNative代码转译为React代码,其中,预设组件库中存储有ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件;获取第一配置信息,根据第一配置信息从预设组件库中获取附加代码,将附加代码添加到React代码中;将ReactNative代码打包为原生版本的应用程序包,将React代码打包为web版本的应用程序包;分别将原生版本的应用程序包和web版本的应用程序包发送至对应的应用服务器。通过上述方案,开发人员只需要基于ReactNative技术开发一次ReactNative代码即可,发布装置基于预设组件库将ReactNative代码转译为React代码,并根据第一配置信息为其添加附加代码;可以直接将上述React代码打包为web版本的应用程序包,不需要配备另外的开发人员开发web版本的应用,节省开发资源并降低开发成本。
本发明还提供一种应用发布装置。参照图2所示,为本发明一实施例提供的应用发布装置的内部结构示意图。
在本实施例中,应用发布装置1可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、便携计算机等终端设备。该应用发布装置1至少包括存储器11、处理器12,通信总线13,以及网络接口14。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是应用发布装置1的内部存储单元,例如该应用发布装置1的硬盘。存储器11在另一些实施例中也可以是应用发布装置1的外部存储设备,例如应用发布装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括应用发布装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于应用发布装置1的应用软件及各类数据,例如应用发布程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行应用发布程序01等。
通信总线13用于实现这些组件之间的连接通信。
网络接口14可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该装置1与其他电子设备之间建立通信连接。
可选地,该装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在应用发布装置1中处理的信息以及用于显示可视化的用户界面。
图2仅示出了具有组件11-14以及应用发布程序01的应用发布装置1,本领域技术人员可以理解的是,图1示出的结构并不构成对应用发布装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
在图2所示的装置1实施例中,存储器11中存储有应用发布程序01;处理器12执行存储器11中存储的应用发布程序01时实现如下步骤:
接收用户终端上传的ReactNative代码。
基于预设组件库将所述ReactNative代码转译为React代码,其中,所述预设组件库中存储有ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件。
在发布装置上预先配置好组件库,基于该组件库将ReactNative代码转译为React代码。其中,预设组件库的配置步骤如下:
获取依赖于RNW(React-Native-Web)的初始组件库,初始组件库中包含有原生组件目录和web组件目录,其中原生组件目录下的路径中存储有ReactNative组件,web组件目录中存储有与原生组件目录下的ReactNative组件具有相同应用程序接口和功能的React组件,并且ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件分别在原生组件目录和web组件目录中具有相同的存储路径;获取第三方组件和自定义组件的原生版本和web版本,并将获取的第三方组件和自定义组件的原生版本和web版本按照初始组件库的目录分布方式添加至预设组件库中;在预设组件库中创建附加目录,将用户上传的附加代码存储至附加目录中,其中,附加代码为编译web版软件所需要的额外信息,例如前端路由、webpack打包代码等。ReactNative代码适用于iOS平台和安卓平台,React代码适用于WEB平台。
开发人员开发完成ReactNative代码后将其上传至发布装置,发布装置存储ReactNative代码,并在接收到转译命令时,获取上述ReactNative代码,通过webpack工具对上传的ReactNative代码进行解析,并基于上述预设组件库对ReactNative代码进行转译。
具体地,基于预设组件库将所述ReactNative代码转译为React代码的步骤可以包括如下细化步骤:
对所述ReactNative代码进行解析,查找所述ReactNative代码中的ReactNative组件;基于所述预设组件库将查找的ReactNative组件替换为具有相同应用程序接口和功能的React组件。
由于ReactNative是一种组件化的框架,因此,在本实施例中,以组件作为最小粒度对ReactNative代码进行转译。具体地,确定查找到的ReactNative组件在预设组件库中的原生组件目录下的存储路径;根据存储路径在所述预设组件库中的web目录下查找与所述ReactNative组件具有相同应用程序接口和功能的React组件;将ReactNative代码中的ReactNative组件替换为查找到的React组件。按照这种方式,当ReactNative代码中的全部ReactNative组件均替换为查找到的React组件时,完成ReactNative代码的转译。存储转译得到的React代码。
获取第一配置信息,根据第一配置信息从所述预设组件库中获取附加代码,将所述附加代码添加到所述React代码中。
对于web版的应用来说,需要使用webpack工具对代码进行打包,因此需要在代码中加入webpack打包代码;此外,还需要对web版的前端路由进行设置。因此预先设置好这些附加代码并将其添加至预设组件库的附加目录中。在转译得到React代码后,从附加目录中获取上述附加代码并添加至React代码中。
将所述ReactNative代码打包为原生版本的应用程序包,将所述React代码打包为web版本的应用程序包。
分别将所述原生版本的应用程序包和web版本的应用程序包发送至对应的应用服务器。
在对代码进行打包之前,预先配置好三条任务线路分别用于三个平台的代码打包任务的执行。其中,对于将ReactNative代码,将其打包为适用于ios平台和安卓平台的应用包,ReactNative技术中已经有对应的打包方案,在打包时,分别直接调用对应于ios平台或者安卓平台ReactNative原生打包命令,并执行这些打包命令生成ios平台或者安卓平台的应用程序包,因此不需要使用额外的打包工具。web代码的打包基于代码中的webpack打包工具实现。
在将各个平台对应的代码打包为应用程序包之后,将打包得到的各个平台的应用程序包发送到与各个平台对应的应用服务器,同时生成各个平台的应用版本号存储至热更新数据库。在用户打开客户端应用时,比较应用版本号,如果远程的应用服务器有更新的版本,则从应用服务器处下载最新版本的应用程序包替换本地已经下载的版本,实现热更新。此处如果用户已经进入对应的应用内,则提示用户手动升级。针对web端用户的访问,由于用户的访问是基于URL实现的,则直接可以通过服务器更新,无需下载程序包。
此外,可以理解的是,本实施例中的应用程序包可以只是针对一个应用中的业务项目,或者说是功能模块,例如,微信中的朋友圈功能即为微信的一个业务项目。即用户上传的ReactNative代码只是对一个应用中的一个业务项目的更新。发布的应用程序包只是针对这个业务项目,则在用户打开客户端应用时,从服务器处获取应用程序包对应用中对应的业务项目进行热更新。
本实施例提出的应用发布装置,接收用户终端上传的ReactNative代码;基于预设组件库将ReactNative代码转译为React代码,其中,预设组件库中存储有ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件;获取第一配置信息,根据第一配置信息从预设组件库中获取附加代码,将附加代码添加到React代码中;将ReactNative代码打包为原生版本的应用程序包,将React代码打包为web版本的应用程序包;分别将原生版本的应用程序包和web版本的应用程序包发送至对应的应用服务器。通过上述方案,开发人员只需要基于ReactNative技术开发一次ReactNative代码即可,发布装置基于预设组件库将ReactNative代码转译为React代码,并根据第一配置信息为其添加附加代码;可以直接将上述React代码打包为web版本的应用程序包,不需要配备另外的开发人员开发web版本的应用,节省开发资源并降低开发成本。
可选地,在其他的实施例中,应用发布程序还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,用于描述应用发布程序在应用发布装置中的执行过程。
例如,参照图3所示,为本发明应用发布装置一实施例中的应用发布程序的程序模块示意图,该实施例中,应用发布程序可以被分割为代码接收模块10、代码转译模块20、代码添加模块30、应用打包模块40和数据发送模块50,示例性地:
代码接收模块10用于:接收用户终端上传的ReactNative代码;
代码转译模块20用于:基于预设组件库将所述ReactNative代码转译为React代码,其中,所述预设组件库中存储有ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件;
代码添加模块30用于:获取第一配置信息,根据第一配置信息从所述预设组件库中获取附加代码,将所述附加代码添加到所述React代码中;
应用打包模块40用于:将所述ReactNative代码打包为原生版本的应用程序包,将所述React代码打包为web版本的应用程序包;
数据发送模块50用于:分别将所述原生版本的应用程序包和web版本的应用程序包发送至对应的应用服务器。
上述代码接收模块10、代码转译模块20、代码添加模块30、应用打包模块40和数据发送模块50等程序模块被执行时所实现的功能或操作步骤与上述实施例大体相同,在此不再赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有应用发布程序,所述应用发布程序可被一个或多个处理器执行,以实现如下操作:
接收用户终端上传的ReactNative代码;
基于预设组件库将所述ReactNative代码转译为React代码,其中,所述预设组件库中存储有ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件;
获取第一配置信息,根据第一配置信息从所述预设组件库中获取附加代码,将所述附加代码添加到所述React代码中;
将所述ReactNative代码打包为原生版本的应用程序包,将所述React代码打包为web版本的应用程序包;
分别将所述原生版本的应用程序包和web版本的应用程序包发送至对应的应用服务器。
本发明计算机可读存储介质具体实施方式与上述应用发布装置和方法各实施例基本相同,在此不作累述。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种应用发布方法,其特征在于,所述方法包括:
接收用户终端上传的ReactNative代码;
基于预设组件库将所述ReactNative代码转译为React代码,包括对所述ReactNative代码进行解析,查找所述ReactNative代码中的ReactNative组件,基于所述预设组件库将查找的ReactNative组件替换为具有相同应用程序接口和功能的React组件,其中,所述预设组件库中存储有ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件;
将预先设置好的附加代码添加至所述组件库的附加目录中,获取第一配置信息,根据第一配置信息从所述附加目录中获取所述附加代码,将所述附加代码添加到所述React代码中,所述附加代码包括前端路由和webpack打包代码;
通过调用ReactNative代码对应于ios平台或者安卓平台的ReactNative原生打包命令,将所述ReactNative代码打包为原生版本的应用程序包,将所述React代码打包为web版本的应用程序包;
分别将所述原生版本的应用程序包和web版本的应用程序包发送至对应的应用服务器。
2.如权利要求1所述的应用发布方法,其特征在于,所述基于预设组件库将所述ReactNative代码转译为React代码的步骤之前,所述方法还包括步骤:
获取初始组件库,所述初始组件库中包含有原生组件目录和web组件目录,其中所述原生组件目录下的路径中存储有ReactNative组件,所述web组件目录中存储有与原生组件目录下的ReactNative组件具有相同应用程序接口和功能的React组件;
获取第三方组件和自定义组件的原生版本和web版本,并按照初始组件库的目录分布方式添加至预设组件库中;
在所述预设组件库中创建附加目录,将用户上传的附加代码存储至所述附加目录中。
3.如权利要求2所述的应用发布方法,其特征在于,所述基于所述预设组件库将查找的ReactNative组件替换为具有相同应用程序接口和功能的React组件的步骤包括:
确定查找到的ReactNative组件在所述预设组件库中的原生组件目录下的存储路径;
根据所述存储路径在所述预设组件库中的web目录下查找与所述ReactNative组件具有相同应用程序接口和功能的React组件;
将所述ReactNative代码中的ReactNative组件替换为查找到的React组件。
4.一种应用发布装置,其特征在于,所述装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的应用发布程序,所述应用发布程序被所述处理器执行时实现如下步骤:
接收用户终端上传的ReactNative代码;
基于预设组件库将所述ReactNative代码转译为React代码,包括对所述ReactNative代码进行解析,查找所述ReactNative代码中的ReactNative组件,基于所述预设组件库将查找的ReactNative组件替换为具有相同应用程序接口和功能的React组件,其中,所述预设组件库中存储有ReactNative组件,以及与所述ReactNative组件具有相同应用程序接口和功能的React组件;
将预先设置好的附加代码添加至所述组件库的附加目录中,获取第一配置信息,根据第一配置信息从所述附加目录中获取所述附加代码,将所述附加代码添加到所述React代码中,所述附加代码包括前端路由和webpack打包代码;
通过调用ReactNative代码对应于ios平台或者安卓平台的ReactNative原生打包命令,将所述ReactNative代码打包为原生版本的应用程序包,将所述React代码打包为web版本的应用程序包;
分别将所述原生版本的应用程序包和web版本的应用程序包发送至对应的应用服务器。
5.如权利要求4所述的应用发布装置,其特征在于,所述应用发布程序还可被所述处理器执行,以在所述基于预设组件库将所述ReactNative代码转译为React代码的步骤之前,还实现如下步骤:
获取初始组件库,所述初始组件库中包含有原生组件目录和web组件目录,其中所述原生组件目录下的路径中存储有ReactNative组件,所述web组件目录中存储有与原生组件目录下的ReactNative组件具有相同应用程序接口和功能的React组件;
获取第三方组件和自定义组件的原生版本和web版本,并按照初始组件库的目录分布方式添加至预设组件库中;
在所述预设组件库中创建附加目录,将用户上传的附加代码存储至所述附加目录中。
6.如权利要求5所述的应用发布装置,其特征在于,所述基于所述预设组件库将查找的ReactNative组件替换为具有相同应用程序接口和功能的React组件的步骤包括:
确定查找到的ReactNative组件在所述预设组件库中的原生组件目录下的存储路径;
根据所述存储路径在所述预设组件库中的web目录下查找与所述ReactNative组件具有相同应用程序接口和功能的React组件;
将所述ReactNative代码中的ReactNative组件替换为查找到的React组件。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有应用发布程序,所述应用发布程序可被一个或者多个处理器执行,以实现如权利要求1至3中任一项所述的应用发布方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810546880.0A CN108762767B (zh) | 2018-05-31 | 2018-05-31 | 应用发布方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810546880.0A CN108762767B (zh) | 2018-05-31 | 2018-05-31 | 应用发布方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108762767A CN108762767A (zh) | 2018-11-06 |
CN108762767B true CN108762767B (zh) | 2024-04-02 |
Family
ID=64001140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810546880.0A Active CN108762767B (zh) | 2018-05-31 | 2018-05-31 | 应用发布方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108762767B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109814853A (zh) * | 2019-01-18 | 2019-05-28 | 宜创(北京)科技有限公司 | 基于可视化的多平台数据生成方法、装置、设备及介质 |
CN110113377A (zh) * | 2019-04-01 | 2019-08-09 | 苏宁易购集团股份有限公司 | 适用于混合模式应用的发布升级的方法及装置、智能设备 |
CN110780899A (zh) * | 2019-10-22 | 2020-02-11 | 深圳墨世科技有限公司 | 应用的热更新方法、装置、计算机设备及存储介质 |
CN112799648B (zh) * | 2019-11-14 | 2023-08-18 | 北京百度网讯科技有限公司 | 统一框架实现方法、系统、电子设备及存储介质 |
CN113064630B (zh) * | 2021-03-30 | 2024-02-23 | 北京智慧星光信息技术有限公司 | 移动端app自动打包方法、系统、电子设备及存储介质 |
CN113296828B (zh) * | 2021-05-26 | 2024-10-18 | 北京京东振世信息技术有限公司 | 一种发布应用的方法、服务器和系统 |
-
2018
- 2018-05-31 CN CN201810546880.0A patent/CN108762767B/zh active Active
Non-Patent Citations (1)
Title |
---|
cloudZqy.使用react-native-web将你的react-native应用H5化(一).《简书》.2017,write one,run everywhere-结论. * |
Also Published As
Publication number | Publication date |
---|---|
CN108762767A (zh) | 2018-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108762767B (zh) | 应用发布方法、装置及计算机可读存储介质 | |
CN105718289B (zh) | 一种组件关系建立方法及其设备 | |
CN107656729B (zh) | 列表视图的更新装置、方法及计算机可读存储介质 | |
CN111090437A (zh) | 应用部署方法、装置及计算机可读存储介质 | |
CN108376073B (zh) | 一种测试软件包生成方法及终端 | |
CN106406844B (zh) | 实现通讯交互平台公众号菜单的方法和装置 | |
EP3043258A1 (en) | iOS APPLICATION AUTOMATIC COMPILATION METHOD AND SYSTEM | |
CN104077162A (zh) | 移动终端应用模板的更新、发布方法及装置 | |
CN112416458A (zh) | 基于ReactNative的预加载方法、装置、计算机设备及存储介质 | |
CN108804120B (zh) | 一种页面构建方法、装置、设备及存储介质 | |
CN113138768B (zh) | 应用程序包生成方法、装置、电子设备以及可读存储介质 | |
CN117093286B (zh) | 插件生成方法、装置、设备及计算机可读存储介质 | |
CN113268245A (zh) | 代码分析方法、装置及存储介质 | |
JP2021068415A (ja) | コード実行方法、装置、レンダリングデバイス、記憶媒体、及びプログラム | |
CN111078256B (zh) | 自动化测试环境的升级方法、终端及可读存储介质 | |
KR101117165B1 (ko) | 이기종 운영체제 계층 모듈에서 동작하는 웹기반어플리케이션의 연동이 가능한 모바일 단말기용 웹 플랫폼 유닛 | |
CN112835568A (zh) | 一种项目构建方法和装置 | |
CN103957234A (zh) | 浏览器中下载文件的发送方法和浏览器装置 | |
CN111782239B (zh) | 软件打包和源码版本信息获取方法、装置及存储介质 | |
CN107092472B (zh) | 一种动态发布方法及设备 | |
KR20020009741A (ko) | 휴대전화단말기의 오퍼레이팅 기반환경 구축장치 및 이를이용한 응용프로그램의 무선 업그레이드 방법 | |
CN112083925A (zh) | 基于h5页面开发的数据获取方法、装置、设备及存储介质 | |
CN114253441B (zh) | 目标功能的启用方法及装置、存储介质、电子装置 | |
CN116302054A (zh) | 一种软件项目的开发方法、装置、存储介质及电子设备 | |
US20130332568A1 (en) | Method of data processing by a navigation module |
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 |