CN116820613A - 安卓移动端动态更新h5模块、交互方法、设备及存储介质 - Google Patents

安卓移动端动态更新h5模块、交互方法、设备及存储介质 Download PDF

Info

Publication number
CN116820613A
CN116820613A CN202310793042.4A CN202310793042A CN116820613A CN 116820613 A CN116820613 A CN 116820613A CN 202310793042 A CN202310793042 A CN 202310793042A CN 116820613 A CN116820613 A CN 116820613A
Authority
CN
China
Prior art keywords
module
app
layer
mobile terminal
business
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
CN202310793042.4A
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.)
Wuhan Zhongbang Bank Co Ltd
Original Assignee
Wuhan Zhongbang Bank 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 Wuhan Zhongbang Bank Co Ltd filed Critical Wuhan Zhongbang Bank Co Ltd
Priority to CN202310793042.4A priority Critical patent/CN116820613A/zh
Publication of CN116820613A publication Critical patent/CN116820613A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种安卓移动端动态更新h5模块、交互方法、设备及存储介质,包括:基础层,用于承载上层的数据通信和页面跳转,提供配置管理服务,和提供统一的基础设施能力和管理能力;组件层,用于封装一些通用的UI控件,提供App的基础能力和原生插件能力;业务层,用于将直销银行app业务代码拆分为不同的模块;宿主层,包括负责Application初始化、负责各种必要组件或基础库的初始化、负责通用配置信息的初始化、负责各模块的加载、主界面的组装。本发明通过将直销银行app的客户端代码进行重构,基础能力以及功能组件抽离作为底层服务,当做通用基础工具库,提供给上层业务层使用。解决代码冗余和客户端原生开发周期慢以及h5开发部分用户体验不好的技术问题。

Description

安卓移动端动态更新h5模块、交互方法、设备及存储介质
技术领域
本发明涉及移动端开发领域,更具体地,涉及一种安卓移动端动态更新h5模块、交互方法、设备及存储介质。
背景技术
移动端所有业务代码,框架代码,工具类几乎全部都放在app主module。框架太臃肿,做的事太多了,无法始终保持通用性。冗余代码堆积,扩展性极差,各种工具代码,Ui基础库代码,不方便单独管理。框架层内部耦合严重,没有层次感,迁一发而动全身。团队协作时,所有业务代码都在app module,容易冲突,也无法运行调试单独的模块。框架层无法移植:后期想开发其他独立app,想使用现有的直销框架代码,抽离代码很困难,例如独立开户app或者公司雇员app(后期的考虑)。生产环境,测试环境相关配置管理没有使用动态化配置,打包还需要人为修改变量打包,极不安全。
同时客户端开发分为纯原生开发、混合开发、纯h5开发三种,原生开发优点用户体验好,安全性高,缺点是开发周期比较长,发布需要上架应用市场。纯h5开发优点是开发周期短,无需上架,缺点是用户体验比较差,加载页面需要时间。混合开发可以结合2种优点,将改动频繁的页面按模块区分都改造为h5模块,h5模块分包打包存放app本地,客户端加载本地h5速度快体验好,同时后续新增的h5模块采用热更的方式下载到app本地,解决了需要发布市场的问题,开发周期比较快。客户端原生与h5的交互方式插件号的方式完成交互。
发明内容
本发明针对现有技术中存在的技术问题,提供一种安卓移动端动态更新h5模块、交互方法、设备及存储介质,目的在于解决了客户端原生开发周期慢和h5开发部分用户体验不好的技术问题。
根据本发明的第一方面,提供了一种安卓移动端动态更新h5模块,包括:
基础层,用于承载上层的数据通信和页面跳转、提供配置管理服务、和提供统一的基础设施能力和管理能力;
组件层,用于封装一些通用的UI控件,提供App的基础能力和原生插件能力;
业务层,用于将直销银行app业务代码拆分为不同的模块;
宿主层,包括负责App初始化、负责各种必要组件或基础库的初始化、负责通用配置信息的初始化、负责各模块的加载、主界面的组装。
在上述技术方案的基础上,本发明还可以作出如下改进。
可选的,所述基础层提供统一的基础设施能力和管理能力,所述基础设施能力为网络、图片、缓存、定位、分享、埋点、Crash上报的任一种;所述管理能力包括生命周期管理、组件化的运行管理。
可选的,所述组件层提供App的基础的能力包括消息推送、统一账户、h5升级及原生更新,原生插件能力为提供给h5模块调用。
可选的,所述将直销银行app业务代码拆分为不同的模块包括:商城模块、卡券中心、消息中心模块、存款模块、会员积分模块,个人中心模块、业务办理模块、开户模块和贷款中心模块。
可选的,在所述业务层中,前端开发采用vue框架将业务模块从原生改为h5模块,抽离通用代码打出通用压缩包,各个业务模块分包开发,获得多个h5压缩包,压缩包放进app工程的assets目录,按规范存放。
可选的,在所述业务层中,客户端启动时候对app本地的所有h5模块压缩包进行解密解压,同时做md5完整性校验,确认安全后,将所有app业务模块代码解压放在app本地目录,一个业务包放一个目录,目录名称为业务模块名称,当所有压缩包存放完毕,发通知事件告知首页已完成初始化h5代码,同时针对每个业务模块新增一个版本号,客户端存储每个业务模块的版本号,再将每个业务模块压缩包上传一份到自研的后台管理服务器上。
可选的,所述宿主层负责Application初始化、负责各种必要组件或基础库的初始化、负责通用配置信息的初始化、负责各模块的加载、主界面的组装包括:
初始化组件以及模块完成后,客户端首页采用后端配置化方式展示个性化内容,app后管配置app首页的展示内容以及跳转路径,路径对应着app的业务模块的h5 index路径,app的webview容器访问相关业务模块时,首先检查app本地是否有该业务模块的压缩包代码,如果有代码,会比对客户端本地模块的版本号与后台管理上存放的模块版本号进行比对,如不一致,会提示更新下载最新的到本地,更新完毕后重新访问该业务模块首页;如果发现app本地并无此模块代码,也会提示先更新到本地,下载完成并压缩到本地之后,继续访问新模块的首页。
根据本发明的第二方面,提供了一种原生与h5的交互方法,用于上述所述安卓移动端动态更新h5模块,所述交互方法包括以下步骤:
步骤一:编写h5需要使用到原生能力的多个插件;
步骤二:编写插件管理器进行消息管理,采用Web交互方法将规范好的Web交互添加到webview容器,通过插件管理器获取到h5传递给原生的json消息体,通过插件号找到对应数字的插件,在执行完毕后将插件执行的结果回调给h5;
步骤三:h5模块json代码通过插件对应的消息号,获取相应的插件调用结果,并通过调用结果来执行相应的操作或者绘制当前的页面元素。
根据本发明的第三方面,提供了一种电子设备,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机程序时实现上述所述的一种安卓移动端动态更新h5模块和/或所述的原生与h5的交互方法的步骤。
根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机管理类程序被处理器执行时实现上述所述的一种安卓移动端动态更新h5模块和/或所述的原生与h5的交互方法的步骤。
本发明的技术效果和优点:
本发明提供了一种安卓移动端动态更新h5模块、交互方法、设备及存储介质,通过微服务思路将直销银行app的客户端代码进行重构,基础能力以及功能组件抽离作为底层服务,当做通用基础工具库使用,提供给上层业务层使用,或者给行里其他app使用,解决代码冗余,易于管理。同时将业务模块抽离,分为多个业务模块,h5开发多个业务模块,解决了纯原生开发周期长,发布市场审核慢的问题,也提高了多名前端开发人员协同开发的效率,减少代码冲突,各自开发各自的业务模块,互不干扰。h5模块完成分包,可以实时热更对应的h5模块,解决了部分h5体验差的问题。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
附图说明
图1为本发明实施例提供的一种安卓移动端动态更新h5模块示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
可以理解的是,基于背景技术中的缺陷,本发明实施例提出了一种安卓移动端动态更新h5模块,具体如图1所示,所述h5模块包括:基础层、组件层、业务层和宿主层;其中,
基础层包括:
承载上层的数据通信和页面跳转;
提供配置管理服务;
提供统一的基础设施能力,例如网络、图片、缓存、定位、分享、埋点、Crash上报。
提供其他管理能力,例如生命周期管理、组件化。
需要进行说明的是,基础层应尽可能的精简小巧,尽可能的减少依赖,以达到灵活通用的目的。
组件层包括:封装一些通用的UI控件;
提供App一些基础的能力,例如:消息推送、统一账户、h5升级及原生更新。
和原生插件能力,例如Plugin10000...,提供给h5模块调用。
业务层,用于将直销银行app业务代码拆分为不同的模块;不同的模块包括:商城模块、卡券中心、消息中心模块、存款模块、会员积分模块、个人中心模块、业务办理模块、开户模块、贷款中心模块等等。前端开发采用vue框架将以上业务模块从原生改为h5模块,抽离通用代码打出通用压缩包,各个业务模块分包开发,获得多个h5压缩包,压缩包放进app工程的assets目录,按规范存放。
进一步地,客户端(android)新增WebViewManager工具类,app启动时候通过工具类对app本地的所有h5模块压缩包进行解密解压,同时做md5完整性校验,确认安全后,将所有app业务模块代码解压放在app本地目录,一个业务包放一个目录,目录名称为业务模块名称,当所有压缩包存放完毕,发通知事件告知首页已完成初始化h5代码,同时针对每个业务模块新增一个版本号,客户端存储每个业务模块的版本号,再将每个业务模块压缩包上传一份到自研的后台管理服务器上。
宿主层,包括负责Application初始化、负责各种必要组件或基础库的初始化、负责通用配置信息的初始化、负责各模块的加载、负责主界面的组装。具体包括:初始化组件以及模块完成后,客户端首页采用后端配置化方式展示个性化内容,app后管可配置app首页的展示内容以及跳转路径,路径对应着app的业务模块的h5 index路径,类似产品模块路径index/product,交易模块路径index/trade#等等,app的webview容器访问相关业务模块时,首先检查app本地是否有该业务模块的压缩包代码,如果有代码,会比对客户端本地模块的版本号与后台管理上存放的模块版本号进行比对,如不一致会提示更新下载最新的到本地,更新完毕后重新访问该业务模块首页。如果发现app本地并无此模块代码,也会提示先更新到本地,下载完成并压缩到本地之后,继续访问新模块的首页。
需要进行说明的是,本实施例梳理app整体架构,逐步抽离出app基础库,组件库。将原本庞杂的框架层进行抽离形成独立的基础库,例如:网络库、缓存库、路由库等。最终将框架抽成空壳,剩下与框架无关的只与项目相关的配置组装代码。
根据本发明的第二方面,提供了一种原生与h5交互的方法,所述方法用于上述所述的一种安卓移动端动态更新h5模块,所述方法包括以下步骤:
步骤一,客户端编写h5需要使用到原生能力的多个插件,例如Plugin10000:网络请求插件,Plugin10001:获取缓存插件,Plugin10002:调起原生相机插件,Plugin10003:调起人脸插件,Plugin10004:打开本地相册插件,Plugin:ocr插件,Plugin10005:存储相应缓存到app本地,Plugin10006:退出相应容器得插件;
步骤二,客户端编写PluginManager管理类,用来做消息管理,原生h5直接交互采用JavascriptInterface,PluginManager管理类将规范好的JavascriptInterface添加到webview容器。原生通过PluginManager获取到h5传递给原生的json消息体,格式为{“pluginNo”:10000,”message”:””},原生通过插件号找到对应数字的插件,调用插件的原生方法,执行完毕后通过webview容器的evaluateJavascript方法,将插件执行的结果回调给h5;
步骤三,h5模块js代码通过插件对应的消息号,获取相应的插件调用结果,通过结果来执行相应的操作或者绘制当前的页面元素。
需要进行说明的是,h5各个模块有版本号,后台管理平台提供入口管理app各个h5模块的版本号,新版本是否强制更新选项,app新增业务模块时,可以通后管上传新模块h5的zip包,当app访问新模块时,检查本地无新模块代码或需要更新时候,通过后端接口获取最新模块的代码下载到本地路径,完成热更。
进一步地,直销银行app客户端设置模块,新增一个模块管理页面,页面通过后端接口来获取当前后管配置的所有业务模块的名称以及当前的版本号,客户可以自行检查当前app的所有模块的版本情况,可以手动更新。
综上所述,本发明实施例提供的安卓移动端动态更新h5模块、交互方法,通过微服务思路将直销银行app的客户端代码进行重构,基础能力以及功能组件抽离作为底层服务,当做通用基础工具库使用,提供给上层业务层使用,或者给行里其他app使用,解决代码冗余,易于管理。同时将业务模块抽离,分为多个业务模块,h5开发多个业务模块,解决了纯原生开发周期长,发布市场审核慢的问题,也提高了多名前端开发人员协同开发的效率,减少代码冲突,各自开发各自的业务模块,互不干扰。h5模块完成分包,可以实时热更对应的h5模块,解决了部分h5体验差的问题。
根据本发明的第三方面,提供了一种电子设备,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机程序时实现上述所述的一种安卓移动端动态更新h5模块的程序和/或所述的原生与h5的交互方法的步骤。
根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机管理类程序被处理器执行时实现上述所述的一种安卓移动端动态更新h5模块的程序和/或所述的原生与h5的交互方法的步骤。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种安卓移动端动态更新h5模块,其特征在于,包括:
基础层,用于承载上层的数据通信和页面跳转、提供配置管理服务、和提供统一的基础设施能力和管理能力;
组件层,用于封装一些通用的UI控件,提供App的基础能力和原生插件能力;
业务层,用于将直销银行app业务代码拆分为不同的模块;
宿主层,用于负责App初始化、负责各种必要组件或基础库的初始化、负责通用配置信息的初始化、负责各模块的加载、主界面的组装。
2.根据权利要求1所述的一种安卓移动端动态更新h5模块,其特征在于,所述基础层提供统一的基础设施能力和管理能力,所述管理能力包括生命周期管理、组件化的运行管理;所述基础设施能力为网络、图片、缓存、定位、分享、埋点、Crash上报的任一种。
3.根据权利要求1所述的一种安卓移动端动态更新h5模块,其特征在于,所述组件层提供App的基础的能力包括消息推送、统一账户、h5升级及原生更新,原生插件能力为提供给h5模块调用。
4.根据权利要求1所述的一种安卓移动端动态更新h5模块,其特征在于,所述业务层用于将直销银行app业务代码拆分为不同的模块包括:商城模块、卡券中心、消息中心模块、存款模块、会员积分模块、个人中心模块、业务办理模块、开户模块和贷款中心模块。
5.根据权利要求4所述的一种安卓移动端动态更新h5模块,其特征在于,在所述业务层中,前端开发采用vue框架将业务模块从原生改为h5模块,抽离通用代码打出通用压缩包,各个业务模块分包开发,获得多个h5压缩包,压缩包放进app工程的assets目录,按规范存放。
6.根据权利要求5所述的一种安卓移动端动态更新h5模块,其特征在于,在所述业务层中,在客户端启动时,对app本地的所有h5模块压缩包进行解密解压,同时做md5完整性校验,确认安全后,将所有app业务模块代码解压放在app本地目录,一个业务包放一个目录,目录名称为业务模块名称,当所有压缩包存放完毕,发通知事件告知首页已完成初始化h5代码,同时针对每个业务模块新增一个版本号,客户端存储每个业务模块的版本号,再将每个业务模块压缩包上传一份到自研的后台管理服务器上。
7.根据权利要求1所述的一种安卓移动端动态更新h5模块,其特征在于,所述宿主层用于负责App初始化、负责各种必要组件或基础库的初始化、负责通用配置信息的初始化、负责各模块的加载、负责主界面的组装包括:
在初始化组件以及模块完成后,客户端首页采用后端配置化方式展示个性化内容,app后管配置app首页的展示内容以及跳转路径,路径对应着app的业务模块的h5 index路径,app的webview容器访问相关业务模块时,首先检查app本地是否有该业务模块的压缩包代码,如果有代码,会比对客户端本地模块的版本号与后台管理上存放的模块版本号进行比对,如不一致,会提示更新下载最新的到本地,更新完毕后重新访问该业务模块首页;如果发现app本地并无此模块代码,也会提示先更新到本地,下载完成并压缩到本地之后,继续访问新模块的首页。
8.一种原生与h5的交互方法,其特征在于,用于权利要求1-6任一所述的安卓移动端动态更新h5模块,所述交互方法包括以下步骤:
步骤一:编写h5需要使用到原生能力的多个插件;
步骤二:编写插件管理器进行消息管理,采用Web交互方法将规范好的Web交互添加到webview容器,通过插件管理器获取到h5传递给原生的json消息体,通过插件号找到对应数字的插件,在执行完毕后将插件执行的结果回调给h5;
步骤三:h5模块json代码通过插件对应的消息号,获取相应的插件调用结果,并通过调用结果来执行相应的操作或者绘制当前的页面元素。
9.一种电子设备,其特征在于,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-7任一项所述的一种安卓移动端动态更新h5模块和/或权利要求8所述的原生与h5的交互方法的步骤。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机管理类程序,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的一种安卓移动端动态更新h5模块和/或权利要求8所述的原生与h5的交互方法的步骤。
CN202310793042.4A 2023-06-29 2023-06-29 安卓移动端动态更新h5模块、交互方法、设备及存储介质 Pending CN116820613A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310793042.4A CN116820613A (zh) 2023-06-29 2023-06-29 安卓移动端动态更新h5模块、交互方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310793042.4A CN116820613A (zh) 2023-06-29 2023-06-29 安卓移动端动态更新h5模块、交互方法、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116820613A true CN116820613A (zh) 2023-09-29

Family

ID=88142657

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310793042.4A Pending CN116820613A (zh) 2023-06-29 2023-06-29 安卓移动端动态更新h5模块、交互方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116820613A (zh)

Similar Documents

Publication Publication Date Title
US9477727B2 (en) Abstracting data for use by a mobile device having occasional connectivity
US7805735B2 (en) System and method of representing data entities of standard device applications as built-in components
JP5235837B2 (ja) 移動通信端末機用コンテンツ提供方法
CN101802808B (zh) 从脚本和其他编程环境访问设备主存的服务
US20080147671A1 (en) System for Running Web Applications Offline and Providing Access to Native Services
CN112052013B (zh) 软件包的生成方法及装置、存储介质、电子装置
US20110010613A1 (en) System and method for building mixed mode execution environment for component applications
US20090240935A1 (en) Computing environment configuration
CN111459539B (zh) 基于镜像分层的持续集成流水线运行方法及装置
CN106843978B (zh) 一种sdk接入方法及系统
CN111897623B (zh) 一种集群管理方法、装置、设备及存储介质
CN105474206A (zh) 支持按需数据传输的虚拟同步
CN109669692B (zh) 源码共享方法、服务器、计算机可读存储介质及系统
CN114077423A (zh) 基于移动跨平台的机场app开发容器架构
US9128886B2 (en) Computer implemented method, computer system, electronic interface, mobile computing device and computer readable medium
CN111367685B (zh) 接口调用的方法及装置、计算机设备、存储介质
CN115934093A (zh) 小程序跨端应用方法、相关装置及计算机存储介质
CN109857374B (zh) 移动应用的开发方法及装置
US20240069932A1 (en) Content Display Method and Terminal Device
CN112181366A (zh) 基于跨平台交互的移动应用开发框架
CN113535254A (zh) 一种微服务的处理方法、部署方法和相关装置
CN116820613A (zh) 安卓移动端动态更新h5模块、交互方法、设备及存储介质
CN117827221A (zh) 部署程序代码的方法、装置、设备和存储介质
CN114860202A (zh) 项目运行方法、装置、服务器及存储介质
CN114489674A (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