应用程序更新方法及更新系统与流程

文档序号:11261842阅读:355来源:国知局
应用程序更新方法及更新系统与流程

本申请实施例涉及计算机技术,尤其涉及一种应用程序更新方法及更新系统。



背景技术:

随着互联网的发展,应用程序(application,app)等的种类和数量越来越多。开发人员通过开发各种app来满足用户的需求。

一般来说,app内页面开发大致有如下两种方式:方式一、安卓(android)操作系统和苹果操作系统(iphoneoperatingsystem,ios)的开发人员基于各自平台开发代码,然后进行测试、发版、上线等流程;方式二、在app内直接引入由前端开发人员提供的超文本标记语言5(hypertextmark-uplanguage,html5)页面。上述方式一中,app页面访问动画效果绚丽且页面流畅,但更新过程中,需要针对不同操作系统各自的app进行更新,面临着双平台开发、打包发版的限制;上述方式二中,无需双平台开发、打包发版,但不具备流畅的动画体验效果。

因此,如何更新app,使得该app不受双平台开发、打包发版的限制,而且还能够具备流畅的动画体验效果,实为业界亟待解决的问题。



技术实现要素:

本申请实施例提供一种应用程序更新方法及更新系统,基于reactnative更新app,使得app的更新不受双平台开发、打包发版的限制,而且具备流畅的动画体验效果。

第一方面,本申请实施例提供一种应用程序更新方法,包括:

更新系统获取应用程序app的脚本语言文件,所述脚本语言文件为用于更新所述app的文件;

所述更新系统根据所述脚本语言文件生成补丁文件;

所述更新系统根据所述补丁文件更新数据库。

在一种可行的设计中,所述更新系统根据所述补丁文件更新所述待app的数据库之前,还包括:

所述更新系统对所述补丁文件进行测试。

在一种可行的设计中,所述更新系统根据所述脚本语言文件生成补丁文件之后,根据所述补丁文件更新所述app的数据库之前,还包括:

所述更新系统将所述补丁文件上传至内容分发网络,供所述内容分发网络将所述补丁文件写入应用程序编程接口。

在一种可行的设计中,上述的方法还包括:

所述更新系统判断更新步骤是否发生异常,所述更新步骤为所述更新系统根据所述补丁文件更新所述app的数据库的步骤或之前的任意一个步骤;

若所述更新步骤发生异常,则执行回滚操作。

在一种可行的设计中,上述的方法还包括:

所述更新系统获取更新信息,所述更新信息指示所述更新步骤是否发生异常,所述更新步骤为所述更新系统根据所述补丁文件更新所述app的数据库的步骤或之前的任意一个步骤;

所述更新系统通过套接字发送所述更新信息。

在一种可行的设计中,所述更新系统根据所述补丁文件更新所述app的数据库,包括:

所述更新系统判断所述补丁文件为新增补丁文件或更新补丁文件;

若所述补丁文件为新增补丁文件,则确定是否需要更新所述数据库,若需要,则将所述新增补丁文件写入应用程序编程接口,并写入所述数据库;否则,停止更新所述数据库;

若所述补丁文件为更新补丁文件,则确定是否需要更新所述数据库,若需要,则将所述更新补丁文件写入所述应用程序编程接口,并覆盖所述数据库中的原始补丁文件;否则,确定所述更新补丁文件的最大版本号。

第二方面,本申请实施例提供一种更新系统,包括:

获取模块,用于获取应用程序app的脚本语言文件,所述脚本语言文件为用于更新所述app的文件;

处理模块,用于根据所述脚本语言文件生成补丁文件;

更新模块,用于根据所述补丁文件更新数据库。

在一种可行的设计中,上述的更新系统还包括:

测试模块,用于在所述更新模块根据所述补丁文件更新所述待app的数据库之前,对所述补丁文件进行测试。

在一种可行的设计中,上述的更新系统还包括:

上传模块,用于在所述处理模块根据所述脚本语言文件生成补丁文件之后,所述更新模块根据所述补丁文件更新所述app的数据库之前,将所述补丁文件上传至内容分发网络,供所述内容分发网络将所述补丁文件写入应用程序编程接口。

在一种可行的设计中,所述处理模块,还用于判断更新步骤是否发生异常,所述更新步骤为所述更新系统根据所述补丁文件更新所述app的数据库的步骤或之前的任意一个步骤;若所述更新步骤发生异常,则执行回滚操作。

在一种可行的设计中,所述处理模块,还用于获取更新信息,所述更新信息指示所述更新步骤是否发生异常,所述更新步骤为所述更新系统根据所述补丁文件更新所述app的数据库的步骤或之前的任意一个步骤;通过套接字发送所述更新信息。

在一种可行的设计中,所述更新模块,具体用于判断所述补丁文件为新增补丁文件或更新补丁文件;

若所述补丁文件为新增补丁文件,则确定是否需要更新所述数据库,若需要,则将所述新增补丁文件写入应用程序编程接口,并写入所述数据库;否则,停止更新所述数据库;

若所述补丁文件为更新补丁文件,则确定是否需要更新所述数据库,若需要,则将所述更新补丁文件写入所述应用程序编程接口,并覆盖所述数据库中的原始补丁文件;否则,确定所述更新补丁文件的最大版本号。

本申请实施例提供的应用程序更新方法及更新系统,更新系统获取用于更新app的脚本语言文件,根据脚本语言文件生成补丁文件,并根据补丁文件更新数据库。该过程中,将用于更新app的js文件通过更新系统转换为能够被nativeapp融合的补丁文件,并更新到数据库中,使得后续对app进行更新时,仅将能够融合到app中的补丁文件下发给终端,使得app的更新不受双平台开发、打包发版的限制,而且具备流畅的动画体验效果。

附图说明

图1为本申请应用程序更新方法实施例一的信令图;

图2为本申请应用程序更新方法中根据js文件生成补丁文件的过程示意图;

图3为本申请应用程序更新方法中更新系统的目录结构图;

图4a为本申请应用程序更新方法中app更新的流程图;

图4b为本申请应用程序更新方法中app升级管理的流程图;

图5为本申请更新系统实施例一的结构示意图;

图6为本申请更新系统实施例二的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。以下内容为结合附图及较佳实施例,对依据本申请申请的具体实施方式、结构、特征及其功效的详细说明。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

reactnative是脸书(facebook)最新开源的,可同时用来开发ios和android应用,每个需要把数据上传到服务器的移动应用,都在重复实现数据提交的功能,如果有一种同时支持ios和android、能够把数据上传的服务器的组件即插即用。

通常来说,移动互联网行业应用可分为两种,一种是基于本地操作系统,如ios或android操作系统运行的app,称之为nativeapp;一种是基于智能终端的浏览器运行的webapp。对于nativeapp来说,开发人员可以基于操作系统平台开发代码以进行app的开发;或者,在app内直接引入由前端开发人员提供的html5页面。基于操作系统平台的开发方式中,app页面访问动画效果绚丽且页面流畅,但更新过程中,需要针对不同操作系统各自的app进行更新,面临着双平台开发、打包发版的限制;引入html5的开发方式中,无需双平台开发、打包发版,但不具备流畅的动画体验效果。

因此,如何更新app,使得该app不受双平台开发、打包发版的限制,而且还能够具备流畅的动画体验效果,实为业界亟待解决的问题。

有鉴于此,本申请实施例提供一种应用程序更新方法及更新系统,基于reactnative更新app,使得app的更新不受双平台开发、打包发版的限制,而且具备流畅的动画体验效果。具体的,可参加图1。

图1为本申请应用程序更新方法实施例一的信令图,本实施例从更新系统的角度对本申请应用程序更新方法进行详细说明。具体的,本实施例包括:

101、更新系统获取应用程序app的脚本语言文件,所述脚本语言文件为用于更新所述app的文件。

本申请实施例中,app指nativeapp,各个app的相关文件存储在数据库中。基于reactnative的app更新过程中,开发人员基于脚本语言(javascript,js)文件开发用于更新app的代码,即补丁(patch)文件,通过更新系统将该pacth文件更新到数据库中,并将该patch文件下发给加载app的终端,使得该patch文件能够融合到app中,其中,js文件为针对app需要更新的模块进行编写的代码。融合过程中,终端无需退出app,而是在线对app进行热更新。而且,更新过程中,仅仅将patch文件下发给终端,无需终端删除低版本的app、再下载高版本的app以进行更新。

本步骤中,开发人员通过更新系统对app需要更新的模块进行修改,如新增代码、修改代码、删除代码、查询等,根据该些修改获取js文件。

102、所述更新系统根据所述脚本语言文件生成补丁文件。

本步骤中,更新系统主要将前端开发人员开发出的js文件,转换为可以被nativeapp使用的补丁(patch)文件。具体的,可参见图2,图2为本申请应用程序更新方法中根据js文件生成补丁文件的过程示意图。

请参照图2,转换过程包括如下步骤:

201、js文件合并。

202、生成bundle类文件。

本步骤中,更新系统对合并后的js文件进行编译,生成bundle类文件。

203、根据bundle类文件生成差异文件。

本步骤中,更新系统对bundle类文件和底层库中的普通(common)文件进行对比,生成差异(diff)文件。

204、对diff文件进行压缩。

本步骤中,更新系统采用消息摘要算法第五版(messagedigestalgorithm,md5)等对diff文件进行压缩。

205、根据压缩后的文件生成补丁文件。

本步骤中,更新系统根据根据压缩后的文件生成补丁文件。

103、所述更新系统根据所述补丁文件更新数据库。

本步骤中,更新系统通过将补丁文件写入redis,进而写入数据库等一系列操作,将补丁文件写入数据库。

本申请实施例提供的应用程序更新方法,更新系统获取用于更新app的脚本语言文件,根据脚本语言文件生成补丁文件,并根据补丁文件更新数据库。该过程中,将用于更新app的js文件通过更新系统转换为能够被nativeapp融合的补丁文件,并更新到数据库中,使得后续对app进行更新时,仅将能够融合到app中的补丁文件下发给终端,使得app的更新不受双平台开发、打包发版的限制,而且具备流畅的动画体验效果。

下面,从逻辑层面对上述应用程序更新方法中的更新系统进行详细说明。

具体的,更新系统基于“点+表达+java脚本模板库+关系型数据库管理系统(node+express+ejs+mysql)”搭建的项目框架,用于完成交互接口、数据查询、数据交互等一系列操作。采用该框架的好处是:node是基于浏览器(chromev8)引擎的js运行环境,通过使用一个事件驱动、非阻塞式输入/输出(input/output,i/o)的模型,使得node为一个轻量级且高效的node。因此,可基于node纯前端开发实现整个系统。更新系统采用模型视图控制器(modelviewcontroller,mvc)开发模式,具体的目录结构可参见图3,图3为本申请应用程序更新方法中更新系统的目录结构图。

请参照图3,视图(view)层为页面展示层,用于展示页面,路径(routes)层为请求处理层,用于控制请求处理,dbo为数据操作层,用于数据库的操作,模型(model)为逻辑处理层。

下面,以增加rn资源为例对上述的图3进行详细说明。

具体的,首先,用户在view层的新增页面输入相关内容,点击提交。例如,代码如下:

其次,routes层拦截请求,调用model层的逻辑处理。例如,代码如下:

再次,在model层处理相关逻辑,看是否需要操作数据库。例如,代码如下:

最后,调用dbo层的数据库操作,插入数据,返回操作结果。例如,代码如下:

接下来,从功能模块的角度对上述的应用程序更新方法中的更新系统进行详细说明。

具体的,本申请实施例中,更新系统从逻辑上分为四个功能模块,分别为:rn资源管理模块、rn审批上线模块、app升级管理模块和操作日志展示模块。其中,rn资源管理模块具有新增、修改、查询或删除资源等功能,rn审批上线模块主要用于申请闪现资源进行审批,app升级管理模块,用于将用户录入的需要升级的app版本录入数据库、写入远程字典服务(remotedictionaryserver,redis)器,供后端研发(researchdesign,rd)读取,操作日志展示模块用于展示用户操作记录,便于后期查阅记录、排查问题等。另外,该些功能模块可以按照用户权限划分,不同权限的用户对该些功能模块的操作权限不同。具体的,可参见图4a与图4b,图4a为本申请应用程序更新方法中app更新的流程图,图4b为本申请应用程序更新方法中app升级管理的流程图。

请参照图4a,图4a主要涉及rn资源管理模块,app更新的流程包括:

301、rn资源管理模块更新js文件。

本步骤中,rn资源管理模块基于业务线,通过更新系统,在新增页面、修改页面、查询页面或删除页面输入相应的js代码文件,即将代码托管到git上。

302、点击提交。

本步骤中,用户点击提交。

303、验证js文件是否合格,若合格,则执行304;若不合格,则执行301;

304、更新系统对js文件进行操作。

本步骤中,更新系统的后台逻辑对js文件进行资源下载、生成补丁文件、将所述补丁文件上传至内容分发网络(contentdeliverynetwork,cdn),供所述内容分发网络将补丁文件写入应用程序编程接口(即写入redis)。

305、对补丁文件进行测试,更新sql。

请参照图4b,图4b主要涉及rn审批上线模块、app升级管理模块和操作日志展示模块,app升级管理流程包括:

401、启动app新增管理。

402、判断补丁文件为新增补丁文件或更新补丁文件。

本步骤中,有操作权限的操作者对资源进行审批,即有操作权限的操作通过rn审批上线模块判断补丁文件为新增补丁文件或更新补丁文件,若补丁文件为更新补丁文件,则执行403;若补丁文件为新增补丁文件,则执行409。

403、修改已有记录。

404、判断更新补丁文件的版本号是否大于或等于数据库中的最大版本号,若是,则执行405;若否,则执行403;

405、确定是否需要强制更新所述数据库,若是,则执行406;若否,则执行408;

406、将所述更新补丁文件写入所述应用程序编程接口,之后,执行407。

407、覆盖数据库中的原始补丁文件。

408、确定数据库中该更新补丁文件的最大版本号,之后,执行406。

409、新增记录。

本步骤中,对新增补丁文件进行记录。

410、确定是否需要强制更新所述数据库,若是,则执行411;若否,则执行412。

411、将所述新增补丁文件写入应用程序编程接口,并写入所述数据库。

412、停止更新所述数据库。

可选的,上述实施例中,根据所述补丁文件更新所述app的数据库的步骤或该步骤之前的任意一个步骤都可称之为更新步骤,更新系统还判断任意一个更新步骤是否发生异常,若任意一个更新步骤发生异常,则执行回滚操作。

具体的,逻辑处理时,先执行操作非写入数据库的操作,对所有非写入数据库的操作执行成功后,最后执行写入数据库的操作。然而,当必须先执行数据库的写入操作再进行其他操作时,将会出现数据库里的信息发生改变、而后续的其他操作出现问题的现象,此时数据发生错误。

本申请实施例中,为了避免该种显现的发生,对于必须先增加到数据库的资源信息,也可称之为先执行写入数据库的操作,该些先执行写入数据库的操作即为本申请中的更新步骤,若该些更新步骤抛出异常,则执行回滚操作,即执行回滚sql。例如,先基于数据库中最大的bundle文件的id,在数据库中插入新增资源信息,然后依次执行:下载资源、生成patch文件、文件上传cdn、写入redis等一系列操作,若这些操作中的某个步骤发生异常中断,则在捕获异常中执行回滚函数(rollbacksql)以执行回滚操作。代码可以如下:

可选的,上述实施例中,根据所述补丁文件更新所述app的数据库的步骤或该步骤之前的任意一个步骤都可称之为更新步骤,更新系统还判断任意一个更新步骤是否发生异常,若任意一个更新步骤发生异常,则更新系统通过套接字发送所述更新信息。

具体的,业务线进行新增或修改操作时,后台程序在处理js文件,以执行生成patch文件、上传cdn、写入redis等步骤的时间较长,常规的异步javascript和xml(asynchronousjavascriptandxml,ajax)请求有时间限制,当执行时间过长时会出现网络超时现象。若后台程序未执行完,前端界面已收到ajax请求超时的提示,则会出现问题。

为避免上述问题的发生,本申请实施例中,引入套接字(socket.io),实现websockt通信,客户端和服务器可同时跨平台实时通信。

通信过程中,用户在进行新增或修改等操作时,客户端设置基socket.io自定义的接收事件,并在编译中给出提示;当js文件生成patch文件成功或失败时,服务器会基于socket.io,将操作结果注册到接收事件上;客户端接收到监听事件的回馈结果,向用户提示操作结束。部分实现代码如下:

首先、node程序入口。

其次,客户端相关代码。

最后,服务器相关代码。

图5为本申请更新系统实施例一的结构示意图,包括:

获取模块11,用于获取应用程序app的脚本语言文件,所述脚本语言文件为用于更新所述app的文件;

处理模块12,用于根据所述脚本语言文件生成补丁文件;

更新模块13,用于根据所述补丁文件更新数据库。

本申请实施例提供的更新系统,获取用于更新app的脚本语言文件,根据脚本语言文件生成补丁文件,并根据补丁文件更新数据库。该过程中,将用于更新app的js文件通过更新系统转换为能够被nativeapp融合的补丁文件,并更新到数据库中,使得后续对app进行更新时,仅将能够融合到app中的补丁文件下发给终端,使得app的更新不受双平台开发、打包发版的限制,而且具备流畅的动画体验效果。

图6为本申请更新系统实施例二的结构示意图,请参照图6,本申请实施例提供的更新系统,在上述图5的基础上,进一步的,还包括:

测试模块14,用于在所述更新模块13根据所述补丁文件更新所述待app的数据库之前,对所述补丁文件进行测试。

再请参照图6,可选的,在本申请一实施例中,上述的更新系统还包括:

上传模块15,用于在所述处理模块12根据所述脚本语言文件生成补丁文件之后,所述更新模块13根据所述补丁文件更新所述app的数据库之前,将所述补丁文件上传至内容分发网络,供所述内容分发网络将所述补丁文件写入应用程序编程接口。

可选的,在本申请一实施例中,所述处理模块12,还用于判断更新步骤是否发生异常,所述更新步骤为所述更新系统根据所述补丁文件更新所述app的数据库的步骤或之前的任意一个步骤;若所述更新步骤发生异常,则执行回滚操作。

可选的,在本申请一实施例中,所述处理模块12,还用于获取更新信息,所述更新信息指示所述更新步骤是否发生异常,所述更新步骤为所述更新系统根据所述补丁文件更新所述app的数据库的步骤或之前的任意一个步骤;通过套接字发送所述更新信息。

可选的,在本申请一实施例中,所述更新模块13,具体用于判断所述补丁文件为新增补丁文件或更新补丁文件;

若所述补丁文件为新增补丁文件,则确定是否需要更新所述数据库,若需要,则将所述新增补丁文件写入应用程序编程接口,并写入所述数据库;否则,停止更新所述数据库;

若所述补丁文件为更新补丁文件,则确定是否需要更新所述数据库,若需要,则将所述更新补丁文件写入所述应用程序编程接口,并覆盖所述数据库中的原始补丁文件;否则,确定所述更新补丁文件的最大版本号。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1