CN110096295B - 基于ReactNative的多模块移动应用的热更新方法及*** - Google Patents
基于ReactNative的多模块移动应用的热更新方法及*** Download PDFInfo
- Publication number
- CN110096295B CN110096295B CN201910379464.0A CN201910379464A CN110096295B CN 110096295 B CN110096295 B CN 110096295B CN 201910379464 A CN201910379464 A CN 201910379464A CN 110096295 B CN110096295 B CN 110096295B
- Authority
- CN
- China
- Prior art keywords
- server
- jsbundle
- module
- mobile application
- request
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种基于ReactNative的多模块移动应用的热更新方法及***。在该方法中,客户端可针对不同ReactNative模块,利用本地的缓存文件或者内置文件进行热更新,即使网络等原因造成模块资源获取失败,也可以获取缓存中最近的资源文件进行界面数据渲染,服务器端可以根据客户端的请求,精准地为模块下发更新资源,能够更加快速的进行App的版本更新、及时解决线上问题,让用户不用重新下载新版本就能体验新版本App的功能。
Description
技术领域
本发明涉及网络技术领域,尤其涉及一种基于ReactNative的多模块移动应用的热更新方法及***。
背景技术
移动互联网就是将移动通信和互联网二者结合起来成为一体,是指互联网的技术、平台、商业模式和应用与移动通信技术结合并实践的活动的总称。在当今的移动互联网时代,移动应用几乎面临着和Web应用一样的问题,即不跨平台、版本收敛慢、无法及时修复线上问题、需求迭代缓慢等。但移动应用还不能完全转成Web应用,所以App的动态化就成了一种趋势。App的动态化的方案有很多种,ReactNative则是很具有代表性的一种。为了更加快速的进行App的版本更新、及时解决线上问题,让用户不用重新下载新版本就能体验新版本App的功能,亟需提出一种基于ReactNative的多模块移动应用的热更新方法及***。
发明内容
本发明提供一种基于ReactNative的多模块移动应用的热更新方法及***,能够更加快速的进行App的版本更新、及时解决线上问题,让用户不用重新下载新版本就能体验新版本App的功能。
第一方面,本发明提供一种基于ReactNative的多模块移动应用的热更新方法,应用于客户端,所述方法包括如下步骤:
进入移动应用的ReactNative模块;
加载所述移动应用的jsbundle文件和资源文件;
根据所述jsbundle文件和资源文件,向服务器请求所述ReactNative模块的热更新配置信息,所述热更新配置信息包括以下参数:模块唯一标识、应用版本号、jsbundle版本号,以及jsbundle的Md5值;
接收服务器返回的热更新配置信息;
根据所述热更新配置信息进行热更新资源的下载;
解压所述热更新资源;
将解压后的所述热更新资源缓存到所述移动应用的沙盒路径中。
结合第一方面,在第一方面的第一种可实现方式中,加载所述移动应用的jsbundle文件和资源文件包括:
检测所述移动应用的沙盒中是否缓存有所述ReactNative模块的jsbundle文件和资源文件;
如果所述移动应用的沙盒中缓存有所述ReactNative模块的jsbundle文件和资源文件,加载缓存的jsbundle文件和资源文件;
如果所述移动应用的沙盒中没有缓存所述ReactNative模块的jsbundle文件和资源文件,加载所述移动应用中内置的jsbundle文件和资源文件。
结合第一方面,在第一方面的第二种可实现方式中,加载缓存的jsbundle文件和资源文件包括:
将所述ReactNative模块的文件拷贝到currentReadedModule文件中;
返回拷贝后的文件路径;
读取所述拷贝后的文件路径中的jsbundle文件和资源文件包括进行界面渲染。
结合第一方面,在第一方面的第三种可实现方式中,将解压后的所述热更新资源缓存到所述移动应用的沙盒路径中之后,所述方法还包括:
识别所述ReactNative模块是否需要强制更新;
如果所述ReactNative模块需要强制更新,刷新所述ReactNative模块。
结合第一方面的第三种可实现方式,在第一方面的第四种可实现方式中,刷新所述ReactNative模块包括:
向服务器上传刷新页面的请求,所述刷新页面的请求中携带有请求参数,以使得服务器根据所述请求参数查询出未刷新期间产生的数据和补传数据,判断所述未刷新期间产生的数据和补传数据的数据量是否超出预设的最大数据量,在所述未刷新期间产生的数据和补传数据的数据量超出预设的最大数据量时,向客户端返回数据并在返回的数据中携带还有更多数据的标识;
接收服务器返回的数据;
根据服务器返回的数据中的标识,判断是否有更多数据未传回;
如果有更多数据未传回,根据服务器返回的数据的最早产生时间,移除本地缓存中所有比所述最早产生时间早的数据;
将其余的数据缓存于本地数据库中;
刷新显示界面。
结合第一方面的第四种可实现方式,在第一方面的第五种可实现方式中,所述方法还包括:
向服务器上传加载更多数据的请求,所述加载更多数据的请求中携带有客户端当前界面显示数据中的最早发生时间,以使得服务器查找出比所述最早发生时间更早的数据,将比所述最早发生时间更早的数据返回至客户端;
接收服务器返回的比所述最早发生时间更早的数据;
将比所述最早发生时间更早的数据缓存本地数据库中;
刷新显示界面。
第二方面,本发明提供一种基于ReactNative的多模块移动应用的热更新方法,应用于服务器,所述方法包括如下步骤:
接收客户端上传的对移动应用ReactNative模块的配置信息进行热更新的请求,所述热更新的请求中携带以下参数:模块唯一标识、应用版本号、jsbundle版本号,以及jsbundle的Md5值;
根据所述模块唯一标识,查询服务器的数据库中启用的最新资源;
识别是否存在所述最新资源;
如果不存在所述最新资源,向客户端返回请求失败信息;
如果存在所述最新资源,判断所述请求中携带的应用版本号是否大于或等于服务器的数据库中当前配置的应用版本号;
如果所述请求中携带的应用版本号大于或等于服务器的数据库中当前配置的应用版本号,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端对移动应用ReactNative模块的配置信息进行热更新。
结合第二方面,在第二方面的第一种可实现方式中,如果所述请求中携带的应用版本号不大于或等于服务器的数据库中当前配置的应用版本号,判断所述请求中携带的jsbundle版本号是否大于或等于服务器的数据库中当前配置的jsbundle版本号;
如果所述请求中携带的jsbundle版本号大于或等于服务器的数据库中当前配置的jsbundle版本号,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端对移动应用ReactNative模块的配置信息进行热更新。
结合第二方面的第一种可实现方式,在第二方面的第二种可实现方式中,如果所述请求中携带的jsbundle版本号不大于或等于服务器的数据库中当前配置的jsbundle版本号,判断所述请求中携带的jsbundle的Md5值是否大于或等于服务器的数据库中当前配置的jsbundle的Md5;
如果所述请求中携带的jsbundle的Md5值大于或等于数据库中当前配置的jsbundle的Md5值,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端对移动应用ReactNative模块的配置信息进行热更新;
如果所述请求中携带的jsbundle的Md5值不大于或等于服务器的数据库中当前配置的jsbundle的Md5值,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端不对移动应用ReactNative模块的配置信息进行热更新。
第三方面,本发明提供一种基于ReactNative的多模块移动应用的热更新***,所述***包括客户端和服务器;
所述客户端,用于进入移动应用的ReactNative模块,加载所述移动应用的jsbundle文件和资源文件,根据所述jsbundle文件和资源文件,向服务器请求所述ReactNative模块的热更新配置信息,所述热更新配置信息包括以下参数:模块唯一标识、应用版本号、jsbundle版本号,以及jsbundle的Md5值,接收服务器返回的热更新配置信息,根据所述热更新配置信息进行热更新资源的下载,解压所述热更新资源,将解压后的所述热更新资源缓存到所述移动应用的沙盒路径中;
所述服务器,用于接收客户端上传的对移动应用ReactNative模块的配置信息进行热更新的请求,所述热更新的请求中携带以下参数:模块唯一标识、应用版本号、jsbundle版本号,以及jsbundle的Md5值,根据所述模块唯一标识,查询服务器的数据库中启用的最新资源,识别是否存在所述最新资源,如果不存在所述最新资源,向客户端返回请求失败信息,如果存在所述最新资源,判断所述请求中携带的应用版本号是否大于或等于服务器的数据库中当前配置的应用版本号,如果所述请求中携带的应用版本号大于或等于服务器的数据库中当前配置的应用版本号,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端对移动应用ReactNative模块的配置信息进行热更新。
由以上技术方案可知,本发明提供的一种基于ReactNative的多模块移动应用的热更新方法及***,客户端可针对不同ReactNative模块,利用本地的缓存文件或者内置文件进行热更新,即使网络等原因造成模块资源获取失败,也可以获取缓存中最近的资源文件进行界面数据渲染,服务器端可以根据客户端的请求,精准地为模块下发更新资源,能够更加快速的进行App的版本更新、及时解决线上问题,让用户不用重新下载新版本就能体验新版本App的功能。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的基于ReactNative的多模块移动应用的热更新方法一实施例的流程图。
图2为步骤S102的流程图。
图3为步骤S202的流程图。
图4为本发明提供的基于ReactNative的多模块移动应用的热更新方法一种可实现方式的流程图。
图5为本发明提供的基于ReactNative的多模块移动应用的热更新方法刷新页面的流程图。
图6为本发明提供的基于ReactNative的多模块移动应用的热更新方法加载更多数据的流程图。
图7为本发明提供的基于ReactNative的多模块移动应用的热更新方法另一实施例的流程图。
图8为本发明提供的基于ReactNative的多模块移动应用的热更新***的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。以下结合附图,详细说明本发明各实施例提供的技术方案。
请参阅图1,为本发明提供的一种基于ReactNative的多模块移动应用的热更新方法的第一实施例的流程图,该方法可应用于对运行iOS、Android操作***的客户端上的基于ReactNative多模块的App进行热更新。
在本实施例中,所述的热更新就是针对需求或者bug,更新应用代码和图片等资源文件,让用户在不用升级安装新版本的前提下,使用最新版本功能。ReactNative模块会将所有JS代码和图片根据平台,压缩成一个jsbundle文件和一个资源文件。而多模块下的ReactNative应用,则会生成不同模块的对应文件。服务器负责管理这些文件,并且根据客户端请求所传参数,下发对应模块的热更新配置。客户端根据返回的配置信息,下载更新模块最新资源数据,客户端具体可以是智能手机。当客户端需要热更新App某个模块时,则需要考虑模块版本、数据缓存、热更新配置获取、以及最后的数据刷新等。
本发明提供的一种基于ReactNative的多模块移动应用的热更新方法,具体可以包括如下步骤:
步骤S101,进入移动应用的ReactNative模块。
步骤S102,加载所述移动应用的jsbundle文件和资源文件。
如图2所示,加载所述移动应用的jsbundle文件和资源文件具体可以包括:
步骤S201,检测所述移动应用的沙盒中是否缓存有所述ReactNative模块的jsbundle文件和资源文件。
步骤S202,如果所述移动应用的沙盒中缓存有所述ReactNative模块的jsbundle文件和资源文件,加载缓存的jsbundle文件和资源文件。
步骤S203,如果所述移动应用的沙盒中没有缓存所述ReactNative模块的jsbundle文件和资源文件,加载所述移动应用中内置的jsbundle文件和资源文件,例如ipa或者apk格式的移动应用中内置的jsbundle文件和资源文件,从而即使网络等原因造成模块资源获取失败,也可以获取缓存中最近的资源文件进行界面数据渲染。
如图3所示,进一步地,加载缓存的jsbundle文件和资源文件具体可以包括:
步骤S301,将所述ReactNative模块的文件拷贝到currentReadedModule文件中。
步骤S302,返回拷贝后的文件路径。
步骤S303,读取所述拷贝后的文件路径中的jsbundle文件和资源文件包括进行界面渲染。这样做的目的是避免同时读写操作某模块文件,造成文件错乱、死锁等情况。
步骤S103,根据所述jsbundle文件和资源文件,向服务器请求所述ReactNative模块的热更新配置信息,所述热更新配置信息包括以下参数:模块唯一标识(英文:ModuleId)、应用版本号(英文:App Version)、jsbundle版本号(英文:Package Version),以及jsbundle的Md5值(英文:Package Md5),服务务器根据参数,返回该模块的配置,包含是否需要更新等信息。
步骤S104,接收服务器返回的热更新配置信息。
步骤S105,根据所述热更新配置信息进行热更新资源的下载。
步骤S106,解压所述热更新资源。
具体地,如果解压未成功,则可以移除残留的文件。
步骤S107,将解压后的所述热更新资源缓存到所述移动应用的沙盒路径中。
具体地,在本实施例中,缓存的文件目录结构可以如下:首先,iOS操作***下为Library目录,Android操作***下为files目录。Library目录或者files目录下包含appname,即应用名目录。app name目录下包含001、002等目录,模块ID的目录。001、002等目录下分别包含assets,即图片等资源。Jsbundle,即压缩的代码文件。以及config,即资源的配置信息。而Library目录或者files目录下还包含currentReadedModule目录,用于存放正在读取的资源。
请参阅图4,在本发明一可选实施方式中,将解压后的所述热更新资源缓存到所述移动应用的沙盒路径中之后,所述方法还可以包括:
步骤S401,识别所述ReactNative模块是否需要强制更新。
步骤S402,如果所述ReactNative模块需要强制更新,刷新所述ReactNative模块。
如图5所示,刷新所述ReactNative模块具体可以包括:
步骤S501,向服务器上传刷新页面的请求,所述刷新页面的请求中携带有请求参数,以使得服务器根据所述请求参数查询出未刷新期间产生的数据和补传数据,判断所述未刷新期间产生的数据和补传数据的数据量是否超出预设的最大数据量,在所述未刷新期间产生的数据和补传数据的数据量超出预设的最大数据量时,向客户端返回数据并在返回的数据中携带还有更多数据的标识。
具体地,客户端一般为下拉刷新或第一次进入页面时刷新。客户端上传的参数可以包括本地缓存数据中最早的发生时间,以及本地缓存数据中最大唯一有序递增字段值。如果没有缓存则不上传本地缓存数据中最早的发生时间,如果没有缓存的事件则不上传本地缓存数据中最大唯一有序递增字段值。
服务器在收到客户端上传的参数之后,可以查询出数据发生时间晚于客户端传入最早发生时间,且唯一有序递增字段值大于客户端传入的本地缓存数据中最大唯一有序递增字段值的相应值,若查询出的这些相应值的数据多于约定的最大数据条数,则服务器返回参数中给予还有更多数据的标识。
步骤S502,接收服务器返回的数据。
步骤S503,根据服务器返回的数据中的标识,判断是否有更多数据未传回。
步骤S504,如果有更多数据未传回,根据服务器返回的数据的最早产生时间,移除本地缓存中所有比所述最早产生时间早的数据。其他数据正常显示。如果没有更多数据未传回,则根据数据的产生时间从晚到早显示在界面上。
步骤S505,将其余的数据缓存于本地数据库中。
步骤S506,刷新显示界面。
进一步地,请参阅图6,所述方法还可以包括加载更多数据时的步骤:
步骤S601,向服务器上传加载更多数据的请求,所述加载更多数据的请求中携带有客户端当前界面显示数据中的最早发生时间,以使得服务器查找出比所述最早发生时间更早的数据,将比所述最早发生时间更早的数据返回至客户端。
具体地,客户端一般为上拉加载更多数据。
步骤S602,接收服务器返回的比所述最早发生时间更早的数据。
步骤S603,将比所述最早发生时间更早的数据缓存本地数据库中。
步骤S604,刷新显示界面。
此外,本发明可实现一套可视化的前端操作界面(H5页面),可以添加资源、参数的可选配置。根据资源上传接口,实现不同应用不同模块的资源上传管理。其中,可配置的参数如下:资源类型(对应模块id)、名称(应用版本号)、描述(jsbundle版本号)、版本、最低适配的应用版本、平台(iOS/Android)、是否强制更新、资源包(zip文件)以及资源是否启用。可视化的操作界面,简化了热更新资源的上传流程。测试、运营都可根据可根据需求,填写配置参数,进行文件的上传。同时,也可配置用户权限,方便对热更新文件进行操作管理。
请参阅图7,为一种基于ReactNative的多模块移动应用的热更新方法,应用于服务器,所述方法可以包括如下步骤:
步骤S701,接收客户端上传的对移动应用ReactNative模块的配置信息进行热更新的请求,所述热更新的请求中携带以下参数:模块唯一标识、应用版本号、jsbundle版本号,以及jsbundle的Md5值。
步骤S702,根据所述模块唯一标识,查询服务器的数据库中启用的最新资源。
步骤S703,识别是否存在所述最新资源。如果不存在所述最新资源,向客户端返回请求失败信息。
如果存在所述最新资源,则执行步骤S704,判断所述请求中携带的应用版本号是否大于或等于服务器的数据库中当前配置的应用版本号。
步骤S704,如果所述请求中携带的应用版本号大于或等于服务器的数据库中当前配置的应用版本号,执行步骤S707,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端对移动应用ReactNative模块的配置信息进行热更新。
如果所述请求中携带的应用版本号不大于或等于服务器的数据库中当前配置的应用版本号,则执行执行步骤S705,判断所述请求中携带的jsbundle版本号是否大于或等于服务器的数据库中当前配置的jsbundle版本号。
如果所述请求中携带的jsbundle版本号大于或等于服务器的数据库中当前配置的jsbundle版本号,执行步骤S707,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端对移动应用ReactNative模块的配置信息进行热更新。
如果所述请求中携带的jsbundle版本号不大于或等于服务器的数据库中当前配置的jsbundle版本号,则执行执行步骤S706,判断所述请求中携带的jsbundle的Md5值是否大于或等于服务器的数据库中当前配置的jsbundle的Md5值。
如果所述请求中携带的jsbundle的Md5值大于或等于数据库中当前配置的jsbundle的Md5值,执行步骤S707,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端对移动应用ReactNative模块的配置信息进行热更新。
如果所述请求中携带的jsbundle的Md5值不大于或等于服务器的数据库中当前配置的jsbundle的Md5值,则执行步骤S708,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端不对移动应用ReactNative模块的配置信息进行热更新。
请参阅图8,本发明还提供一种基于ReactNative的多模块移动应用的热更新***,所述***包括客户端81和服务器82。
客户端81用于进入移动应用的ReactNative模块,加载移动应用的jsbundle文件和资源文件,根据jsbundle文件和资源文件,向服务器请求ReactNative模块的热更新配置信息,热更新配置信息包括以下参数:模块唯一标识、应用版本号、jsbundle版本号,以及jsbundle的Md5值,接收服务器返回的热更新配置信息,根据热更新配置信息进行热更新资源的下载,解压热更新资源,将解压后的热更新资源缓存到移动应用的沙盒路径中。
服务器82用于接收客户端上传的对移动应用ReactNative模块的配置信息进行热更新的请求,热更新的请求中携带以下参数:模块唯一标识、应用版本号、jsbundle版本号,以及jsbundle的Md5值,根据模块唯一标识,查询服务器的数据库中启用的最新资源,识别是否存在最新资源,如果不存在最新资源,向客户端返回请求失败信息,如果存在最新资源,判断请求中携带的应用版本号是否大于或等于服务器的数据库中当前配置的应用版本号,如果请求中携带的应用版本号大于或等于服务器的数据库中当前配置的应用版本号,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端对移动应用ReactNative模块的配置信息进行热更新。
综上所述,本发明实施例提供的一种基于ReactNative多模块下的热更新方法及***,客户端可针对不同ReactNative模块,利用本地的缓存文件或者内置文件进行热更新,即使网络等原因造成模块资源获取失败,也可以获取缓存中最近的资源文件进行界面数据渲染,服务器端可以根据客户端的请求,精准地为模块下发更新资源,能够更加快速的进行App的版本更新、及时解决线上问题,让用户不用重新下载新版本就能体验新版本App的功能。并且,模块的热更新规则由服务器维护,可根据需求,实时更改规则。还实现了可视化的上传界面,方便了资源上传的流程,便于管理者操作热更新文件。
本发明实施例还提供一种存储介质,本发明实施例还提供一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现本发明提供的基于ReactNative多模块下的热更新方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:Read-OnlyMemory,简称:ROM)或随机存储记忆体(英文:RandomAccessMemory,简称:RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于基于ReactNative多模块下的热更新***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本发明实施方式并不构成对本发明保护范围的限定。
Claims (3)
1.一种基于ReactNative的多模块移动应用的热更新方法,应用于客户端,其特征在于,所述方法包括如下步骤:
进入移动应用的ReactNative模块;
加载所述移动应用的jsbundle文件和资源文件;
根据所述jsbundle文件和资源文件,向服务器请求所述ReactNative模块的热更新配置信息,所述热更新配置信息包括以下参数:模块唯一标识、应用版本号、jsbundle版本号,以及jsbundle的Md5值;
接收服务器返回的热更新配置信息;
根据所述热更新配置信息进行热更新资源的下载;
解压所述热更新资源;
将解压后的所述热更新资源缓存到所述移动应用的沙盒路径中;
加载所述移动应用的jsbundle文件和资源文件包括:
检测所述移动应用的沙盒中是否缓存有所述ReactNative模块的jsbundle文件和资源文件;如果所述移动应用的沙盒中缓存有所述ReactNative模块的jsbundle文件和资源文件,加载缓存的jsbundle文件和资源文件;
如果所述移动应用的沙盒中没有缓存所述ReactNative模块的jsbundle文件和资源文件,加载所述移动应用中内置的jsbundle文件和资源文件;
加载缓存的jsbundle文件和资源文件包括:
将所述ReactNative模块的文件拷贝到currentReadedModule文件中;
返回拷贝后的文件路径;
读取所述拷贝后的文件路径中的jsbundle文件和资源文件包括进行界面渲染;
将解压后的所述热更新资源缓存到所述移动应用的沙盒路径中之后,所述方法还包括:识别所述ReactNative模块是否需要强制更新;
如果所述ReactNative模块需要强制更新,刷新所述ReactNative模块
刷新所述ReactNative模块包括:
向服务器上传刷新页面的请求,所述刷新页面的请求中携带有请求参数,以使得服务器根据所述请求参数查询出未刷新期间产生的数据和补传数据,判断所述未刷新期间产生的数据和补传数据的数据量是否超出预设的最大数据量,在所述未刷新期间产生的数据和补传数据的数据量超出预设的最大数据量时,向客户端返回数据并在返回的数据中携带还有更多数据的标识;
接收服务器返回的数据;
根据服务器返回的数据中的标识,判断是否有更多数据未传回;
如果有更多数据未传回,根据服务器返回的数据的最早产生时间,移除本地缓存中所有比所述最早产生时间早的数据;
将其余的数据缓存于本地数据库中;
刷新显示界面;
所述方法还包括:
向服务器上传加载更多数据的请求,所述加载更多数据的请求中携带有客户端当前界面显示数据中的最早发生时间,以使得服务器查找出比所述最早发生时间更早的数据,将比所述最早发生时间更早的数据返回至客户端;
接收服务器返回的比所述最早发生时间更早的数据;
将比所述最早发生时间更早的数据缓存本地数据库中;
刷新显示界面。
2.一种基于ReactNative的多模块移动应用的热更新方法,应用于服务器,其特征在于,所述方法包括如下步骤:
接收客户端上传的对移动应用ReactNative模块的配置信息进行热更新的请求,所述热更新的请求中携带以下参数:模块唯一标识、应用版本号、jsbundle版本号,以及jsbundle的Md5值;
根据所述模块唯一标识,查询服务器的数据库中启用的最新资源;
识别是否存在所述最新资源;
如果不存在所述最新资源,向客户端返回请求失败信息;
如果存在所述最新资源,判断所述请求中携带的应用版本号是否大于或等于服务器的数据库中当前配置的应用版本号;
如果所述请求中携带的应用版本号大于或等于服务器的数据库中当前配置的应用版本号,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端对移动应用ReactNative模块的配置信息进行热更新;
如果所述请求中携带的应用版本号不大于或等于服务器的数据库中当前配置的应用版本号,判断所述请求中携带的jsbundle版本号是否大于或等于服务器的数据库中当前配置的jsbundle版本号;
如果所述请求中携带的jsbundle版本号大于或等于服务器的数据库中当前配置的jsbundle版本号,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端对移动应用ReactNative模块的配置信息进行热更新;
如果所述请求中携带的jsbundle版本号不大于或等于服务器的数据库中当前配置的jsbundle版本号,判断所述请求中携带的jsbundle的Md5值是否大于或等于服务器的数据库中当前配置的jsbundle的Md5值;
如果所述请求中携带的jsbundle的Md5值大于或等于数据库中当前配置的jsbundle的Md5值,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端对移动应用ReactNative模块的配置信息进行热更新;
如果所述请求中携带的jsbundle的Md5值不大于或等于服务器的数据库中当前配置的jsbundle的Md5值,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端不对移动应用ReactNative模块的配置信息进行热更新。
3.一种基于ReactNative的多模块移动应用的热更新***,其特征在于,所述***包括客户端和服务器;
所述客户端,用于进入移动应用的ReactNative模块,加载所述移动应用的jsbundle文件和资源文件,根据所述jsbundle文件和资源文件,向服务器请求所述ReactNative模块的热更新配置信息,所述热更新配置信息包括以下参数:模块唯一标识、应用版本号、jsbundle版本号,以及jsbundle的Md5值,接收服务器返回的热更新配置信息,根据所述热更新配置信息进行热更新资源的下载,解压所述热更新资源,将解压后的所述热更新资源缓存到所述移动应用的沙盒路径中;
所述服务器,用于接收客户端上传的对移动应用ReactNative模块的配置信息进行热更新的请求,所述热更新的请求中携带以下参数:模块唯一标识、应用版本号、jsbundle版本号,以及jsbundle的Md5值,根据所述模块唯一标识,查询服务器的数据库中启用的最新资源,识别是否存在所述最新资源,如果不存在所述最新资源,向客户端返回请求失败信息,如果存在所述最新资源,判断所述请求中携带的应用版本号是否大于或等于服务器的数据库中当前配置的应用版本号,如果所述请求中携带的应用版本号大于或等于服务器的数据库中当前配置的应用版本号,向客户端返回服务器的数据库中当前配置的移动应用ReactNative模块的配置信息,以使客户端对移动应用ReactNative模块的配置信息进行热更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910379464.0A CN110096295B (zh) | 2019-05-08 | 2019-05-08 | 基于ReactNative的多模块移动应用的热更新方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910379464.0A CN110096295B (zh) | 2019-05-08 | 2019-05-08 | 基于ReactNative的多模块移动应用的热更新方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110096295A CN110096295A (zh) | 2019-08-06 |
CN110096295B true CN110096295B (zh) | 2023-08-08 |
Family
ID=67447284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910379464.0A Active CN110096295B (zh) | 2019-05-08 | 2019-05-08 | 基于ReactNative的多模块移动应用的热更新方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110096295B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111562924B (zh) * | 2019-12-04 | 2022-07-08 | 江苏艾佳家居用品有限公司 | 一种基于ReactNative的分布式移动应用运行***及应用方法 |
CN111355629B (zh) * | 2020-02-17 | 2021-01-15 | 苏州亿歌网络科技有限公司 | 一种客户端的测试方法、装置、计算机设备及存储介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681825A (zh) * | 2011-03-09 | 2012-09-19 | 北京航空航天大学 | 服务运行容器管理***和方法 |
CN102946442A (zh) * | 2012-12-06 | 2013-02-27 | 网宿科技股份有限公司 | 基于智能刷新的文件更新发布的方法和*** |
CN103944958A (zh) * | 2014-03-14 | 2014-07-23 | 中国科学院计算技术研究所 | 一种广域文件***及实现方法 |
CN104133695A (zh) * | 2014-07-15 | 2014-11-05 | 珠海金山网络游戏科技有限公司 | 一种软件客户端的制作及应用方法 |
CN104735152A (zh) * | 2015-03-30 | 2015-06-24 | 四川神琥科技有限公司 | 一种基于网络的邮件读取方法 |
CN106209926A (zh) * | 2015-04-30 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 一种数据更新方法和设备 |
CN106657367A (zh) * | 2016-12-30 | 2017-05-10 | 北京三快在线科技有限公司 | 一种业务数据获取方法、装置及*** |
CN107509086A (zh) * | 2017-09-06 | 2017-12-22 | 成都虫洞奇迹科技有限公司 | 一种云桌面下的视频重定向方法及装置 |
CN107729041A (zh) * | 2017-07-26 | 2018-02-23 | 上海壹账通金融科技有限公司 | 应用程序热更新方法、装置、终端和存储介质 |
CN107861739A (zh) * | 2017-11-06 | 2018-03-30 | 山东浪潮通软信息科技有限公司 | ReactNative应用调整方法、客户端及*** |
CN108304207A (zh) * | 2018-03-01 | 2018-07-20 | 上海找钢网信息科技股份有限公司 | 混合app应用程序的资源更新方法及*** |
CN108733400A (zh) * | 2018-04-27 | 2018-11-02 | 新光互联投资管理有限公司 | 一种App增量热更新方法及服务*** |
CN109032638A (zh) * | 2018-07-18 | 2018-12-18 | 广州宸瑞软件科技有限公司 | 移动应用软件的热更新方法、服务器和移动终端 |
CN109445833A (zh) * | 2018-11-09 | 2019-03-08 | 苏宁消费金融有限公司 | 一种React-native热更新的方法 |
CN109656611A (zh) * | 2018-12-24 | 2019-04-19 | 成都四方伟业软件股份有限公司 | 三维可视化应用热更新方法、装置和终端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7640332B2 (en) * | 2006-12-27 | 2009-12-29 | Hewlett-Packard Development Company, L.P. | System and method for hot deployment/redeployment in grid computing environment |
-
2019
- 2019-05-08 CN CN201910379464.0A patent/CN110096295B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681825A (zh) * | 2011-03-09 | 2012-09-19 | 北京航空航天大学 | 服务运行容器管理***和方法 |
CN102946442A (zh) * | 2012-12-06 | 2013-02-27 | 网宿科技股份有限公司 | 基于智能刷新的文件更新发布的方法和*** |
CN103944958A (zh) * | 2014-03-14 | 2014-07-23 | 中国科学院计算技术研究所 | 一种广域文件***及实现方法 |
CN104133695A (zh) * | 2014-07-15 | 2014-11-05 | 珠海金山网络游戏科技有限公司 | 一种软件客户端的制作及应用方法 |
CN104735152A (zh) * | 2015-03-30 | 2015-06-24 | 四川神琥科技有限公司 | 一种基于网络的邮件读取方法 |
CN106209926A (zh) * | 2015-04-30 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 一种数据更新方法和设备 |
CN106657367A (zh) * | 2016-12-30 | 2017-05-10 | 北京三快在线科技有限公司 | 一种业务数据获取方法、装置及*** |
CN107729041A (zh) * | 2017-07-26 | 2018-02-23 | 上海壹账通金融科技有限公司 | 应用程序热更新方法、装置、终端和存储介质 |
CN107509086A (zh) * | 2017-09-06 | 2017-12-22 | 成都虫洞奇迹科技有限公司 | 一种云桌面下的视频重定向方法及装置 |
CN107861739A (zh) * | 2017-11-06 | 2018-03-30 | 山东浪潮通软信息科技有限公司 | ReactNative应用调整方法、客户端及*** |
CN108304207A (zh) * | 2018-03-01 | 2018-07-20 | 上海找钢网信息科技股份有限公司 | 混合app应用程序的资源更新方法及*** |
CN108733400A (zh) * | 2018-04-27 | 2018-11-02 | 新光互联投资管理有限公司 | 一种App增量热更新方法及服务*** |
CN109032638A (zh) * | 2018-07-18 | 2018-12-18 | 广州宸瑞软件科技有限公司 | 移动应用软件的热更新方法、服务器和移动终端 |
CN109445833A (zh) * | 2018-11-09 | 2019-03-08 | 苏宁消费金融有限公司 | 一种React-native热更新的方法 |
CN109656611A (zh) * | 2018-12-24 | 2019-04-19 | 成都四方伟业软件股份有限公司 | 三维可视化应用热更新方法、装置和终端 |
Non-Patent Citations (1)
Title |
---|
Android热更新管理***的研究与设计;张鑫;《中国优秀硕士学位论文全文数据库信息科技辑》(第2期);第I138-671页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110096295A (zh) | 2019-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6463393B2 (ja) | テナント移行にわたるテナント・データのリカバリ | |
JP2019517042A (ja) | オフラインでのハイブリッドアプリケーションへのアクセスの提供 | |
CN103645910A (zh) | 用于更新应用程序的方法 | |
US8495166B2 (en) | Optimized caching for large data requests | |
KR20170049376A (ko) | 가상 머신의 미러 이미지 파일을 인출하는 방법 및 장치 | |
CN105335253A (zh) | 创建虚拟机***盘快照的方法和装置 | |
US8494888B2 (en) | Offline modification of business data | |
US20190155798A1 (en) | Cache management | |
CN104113576A (zh) | 一种客户端的更新方法及装置 | |
US20120224482A1 (en) | Credit feedback system for parallel data flow control | |
CN110096295B (zh) | 基于ReactNative的多模块移动应用的热更新方法及*** | |
CN113094076A (zh) | 基于版本控制的版本迭代方法、装置、设备及介质 | |
US20160182673A1 (en) | Dynamic cache injector | |
US11099837B2 (en) | Providing build avoidance without requiring local source code | |
CN110825425A (zh) | 配置数据管理方法及装置、电子设备、存储介质 | |
CN113297267A (zh) | 数据缓存和任务处理方法、装置、设备以及存储介质 | |
CN114584576B (zh) | 数据存储方法、装置、设备、存储介质及计算机程序产品 | |
CN107103001B (zh) | 基于浏览器获取目标前端资源文件的方法、装置和*** | |
US10705815B2 (en) | Split installation of a software product | |
CN112688980B (zh) | 资源分发方法、装置、计算机设备 | |
CN104346101A (zh) | 存储空间动态分配***及方法 | |
CN114385570A (zh) | 数据同步的方法、装置、电子设备和可读介质 | |
CN108376104B (zh) | 节点调度方法及装置、计算机可读存储介质 | |
CN112559568A (zh) | 一种虚拟物品确定方法、装置及计算机可读存储介质 | |
CN114189512B (zh) | 基线代码的下载方法、装置、终端设备和存储介质 |
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 |