CN108845810B - 一种应用动态更新的方法、装置、电子设备及存储介质 - Google Patents

一种应用动态更新的方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN108845810B
CN108845810B CN201810503866.2A CN201810503866A CN108845810B CN 108845810 B CN108845810 B CN 108845810B CN 201810503866 A CN201810503866 A CN 201810503866A CN 108845810 B CN108845810 B CN 108845810B
Authority
CN
China
Prior art keywords
script language
execution protocol
logic data
protocol
language component
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
Application number
CN201810503866.2A
Other languages
English (en)
Other versions
CN108845810A (zh
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.)
Beijing 58 Information Technology Co Ltd
Original Assignee
Beijing 58 Information Technology 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 Beijing 58 Information Technology Co Ltd filed Critical Beijing 58 Information Technology Co Ltd
Priority to CN201810503866.2A priority Critical patent/CN108845810B/zh
Publication of CN108845810A publication Critical patent/CN108845810A/zh
Application granted granted Critical
Publication of CN108845810B publication Critical patent/CN108845810B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version 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)

Abstract

本发明公开了一种应用动态更新的方法、装置、电子设备及存储介质,其中,方法包括:获取来自服务端的更新资源,更新资源包括:布局数据及通过第一脚本语言编写的业务逻辑数据;将业务逻辑数据转换成执行协议,并将执行协议传送至第二脚本语言组件;通过第二脚本语言组件对执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,以进行相应的更新操作;本发明的方方法、装置、电子设备及存储介质,通过服务端下发更新资源至应用程序,然后基于更新资源中的业务逻辑数据生成执行协议。在得到该执行协议后,该第二脚本语言组件依据该解析之后的执行协议反射调用与该业务逻辑数据对应的功能模块,以进行相应的更新操作。

Description

一种应用动态更新的方法、装置、电子设备及存储介质
技术领域
本发明涉及移动应用开发领域,尤其涉及一种应用动态更新的方法、装置、电子设备及存储介质。
背景技术
随着互联网技术和智能终端技术的发展,各种应用已经普及到大众生活的方方面面,例如,观影、购物、支付、社交、提供各种资讯等等。目前这些智能终端的应用常采用本地应用(NativeApp)实现,本地应用是通过使用原生操作***提供的API(ApplicationProgramming Interface,应用程序编程接口)编程实现,可以保证应用的高性能和良好的交互体验。
然而,现有的本地应用中页面的交互行为(如交互跳转)在智能终端固化,如果想改变应用的交互行为,必须依赖运营商对不同平台(安卓***或ios***等)下的发版的修改,智能终端再重新安装该应用。而该应用在安装之前却需要长时间的审核周期以及新版本覆盖周期,而这就会造成时间成本过高。
发明内容
本发明的主要目的在于提出一种应用动态更新的方法、装置、电子设备及存储介质,其克服了现有技术中因只能通过重新发版才能完成终端应用的更新以及由此导致的时间成本较高的问题。
根据本发明的第一个方面,提供了一种应用动态更新的方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的业务逻辑数据;将所述业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,所述第二脚本语言组件注册于原生***;通过所述第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,以进行相应的更新操作。
可选的,在所述将业务逻辑数据转换成执行协议之前,所述方法还包括:在启动以通用页面为原型的新页面前,通过界面解析器将所述布局文件进行解析,得到解析结果;依据所述解析结果生成供所述第二脚本语言组件加载和操作的第一目标视图,所述第一目标视图用于供所述功能模块进行相应的更新操作以生成新页面。
可选的,在所述将业务逻辑数据转换成执行协议之前,所述方法还包括:在启动以通用页面为原型的新页面前,基于原生组件,通过组件配置模块生成供所述第二脚本语言组件加载和操作的第二目标视图,所述第二目标视图用于供所述功能模块进行相应的更新操作以生成新页面。
可选的,所述业务逻辑数据包括:扩展逻辑数据;所述将业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,包括:将所述扩展逻辑数据转换成扩展执行协议,并将所述扩展执行协议传送至第二脚本语言组件;所述通过第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,包括:通过所述第二脚本语言组件对所述扩展执行协议进行解析,并依据解析后的扩展执行协议反射调用扩展模块,以支持对复杂的业务操作进行封装。
可选的,所述业务逻辑数据包括:类型转换逻辑数据;所述将业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,包括:将所述类型转换逻辑数据转换成类型转换执行协议,并将所述类型转换执行协议传送至第二脚本语言组件;所述通过第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,包括:通过所述第二脚本语言组件对所述类型转换执行协议进行解析,并依据解析后的类型转换执行协议反射调用类型转换模块,以支持对基本类型信息以外的数据类型信息进行自定义,完成对所述基本类型信息的反射调用。
可选的,所述业务逻辑数据包括:崩溃收集逻辑数据;所述将业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,包括:将所述崩溃收集逻辑数据转换成崩溃收集执行协议,并将所述崩溃收集执行协议传送至第二脚本语言组件;所述通过第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,包括:通过所述第二脚本语言组件对所述崩溃收集执行协议进行解析,并依据解析后的崩溃收集执行协议反射调用崩溃异常收集模块,以供所述第二脚本语言组件收集第一脚本语言组件的异常堆栈信息。
可选的,所述业务逻辑数据包括:日志打印逻辑数据;所述将业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,包括:将所述日志打印逻辑数据转换成日志打印执行协议,并将所述日志打印执行协议传送至第二脚本语言组件;所述通过第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,包括:通过所述第二脚本语言组件对所述日志打印执行协议进行解析,并依据解析后的日志打印执行协议反射调用日志打印模块,以给所述第一脚本语言模块提供在原生***打印日志的逻辑数据信息。
可选的,所述业务逻辑数据包括:初始化逻辑数据;所述将业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,包括:将所述初始化逻辑数据转换成初始化执行协议,并将所述初始化执行协议传送至第二脚本语言组件;所述通过第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,包括:通过所述第二脚本语言组件对所述初始化执行协议进行解析,并依据解析后的初始化执行协议反射调用信息初始化模块,以给原生***提供对第一脚本语言***进行初始化全局信息的数据模块,其中,所述第一脚本语言组件注册于所述第一脚本语言***。
根据本发明的第二个方面,提供了一种应用动态更新的装置,包含于基于混合开发模式所开发的应用程序,所述装置包括:获取模块,用于获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的业务逻辑数据;转换模块,用于将所述业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,所述第二脚本语言组件注册于原生***;解析模块,用于通过所述第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,以进行相应的更新操作。
可选的,所述装置还包括:第一解析模块,用于在所述将业务逻辑数据转换成执行协议之前,而且,在启动以通用页面为原型的新页面前,通过界面解析器将所述布局文件进行解析,得到解析结果;第一生成模块,用于依据所述解析结果生成供所述第二脚本语言组件加载和操作的第一目标视图,所述第一目标视图用于供所述功能模块进行相应的更新操作以生成新页面。
可选的,所述装置还包括:第二生成模块,用于在所述将业务逻辑数据转换成执行协议之前,而且,在启动以通用页面为原型的新页面前,基于原生组件,通过组件配置模块生成供所述第二脚本语言组件加载和操作的第二目标视图,所述第二目标视图用于供所述功能模块进行相应的更新操作以生成新页面。
可选的,所述业务逻辑数据包括:扩展逻辑数据;所述转换模块具体用于:将所述扩展逻辑数据转换成扩展执行协议,并将所述扩展执行协议传送至第二脚本语言组件;所述解析模块具体用于:通过所述第二脚本语言组件对所述扩展执行协议进行解析,并依据解析后的扩展执行协议反射调用扩展模块,以支持对复杂的业务操作进行封装。
可选的,所述业务逻辑数据包括:类型转换逻辑数据;所述转换模块具体用于:将所述类型转换逻辑数据转换成类型转换执行协议,并将所述类型转换执行协议传送至第二脚本语言组件;所述解析模块具体用于:通过所述第二脚本语言组件对所述类型转换执行协议进行解析,并依据解析后的类型转换执行协议反射调用类型转换模块,以支持对基本类型信息以外的数据类型信息进行自定义,完成对所述基本类型信息的反射调用。
可选的,所述业务逻辑数据包括:崩溃收集逻辑数据;所述转换模块具体用于:将所述崩溃收集逻辑数据转换成崩溃收集执行协议,并将所述崩溃收集执行协议传送至第二脚本语言组件;所述解析模块具体用于:通过所述第二脚本语言组件对所述崩溃收集执行协议进行解析,并依据解析后的崩溃收集执行协议反射调用崩溃异常收集模块,以供所述第二脚本语言组件收集第一脚本语言组件的异常堆栈信息。
可选的,所述业务逻辑数据包括:日志打印逻辑数据;所述转换模块具体用于:将所述日志打印逻辑数据转换成日志打印执行协议,并将所述日志打印执行协议传送至第二脚本语言组件;所述解析模块具体用于:通过所述第二脚本语言组件对所述日志打印执行协议进行解析,并依据解析后的日志打印执行协议反射调用日志打印模块,以给所述第一脚本语言模块提供在原生***打印日志的逻辑数据信息。
可选的,所述业务逻辑数据包括:初始化逻辑数据;所述转换模块具体用于:将所述初始化逻辑数据转换成初始化执行协议,并将所述初始化执行协议传送至第二脚本语言组件;所述解析模块具体用于:通过所述第二脚本语言组件对所述初始化执行协议进行解析,并依据解析后的初始化执行协议反射调用信息初始化模块,以给原生***提供对第一脚本语言***进行初始化全局信息的数据模块,其中,所述第一脚本语言组件注册于所述第一脚本语言***。
根据本发明的第三个方面,提供了一种电子设备,包括处理器和存储器;所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种应用动态更新的方法。
根据本发明的第四个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的一种应用动态更新的方法。
本发明有益效果如下:通过服务端下发更新资源至应用程序,然后基于更新资源中的业务逻辑数据生成执行协议。在得到该执行协议后,应用程序将该执行协议传送至原生***中,通过注册于原生***中的第二脚本语言组件对该执行协议进行解析,而且,该第二脚本语言组件依据该解析之后的执行协议反射调用与该业务逻辑数据对应的功能模块,以进行相应的更新操作,即:完成应用程序的相应更新工作,从而,就可以实现应用程序的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,就此,通过采用与应用程序的原生语言不同的第一脚本语言编写业务逻辑数据,便于扩展和推广。
附图说明
图1为本发明第一实施例一种应用动态更新的方法的流程框图;
图2为本发明第二实施例一种应用动态更新的方法的流程框图;
图3为本发明第三实施例一种应用动态更新的方法的流程框图;
图4为本发明第四实施例一种应用动态更新的方法的流程框图;
图5为本发明第五实施例一种应用动态更新的方法的流程框图;
图6为本发明第五实施例一种应用动态更新的方法的流程框图;
图7为本发明第五实施例一种应用动态更新的方法的流程框图;
图8为本发明第五实施例一种应用动态更新的方法的流程框图;
图9为本发明第五实施例一种应用动态更新的装置的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
为了便于理解本发明实施例,下面通过几个具体实施例对本发明的实施过程进行详细的阐述。
本发明第一实施例提供一种应用动态更新的方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的业务逻辑数据;将所述业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,所述第二脚本语言组件注册于原生***;通过所述第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,以进行相应的更新操作。
就此,在本实施例中,通过服务端下发更新资源至应用程序,然后基于更新资源中的业务逻辑数据生成执行协议。在得到该执行协议后,应用程序将该执行协议传送至原生***中,通过注册于原生***中的第二脚本语言组件对该执行协议进行解析,而且,该第二脚本语言组件依据该解析之后的执行协议反射调用与该业务逻辑数据对应的功能模块,以进行相应的更新操作,即:完成应用程序的相应更新工作,从而,就可以实现应用程序的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,就此,通过采用与应用程序的原生语言不同的第一脚本语言编写业务逻辑数据,便于扩展和推广。
图1为本发明第一实施例一种应用动态更新的方法的流程框图。根据图1所示,本发明第一实施例提供了一种应用动态更新的方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
S11:获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的业务逻辑数据;
在应用程序检测到服务端存在更新资源时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新资源至应用程序。
此外,该更新资源包括:布局数据及业务逻辑数据,其中,所述业务逻辑数据由第一脚本语言编写完成。
其中,该布局数据包括但不限于以下一种或多种:页面样式数据、组成页面的元素组件及页面元素的颜色组件。
其中,该布局数据的数据格式可为可扩展标记语言XML。
而且,该第一脚本语言可以为非原生语言,如:该第一脚本语言为直译式脚本语言JavaScript,而应用程序的原生语言为JAVA。当然,该第一脚本语言也可为原生语言,如:该第一脚本语言与原生语言均为JAVA。
在本实施例中,并不对该第一脚本语言的语言种类进行限定,只需其满足本实施例的要求即可。
S12:将所述业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,所述第二脚本语言组件注册于原生***;
具体的,应用程序调用语言开发软件framework提供的应用程序编程接口api执行相应的业务逻辑数据,使得Framework中的api会通过第二脚本语言组件的预设拼装协议层来拼装相应的执行协议,以得到执行协议。
在得到执行协议后,应用程序通过第一脚本语言组件将该执行协议传送至第二脚本语言组件,具体的,基于数据传输通道,应用程序通过第一脚本语言组件将该执行协议传送至第二脚本语言组件。其中,该数据传输通道用于供第一脚本语言组件与第二脚本语言组件进行数据交互。
具体的,该数据传输通道包括第一脚本语言协议层及第二脚本语言协议层,第一脚本语言组件将该执行协议传输到第一脚本语言协议层,然后,通过第一脚本语言协议层将执行协议传输到第二脚本语言协议层,第二脚本语言协议层再将该执行协议传送至第二脚本语言组件。从而,实现了第一脚本语言组件将执行协议传送至第二脚本语言组件。而且,因为第二脚本语言组件注册于原生***,所以,该执行协议被传送至原生***中。
S13:通过所述第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,以进行相应的更新操作。
从而,通过第二脚本语言组件对该执行协议进行解析,而应用程序基于解析之后的执行协议可以反射调用对应的功能模块,从而可以进行相应的更新操作。
即:在本实施例中,通过服务端下发更新资源至应用程序,然后基于更新资源中的业务逻辑数据生成执行协议。在得到该执行协议后,应用程序将该执行协议传送至原生***中,通过注册于原生***中的第二脚本语言组件对该执行协议进行解析,而且,该第二脚本语言组件依据该解析之后的执行协议反射调用与该业务逻辑数据对应的功能模块,以进行相应的更新操作,即:完成应用程序的相应更新工作,从而,就可以实现应用程序的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,就此,通过采用与应用程序的原生语言不同的第一脚本语言编写业务逻辑数据,便于扩展和推广。
图2为本发明第二实施例一种应用动态更新的方法的流程框图。根据图2所示,本发明第二实施例提供了一种应用动态更新的方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
S21:获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的业务逻辑数据;
在应用程序检测到服务端存在更新资源时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新资源至应用程序。
此外,该更新资源包括:布局数据及业务逻辑数据,其中,所述业务逻辑数据由第一脚本语言编写完成。
其中,该布局数据包括但不限于以下一种或多种:页面样式数据、组成页面的元素组件及页面元素的颜色组件。
其中,该布局数据的数据格式可为可扩展标记语言XML。
而且,该第一脚本语言可以为非原生语言,如:该第一脚本语言为直译式脚本语言JavaScript,而应用程序的原生语言为JAVA。当然,该第一脚本语言也可为原生语言,如:该第一脚本语言与原生语言均为JAVA。
在本实施例中,并不对该第一脚本语言的语言种类进行限定,只需其满足本实施例的要求即可。
S22:在启动以通用页面为原型的新页面前,通过界面解析器将所述布局文件进行解析,得到解析结果;依据所述解析结果生成供所述第二脚本语言组件加载和操作的第一目标视图,所述第一目标视图用于供所述功能模块进行相应的更新操作以生成新页面;
其中,界面解析器用于将布局文件转换成实际可以加载和操作的目标视图,供所述第二脚本语言组件对目标视图进行加载和操作。
而通用页面为承载触发JS业务逻辑数据的一个页面组件,是所有动态化开发的新页面的原型。
就此,应用程序可以通过从服务端获取的布局文件,得到第一目标视图,而该第一目标视图用于供功能模块进行相应的更新操作以生成新页面,即:应用程序可以通过由布局文件生成的目标视图得到新页面,从而完成该应用程序的更新操作。
S23:将所述业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,所述第二脚本语言组件注册于原生***;
具体的,应用程序调用语言开发软件framework提供的应用程序编程接口api执行相应的业务逻辑数据,使得Framework中的api会通过第二脚本语言组件的预设拼装协议层来拼装相应的执行协议,以得到执行协议。
在得到执行协议后,应用程序通过第一脚本语言组件将该执行协议传送至第二脚本语言组件,具体的,基于数据传输通道,应用程序通过第一脚本语言组件将该执行协议传送至第二脚本语言组件。其中,该数据传输通道用于供第一脚本语言组件与第二脚本语言组件进行数据交互。
具体的,该数据传输通道包括第一脚本语言协议层及第二脚本语言协议层,第一脚本语言组件将该执行协议传输到第一脚本语言协议层,然后,通过第一脚本语言协议层将执行协议传输到第二脚本语言协议层,第二脚本语言协议层再将该执行协议传送至第二脚本语言组件。从而,实现了第一脚本语言组件将执行协议传送至第二脚本语言组件。而且,因为第二脚本语言组件注册于原生***,所以,该执行协议被传送至原生***中。
S24:通过所述第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,以进行相应的更新操作。
从而,通过第二脚本语言组件对该执行协议进行解析,而应用程序基于解析之后的执行协议可以反射调用对应的功能模块,从而可以进行相应的更新操作。
即:在本实施例中,通过服务端下发更新资源至应用程序,然后基于更新资源中的业务逻辑数据生成执行协议。在得到该执行协议后,应用程序将该执行协议传送至原生***中,通过注册于原生***中的第二脚本语言组件对该执行协议进行解析,而且,该第二脚本语言组件依据该解析之后的执行协议反射调用与该业务逻辑数据对应的功能模块,以进行相应的更新操作,即:完成应用程序的相应更新工作,从而,就可以实现应用程序的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,就此,通过采用与应用程序的原生语言不同的第一脚本语言编写业务逻辑数据,便于扩展和推广。
图3为本发明第三实施例一种应用动态更新的方法的流程框图。根据图3所示,本发明第三实施例提供了一种应用动态更新的方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
S31:获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的业务逻辑数据;
在应用程序检测到服务端存在更新资源时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新资源至应用程序。
此外,该更新资源包括:布局数据及业务逻辑数据,其中,所述业务逻辑数据由第一脚本语言编写完成。
其中,该布局数据包括但不限于以下一种或多种:页面样式数据、组成页面的元素组件及页面元素的颜色组件。
其中,该布局数据的数据格式可为可扩展标记语言XML。
而且,该第一脚本语言可以为非原生语言,如:该第一脚本语言为直译式脚本语言JavaScript,而应用程序的原生语言为JAVA。当然,该第一脚本语言也可为原生语言,如:该第一脚本语言与原生语言均为JAVA。
在本实施例中,并不对该第一脚本语言的语言种类进行限定,只需其满足本实施例的要求即可。
S32:在启动以通用页面为原型的新页面前,基于原生组件,通过组件配置模块生成供所述第二脚本语言组件加载和操作的第二目标视图,所述第二目标视图用于供所述功能模块进行相应的更新操作以生成新页面;
其中,该组件配置模块用于支持将原生组件按照预定规则添加至该应用程序的动态化开发框架中,原生组件包括该应用程序自身的自定义组件。即:应用程序可以通过应用程序自身的组件生成第二目标视图,而该第二目标视图用于供功能模块进行相应的更新操作以生成新页面,即:应用程序可以通过由该应用程序自身的原生组件生成的目标视图得到新页面,从而完成该应用程序的更新操作。
此外,通用页面为承载触发JS业务逻辑数据的一个页面组件,是所有动态化开发的新页面的原型。
S33:将所述业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,所述第二脚本语言组件注册于原生***;
具体的,应用程序调用语言开发软件framework提供的应用程序编程接口api执行相应的业务逻辑数据,使得Framework中的api会通过第二脚本语言组件的预设拼装协议层来拼装相应的执行协议,以得到执行协议。
在得到执行协议后,应用程序通过第一脚本语言组件将该执行协议传送至第二脚本语言组件,具体的,基于数据传输通道,应用程序通过第一脚本语言组件将该执行协议传送至第二脚本语言组件。其中,该数据传输通道用于供第一脚本语言组件与第二脚本语言组件进行数据交互。
具体的,该数据传输通道包括第一脚本语言协议层及第二脚本语言协议层,第一脚本语言组件将该执行协议传输到第一脚本语言协议层,然后,通过第一脚本语言协议层将执行协议传输到第二脚本语言协议层,第二脚本语言协议层再将该执行协议传送至第二脚本语言组件。从而,实现了第一脚本语言组件将执行协议传送至第二脚本语言组件。而且,因为第二脚本语言组件注册于原生***,所以,该执行协议被传送至原生***中。
S34:通过所述第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,以进行相应的更新操作。
从而,通过第二脚本语言组件对该执行协议进行解析,而应用程序基于解析之后的执行协议可以反射调用对应的功能模块,从而可以进行相应的更新操作。
即:在本实施例中,通过服务端下发更新资源至应用程序,然后基于更新资源中的业务逻辑数据生成执行协议。在得到该执行协议后,应用程序将该执行协议传送至原生***中,通过注册于原生***中的第二脚本语言组件对该执行协议进行解析,而且,该第二脚本语言组件依据该解析之后的执行协议反射调用与该业务逻辑数据对应的功能模块,以进行相应的更新操作,即:完成应用程序的相应更新工作,从而,就可以实现应用程序的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,就此,通过采用与应用程序的原生语言不同的第一脚本语言编写业务逻辑数据,便于扩展和推广。
图4为本发明第四实施例一种应用动态更新的方法的流程框图。根据图4所示,本发明第四实施例提供了一种应用动态更新的方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
S41:获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的扩展逻辑数据;
在应用程序检测到服务端存在更新资源时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新资源至应用程序。
此外,该更新资源包括:布局数据及业务逻辑数据,其中,所述业务逻辑数据由第一脚本语言编写完成。
其中,该布局数据包括但不限于以下一种或多种:页面样式数据、组成页面的元素组件及页面元素的颜色组件。
其中,该布局数据的数据格式可为可扩展标记语言XML。
而且,该第一脚本语言可以为非原生语言,如:该第一脚本语言为直译式脚本语言JavaScript,而应用程序的原生语言为JAVA。当然,该第一脚本语言也可为原生语言,如:该第一脚本语言与原生语言均为JAVA。
在本实施例中,并不对该第一脚本语言的语言种类进行限定,只需其满足本实施例的要求即可。
S42:将所述扩展逻辑数据转换成扩展执行协议,并将所述扩展执行协议传送至第二脚本语言组件;
具体的,应用程序调用语言开发软件framework提供的应用程序编程接口api执行相应的扩展逻辑数据,使得Framework中的api会通过第二脚本语言组件的预设拼装协议层来拼装相应的扩展执行协议,以得到扩展执行协议。
在得到扩展执行协议后,应用程序通过第一脚本语言组件将该扩展执行协议传送至第二脚本语言组件,具体的,基于数据传输通道,应用程序通过第一脚本语言组件将该扩展执行协议传送至第二脚本语言组件。其中,该数据传输通道用于供第一脚本语言组件与第二脚本语言组件进行数据交互。
具体的,该数据传输通道包括第一脚本语言协议层及第二脚本语言协议层,第一脚本语言组件将该扩展执行协议传输到第一脚本语言协议层,然后,通过第一脚本语言协议层将扩展执行协议传输到第二脚本语言协议层,第二脚本语言协议层再将该扩展执行协议传送至第二脚本语言组件。从而,实现了第一脚本语言组件将扩展执行协议传送至第二脚本语言组件。而且,因为第二脚本语言组件注册于原生***,所以,该扩展执行协议被传送至原生***中。
S43:通过所述第二脚本语言组件对所述扩展执行协议进行解析,并依据解析后的扩展执行协议反射调用扩展模块,以支持对复杂的业务操作进行封装。
从而,通过第二脚本语言组件对该扩展执行协议进行解析,而应用程序基于解析之后的扩展执行协议可以反射调用扩展模块,以支持对复杂的业务操作进行封装。
即:在本实施例中,通过服务端下发更新资源至应用程序,然后基于更新资源中的扩展逻辑数据生成扩展执行协议。在得到该扩展执行协议后,应用程序将该扩展执行协议传送至原生***中,通过注册于原生***中的第二脚本语言组件对该扩展执行协议进行解析,而且,该第二脚本语言组件依据该解析之后的扩展执行协议反射调用扩展模块,以支持对复杂的业务操作进行封装。从而,就可以实现应用程序关于对复杂的业务操作方面的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,就此,通过采用与应用程序的原生语言不同的第一脚本语言编写业务逻辑数据,便于扩展和推广。
图5为本发明第五实施例一种应用动态更新的方法的流程框图。根据图5所示,本发明第五实施例提供了一种应用动态更新的方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
S51:获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的类型转换逻辑数据;
在应用程序检测到服务端存在更新资源时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新资源至应用程序。
此外,该更新资源包括:布局数据及业务逻辑数据,其中,所述业务逻辑数据由第一脚本语言编写完成。
其中,该布局数据包括但不限于以下一种或多种:页面样式数据、组成页面的元素组件及页面元素的颜色组件。
其中,该布局数据的数据格式可为可扩展标记语言XML。
而且,该第一脚本语言可以为非原生语言,如:该第一脚本语言为直译式脚本语言JavaScript,而应用程序的原生语言为JAVA。当然,该第一脚本语言也可为原生语言,如:该第一脚本语言与原生语言均为JAVA。
在本实施例中,并不对该第一脚本语言的语言种类进行限定,只需其满足本实施例的要求即可。
其中,业务逻辑数据包括类型转换逻辑数据;所以,本发明实施例还包括:
S52:将所述类型转换逻辑数据转换成类型转换执行协议,并将所述类型转换执行协议传送至第二脚本语言组件;
具体的,应用程序调用语言开发软件framework提供的应用程序编程接口api执行相应的类型转换逻辑数据,使得Framework中的api会通过第二脚本语言组件的预设拼装协议层来拼装相应的类型转换执行协议,以得到类型转换执行协议。
在得到类型转换执行协议后,应用程序通过第一脚本语言组件将该类型转换执行协议传送至第二脚本语言组件,具体的,基于数据传输通道,应用程序通过第一脚本语言组件将该类型转换执行协议传送至第二脚本语言组件。其中,该数据传输通道用于供第一脚本语言组件与第二脚本语言组件进行数据交互。
具体的,该数据传输通道包括第一脚本语言协议层及第二脚本语言协议层,第一脚本语言组件将该类型转换执行协议传输到第一脚本语言协议层,然后,通过第一脚本语言协议层将类型转换执行协议传输到第二脚本语言协议层,第二脚本语言协议层再将该类型转换执行协议传送至第二脚本语言组件。从而,实现了第一脚本语言组件将类型转换执行协议传送至第二脚本语言组件。而且,因为第二脚本语言组件注册于原生***,所以,该类型转换执行协议被传送至原生***中。
S53:通过所述第二脚本语言组件对所述类型转换执行协议进行解析,并依据解析后的类型转换执行协议反射调用类型转换模块,以支持对基本类型信息以外的数据类型信息进行自定义,完成对所述基本类型信息的反射调用。
从而,通过第二脚本语言组件对该类型转换执行协议进行解析,而应用程序基于解析之后的类型转换执行协议可以反射调用类型转换模块,以支持对基本类型信息以外的数据类型信息进行自定义,完成对所述基本类型信息的反射调用。
即:在本实施例中,通过服务端下发更新资源至应用程序,然后基于更新资源中的类型转换逻辑数据生成类型转换执行协议。在得到该类型转换执行协议后,应用程序将该类型转换执行协议传送至原生***中,通过注册于原生***中的第二脚本语言组件对该类型转换执行协议进行解析,而且,该第二脚本语言组件依据该解析之后的类型转换执行协议反射调用类型转换模块,以支持对基本类型信息以外的数据类型信息进行自定义,完成对所述基本类型信息的反射调用。从而,就可以实现应用程序关于对数据类型信息方面的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,就此,通过采用与应用程序的原生语言不同的第一脚本语言编写业务逻辑数据,便于扩展和推广。
图6为本发明第六实施例一种应用动态更新的方法的流程框图。根据图6所示,本发明第六实施例提供了一种应用动态更新的方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
S61:获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的崩溃收集逻辑数据;
在应用程序检测到服务端存在更新资源时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新资源至应用程序。
此外,该更新资源包括:布局数据及业务逻辑数据,其中,所述业务逻辑数据由第一脚本语言编写完成。
其中,该布局数据包括但不限于以下一种或多种:页面样式数据、组成页面的元素组件及页面元素的颜色组件。
其中,该布局数据的数据格式可为可扩展标记语言XML。
而且,该第一脚本语言可以为非原生语言,如:该第一脚本语言为直译式脚本语言JavaScript,而应用程序的原生语言为JAVA。当然,该第一脚本语言也可为原生语言,如:该第一脚本语言与原生语言均为JAVA。
在本实施例中,并不对该第一脚本语言的语言种类进行限定,只需其满足本实施例的要求即可。
其中,业务逻辑数据包括崩溃收集逻辑数据;所以,本发明实施例还包括:
S62:将所述崩溃收集逻辑数据转换成崩溃收集执行协议,并将所述崩溃收集执行协议传送至第二脚本语言组件;
具体的,应用程序调用语言开发软件framework提供的应用程序编程接口api执行相应的崩溃收集逻辑数据,使得Framework中的api会通过第二脚本语言组件的预设拼装协议层来拼装相应的崩溃收集执行协议,以得到崩溃收集执行协议。
在得到崩溃收集执行协议后,应用程序通过第一脚本语言组件将该崩溃收集执行协议传送至第二脚本语言组件,具体的,基于数据传输通道,应用程序通过第一脚本语言组件将该崩溃收集执行协议传送至第二脚本语言组件。其中,该数据传输通道用于供第一脚本语言组件与第二脚本语言组件进行数据交互。
具体的,该数据传输通道包括第一脚本语言协议层及第二脚本语言协议层,第一脚本语言组件将该崩溃收集执行协议传输到第一脚本语言协议层,然后,通过第一脚本语言协议层将崩溃收集执行协议传输到第二脚本语言协议层,第二脚本语言协议层再将该崩溃收集执行协议传送至第二脚本语言组件。从而,实现了第一脚本语言组件将崩溃收集执行协议传送至第二脚本语言组件。而且,因为第二脚本语言组件注册于原生***,所以,该崩溃收集执行协议被传送至原生***中。
S63:通过所述第二脚本语言组件对所述崩溃收集执行协议进行解析,并依据解析后的崩溃收集执行协议反射调用崩溃异常收集模块,以供所述第二脚本语言组件收集第一脚本语言组件的异常堆栈信息。
从而,通过第二脚本语言组件对该崩溃收集执行协议进行解析,而应用程序基于解析之后的崩溃收集执行协议可以反射调用崩溃异常收集模块,以供所述第二脚本语言组件收集第一脚本语言组件的异常堆栈信息。
即:在本实施例中,通过服务端下发更新资源至应用程序,然后基于更新资源中的崩溃收集逻辑数据生成崩溃收集执行协议。在得到该崩溃收集执行协议后,应用程序将该崩溃收集执行协议传送至原生***中,通过注册于原生***中的第二脚本语言组件对该崩溃收集执行协议进行解析,而且,该第二脚本语言组件依据该解析之后的崩溃收集执行协议反射调用崩溃异常收集模块,以供所述第二脚本语言组件收集第一脚本语言组件的异常堆栈信息。从而,就可以实现应用程序对收集非原生语言组件的异常堆栈信息的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,就此,通过采用与应用程序的原生语言不同的第一脚本语言编写业务逻辑数据,便于扩展和推广。
图7为本发明第七实施例一种应用动态更新的方法的流程框图。根据图7所示,本发明第七实施例提供了一种应用动态更新的方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
S71:获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的日志打印逻辑数据;
在应用程序检测到服务端存在更新资源时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新资源至应用程序。
此外,该更新资源包括:布局数据及业务逻辑数据,其中,所述业务逻辑数据由第一脚本语言编写完成。
其中,该布局数据包括但不限于以下一种或多种:页面样式数据、组成页面的元素组件及页面元素的颜色组件。
其中,该布局数据的数据格式可为可扩展标记语言XML。
而且,该第一脚本语言可以为非原生语言,如:该第一脚本语言为直译式脚本语言JavaScript,而应用程序的原生语言为JAVA。当然,该第一脚本语言也可为原生语言,如:该第一脚本语言与原生语言均为JAVA。
在本实施例中,并不对该第一脚本语言的语言种类进行限定,只需其满足本实施例的要求即可。
其中,业务逻辑数据包括日志打印逻辑数据;所以,本发明实施例还包括:
S72:将所述日志打印逻辑数据转换成日志打印执行协议,并将所述日志打印执行协议传送至第二脚本语言组件;
具体的,应用程序调用语言开发软件framework提供的应用程序编程接口api执行相应的日志打印逻辑数据,使得Framework中的api会通过第二脚本语言组件的预设拼装协议层来拼装相应的日志打印执行协议,以得到日志打印执行协议。
在得到日志打印执行协议后,应用程序通过第一脚本语言组件将该日志打印执行协议传送至第二脚本语言组件,具体的,基于数据传输通道,应用程序通过第一脚本语言组件将该日志打印执行协议传送至第二脚本语言组件。其中,该数据传输通道用于供第一脚本语言组件与第二脚本语言组件进行数据交互。
具体的,该数据传输通道包括第一脚本语言协议层及第二脚本语言协议层,第一脚本语言组件将该日志打印执行协议传输到第一脚本语言协议层,然后,通过第一脚本语言协议层将日志打印执行协议传输到第二脚本语言协议层,第二脚本语言协议层再将该日志打印执行协议传送至第二脚本语言组件。从而,实现了第一脚本语言组件将日志打印执行协议传送至第二脚本语言组件。而且,因为第二脚本语言组件注册于原生***,所以,该日志打印执行协议被传送至原生***中。
S73:通过所述第二脚本语言组件对所述日志打印执行协议进行解析,并依据解析后的日志打印执行协议反射调用日志打印模块,以给第一脚本语言模块提供在原生***打印日志的逻辑数据信息。
从而,通过第二脚本语言组件对该日志打印执行协议进行解析,而应用程序基于解析之后的日志打印执行协议可以反射调用日志打印模块,以给所述第一脚本语言模块提供在原生***打印日志的逻辑数据信息。
即:在本实施例中,通过服务端下发更新资源至应用程序,然后基于更新资源中的日志打印逻辑数据生成日志打印执行协议。在得到该日志打印执行协议后,应用程序将该日志打印执行协议传送至原生***中,通过注册于原生***中的第二脚本语言组件对该日志打印执行协议进行解析,而且,该第二脚本语言组件依据该解析之后的日志打印执行协议反射调用日志打印模块,以给所述第一脚本语言模块提供在原生***打印日志的逻辑数据信息。从而,就可以实现应用程序关于原生***打印日志方面的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,就此,通过采用与应用程序的原生语言不同的第一脚本语言编写业务逻辑数据,便于日志打印和推广。
图8为本发明第八实施例一种应用动态更新的方法的流程框图。根据图8所示,本发明第八实施例提供了一种应用动态更新的方法,应用于基于混合开发模式所开发的应用程序,所述方法包括:
S81:获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的初始化逻辑数据;
在应用程序检测到服务端存在更新资源时,该应用程序向服务端发出数据请求,服务端在获取该数据请求后,反馈该更新资源至应用程序。
此外,该更新资源包括:布局数据及业务逻辑数据,其中,所述业务逻辑数据由第一脚本语言编写完成。
其中,该布局数据包括但不限于以下一种或多种:页面样式数据、组成页面的元素组件及页面元素的颜色组件。
其中,该布局数据的数据格式可为可扩展标记语言XML。
而且,该第一脚本语言可以为非原生语言,如:该第一脚本语言为直译式脚本语言JavaScript,而应用程序的原生语言为JAVA。当然,该第一脚本语言也可为原生语言,如:该第一脚本语言与原生语言均为JAVA。
在本实施例中,并不对该第一脚本语言的语言种类进行限定,只需其满足本实施例的要求即可。
其中,业务逻辑数据包括初始化逻辑数据;所以,本发明实施例还包括:
S82:将所述初始化逻辑数据转换成初始化执行协议,并将所述初始化执行协议传送至第二脚本语言组件;
具体的,应用程序调用语言开发软件framework提供的应用程序编程接口api执行相应的初始化逻辑数据,使得Framework中的api会通过第二脚本语言组件的预设拼装协议层来拼装相应的初始化执行协议,以得到初始化执行协议。
在得到初始化执行协议后,应用程序通过第一脚本语言组件将该初始化执行协议传送至第二脚本语言组件,具体的,基于数据传输通道,应用程序通过第一脚本语言组件将该初始化执行协议传送至第二脚本语言组件。其中,该数据传输通道用于供第一脚本语言组件与第二脚本语言组件进行数据交互。
具体的,该数据传输通道包括第一脚本语言协议层及第二脚本语言协议层,第一脚本语言组件将该初始化执行协议传输到第一脚本语言协议层,然后,通过第一脚本语言协议层将初始化执行协议传输到第二脚本语言协议层,第二脚本语言协议层再将该初始化执行协议传送至第二脚本语言组件。从而,实现了第一脚本语言组件将初始化执行协议传送至第二脚本语言组件。而且,因为第二脚本语言组件注册于原生***,所以,该初始化执行协议被传送至原生***中。
S83:通过所述第二脚本语言组件对所述初始化执行协议进行解析,并依据解析后的初始化执行协议反射调用信息初始化模块,以给原生***提供对第一脚本语言***进行初始化全局信息的数据模块,其中,所述第一脚本语言组件注册于所述第一脚本语言***。
从而,通过第二脚本语言组件对该初始化执行协议进行解析,而应用程序基于解析之后的初始化执行协议可以反射调用信息初始化模块,以给原生***提供对第一脚本语言***进行初始化全局信息的数据模块。
即:在本实施例中,通过服务端下发更新资源至应用程序,然后基于更新资源中的初始化逻辑数据生成初始化执行协议。在得到该初始化执行协议后,应用程序将该初始化执行协议传送至原生***中,通过注册于原生***中的第二脚本语言组件对该初始化执行协议进行解析,而且,该第二脚本语言组件依据该解析之后的初始化执行协议反射调用信息初始化模块,以给原生***提供对第一脚本语言***进行初始化全局信息的数据模块。从而,就可以实现应用程序关于对第一脚本语言***进行初始化全局信息的热更新,而无需进行应用程序的重新发版,有助于降低开发成本。此外,通过上述方式,本实施例在保证用户体验的同时能够实现热更新,并且在本实施例中,编写业务逻辑数据的第一脚本语言可以为与应用程序的原生语言不同,就此,通过采用与应用程序的原生语言不同的第一脚本语言编写业务逻辑数据,便于扩展和推广。
图9为本发明第九实施例一种应用动态更新的装置的流程框图。根据图9所示,本发明第九实施例提供了一种应用动态更新的装置,其包含于基于混合开发模式所开发的应用程序,所述装置包括:
获取模块110,用于获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的业务逻辑数据;转换模块120,用于将所述业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,所述第二脚本语言组件注册于原生***;解析模块130,用于通过所述第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,以进行相应的更新操作。
可选的,所述装置还包括:第一解析模块,用于在所述将业务逻辑数据转换成执行协议之前,而且,在启动以通用页面为原型的新页面前,通过界面解析器将所述布局文件进行解析,得到解析结果;第一生成模块,用于依据所述解析结果生成供所述第二脚本语言组件加载和操作的第一目标视图,所述第一目标视图用于供所述功能模块进行相应的更新操作以生成新页面。
可选的,所述装置还包括:第二生成模块,用于在所述将业务逻辑数据转换成执行协议之前,而且,在启动以通用页面为原型的新页面前,基于原生组件,通过组件配置模块生成供所述第二脚本语言组件加载和操作的第二目标视图,所述第二目标视图用于供所述功能模块进行相应的更新操作以生成新页面。
可选的,所述业务逻辑数据包括:扩展逻辑数据;所述转换模块120具体用于:将所述扩展逻辑数据转换成扩展执行协议,并将所述扩展执行协议传送至第二脚本语言组件;所述解析模块130具体用于:通过所述第二脚本语言组件对所述扩展执行协议进行解析,并依据解析后的扩展执行协议反射调用扩展模块,以支持对复杂的业务操作进行封装。
可选的,所述业务逻辑数据包括:类型转换逻辑数据;所述转换模块120具体用于:将所述类型转换逻辑数据转换成类型转换执行协议,并将所述类型转换执行协议传送至第二脚本语言组件;所述解析模块130具体用于:通过所述第二脚本语言组件对所述类型转换执行协议进行解析,并依据解析后的类型转换执行协议反射调用类型转换模块,以支持对基本类型信息以外的数据类型信息进行自定义,完成对所述基本类型信息的反射调用。
可选的,所述业务逻辑数据包括:崩溃收集逻辑数据;所述转换模块120具体用于:将所述崩溃收集逻辑数据转换成崩溃收集执行协议,并将所述崩溃收集执行协议传送至第二脚本语言组件;所述解析模块130具体用于:通过所述第二脚本语言组件对所述崩溃收集执行协议进行解析,并依据解析后的崩溃收集执行协议反射调用崩溃异常收集模块,以供所述第二脚本语言组件收集第一脚本语言组件的异常堆栈信息。
可选的,所述业务逻辑数据包括:日志打印逻辑数据;所述转换模块120具体用于:将所述日志打印逻辑数据转换成日志打印执行协议,并将所述日志打印执行协议传送至第二脚本语言组件;所述解析模块130具体用于:通过所述第二脚本语言组件对所述日志打印执行协议进行解析,并依据解析后的日志打印执行协议反射调用日志打印模块,以给所述第一脚本语言模块提供在原生***打印日志的逻辑数据信息。
可选的,所述业务逻辑数据包括:初始化逻辑数据;所述转换模块120具体用于:将所述初始化逻辑数据转换成初始化执行协议,并将所述初始化执行协议传送至第二脚本语言组件;所述解析模块130具体用于:通过所述第二脚本语言组件对所述初始化执行协议进行解析,并依据解析后的初始化执行协议反射调用信息初始化模块,以给原生***提供对第一脚本语言***进行初始化全局信息的数据模块,其中,所述第一脚本语言组件注册于所述第一脚本语言***。
本发明第十实施例提供了一种电子设备,包括处理器和存储器;所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种应用动态更新的方法。
本发明第十实施例中的一种电子设备所涉及的名词及实现原理具体可以参照本发明实施例中的第一至八实施例的一种应用动态更新的方法,在此不再赘述。
本发明第十一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个模块,所述一个或者多个模块可被一个或者多个处理器执行,以实现上述的一种应用动态更新的方法。
本发明第十一实施例中的一种计算机设备所涉及的名词及实现原理具体可以参照本发明实施例中的第一至八实施例的一种应用动态更新的方法,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (18)

1.一种应用动态更新的方法,其特征在于,应用于基于混合开发模式所开发的应用程序,所述方法包括:
获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的业务逻辑数据;
将所述业务逻辑数据转换成执行协议,并基于数据传输通道,将所述执行协议由第一脚本语言组件传送至第二脚本语言组件,所述第二脚本语言组件注册于原生***,所述数据传输通道包括第一脚本语言协议层及第二脚本语言协议层,以实现第一脚本语言组件与第二脚本语言组件进行数据交互;
通过所述第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,以进行相应的更新操作。
2.根据权利要求1所述的方法,其特征在于,在所述将业务逻辑数据转换成执行协议之前,所述方法还包括:
在启动以通用页面为原型的新页面前,通过界面解析器将所述布局文件进行解析,得到解析结果;
依据所述解析结果生成供所述第二脚本语言组件加载和操作的第一目标视图,所述第一目标视图用于供所述功能模块进行相应的更新操作以生成新页面。
3.根据权利要求1所述的方法,其特征在于,在所述将业务逻辑数据转换成执行协议之前,所述方法还包括:
在启动以通用页面为原型的新页面前,基于原生组件,通过组件配置模块生成供所述第二脚本语言组件加载和操作的第二目标视图,所述第二目标视图用于供所述功能模块进行相应的更新操作以生成新页面。
4.根据权利要求1所述的方法,其特征在于,所述业务逻辑数据包括:扩展逻辑数据;
所述将业务逻辑数据转换成执行协议,并将所述执行协议传送至第二脚本语言组件,包括:
将所述扩展逻辑数据转换成扩展执行协议,并将所述扩展执行协议传送至第二脚本语言组件;
所述通过第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,包括:
通过所述第二脚本语言组件对所述扩展执行协议进行解析,并依据解析后的扩展执行协议反射调用扩展模块,以支持对复杂的业务操作进行封装。
5.根据权利要求1所述的方法,其特征在于,所述业务逻辑数据包括:类型转换逻辑数据;
将所述类型转换逻辑数据转换成类型转换执行协议,并将所述类型转换执行协议传送至第二脚本语言组件;
通过所述第二脚本语言组件对所述类型转换执行协议进行解析,并依据解析后的类型转换执行协议反射调用类型转换模块,以支持对基本类型信息以外的数据类型信息进行自定义,完成对所述基本类型信息的反射调用。
6.根据权利要求1所述的方法,其特征在于,所述业务逻辑数据包括:崩溃收集逻辑数据;
将所述崩溃收集逻辑数据转换成崩溃收集执行协议,并将所述崩溃收集执行协议传送至第二脚本语言组件;
通过所述第二脚本语言组件对所述崩溃收集执行协议进行解析,并依据解析后的崩溃收集执行协议反射调用崩溃异常收集模块,以供所述第二脚本语言组件收集第一脚本语言组件的异常堆栈信息。
7.根据权利要求1所述的方法,其特征在于,所述业务逻辑数据包括:日志打印逻辑数据;
将所述日志打印逻辑数据转换成日志打印执行协议,并将所述日志打印执行协议传送至第二脚本语言组件;
通过所述第二脚本语言组件对所述日志打印执行协议进行解析,并依据解析后的日志打印执行协议反射调用日志打印模块,以给所述第一脚本语言模块提供在原生***打印日志的逻辑数据信息。
8.根据权利要求1所述的方法,其特征在于,所述业务逻辑数据包括:初始化逻辑数据;
将所述初始化逻辑数据转换成初始化执行协议,并将所述初始化执行协议传送至第二脚本语言组件;
通过所述第二脚本语言组件对所述初始化执行协议进行解析,并依据解析后的初始化执行协议反射调用信息初始化模块,以给原生***提供对第一脚本语言***进行初始化全局信息的数据模块,其中,所述第一脚本语言组件注册于所述第一脚本语言***。
9.一种应用动态更新的装置,其特征在于,包含于基于混合开发模式所开发的应用程序,所述装置包括:
获取模块,用于获取来自服务端的更新资源,所述更新资源包括:布局数据及通过第一脚本语言编写的业务逻辑数据;
转换模块,用于将所述业务逻辑数据转换成执行协议,并基于数据传输通道,将所述执行协议由第一脚本语言组件传送至第二脚本语言组件,所述第二脚本语言组件注册于原生***,所述数据传输通道包括第一脚本语言协议层及第二脚本语言协议层,以实现第一脚本语言组件与第二脚本语言组件进行数据交互;
解析模块,用于通过所述第二脚本语言组件对所述执行协议进行解析,并依据解析后的执行协议反射调用对应的功能模块,以进行相应的更新操作。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第一解析模块,用于在所述将业务逻辑数据转换成执行协议之前,而且,在启动以通用页面为原型的新页面前,通过界面解析器将所述布局文件进行解析,得到解析结果;
第一生成模块,用于依据所述解析结果生成供所述第二脚本语言组件加载和操作的第一目标视图,所述第一目标视图用于供所述功能模块进行相应的更新操作以生成新页面。
11.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第二生成模块,用于在所述将业务逻辑数据转换成执行协议之前,而且,在启动以通用页面为原型的新页面前,基于原生组件,通过组件配置模块生成供所述第二脚本语言组件加载和操作的第二目标视图,所述第二目标视图用于供所述功能模块进行相应的更新操作以生成新页面。
12.根据权利要求9所述的装置,其特征在于,所述业务逻辑数据包括:扩展逻辑数据;
所述转换模块具体用于:将所述扩展逻辑数据转换成扩展执行协议,并将所述扩展执行协议传送至第二脚本语言组件;
所述解析模块具体用于:通过所述第二脚本语言组件对所述扩展执行协议进行解析,并依据解析后的扩展执行协议反射调用扩展模块,以支持对复杂的业务操作进行封装。
13.根据权利要求9所述的装置,其特征在于,所述业务逻辑数据包括:类型转换逻辑数据;
所述转换模块具体用于:将所述类型转换逻辑数据转换成类型转换执行协议,并将所述类型转换执行协议传送至第二脚本语言组件;
所述解析模块具体用于:通过所述第二脚本语言组件对所述类型转换执行协议进行解析,并依据解析后的类型转换执行协议反射调用类型转换模块,以支持对基本类型信息以外的数据类型信息进行自定义,完成对所述基本类型信息的反射调用。
14.根据权利要求9所述的装置,其特征在于,所述业务逻辑数据包括:崩溃收集逻辑数据;
所述转换模块具体用于:将所述崩溃收集逻辑数据转换成崩溃收集执行协议,并将所述崩溃收集执行协议传送至第二脚本语言组件;
所述解析模块具体用于:通过所述第二脚本语言组件对所述崩溃收集执行协议进行解析,并依据解析后的崩溃收集执行协议反射调用崩溃异常收集模块,以供所述第二脚本语言组件收集第一脚本语言组件的异常堆栈信息。
15.根据权利要求9所述的装置,其特征在于,所述业务逻辑数据包括:日志打印逻辑数据;
所述转换模块具体用于:将所述日志打印逻辑数据转换成日志打印执行协议,并将所述日志打印执行协议传送至第二脚本语言组件;
所述解析模块具体用于:通过所述第二脚本语言组件对所述日志打印执行协议进行解析,并依据解析后的日志打印执行协议反射调用日志打印模块,以给所述第一脚本语言模块提供在原生***打印日志的逻辑数据信息。
16.根据权利要求9所述的装置,其特征在于,所述业务逻辑数据包括:初始化逻辑数据;
所述转换模块具体用于:将所述初始化逻辑数据转换成初始化执行协议,并将所述初始化执行协议传送至第二脚本语言组件;
所述解析模块具体用于:通过所述第二脚本语言组件对所述初始化执行协议进行解析,并依据解析后的初始化执行协议反射调用信息初始化模块,以给原生***提供对第一脚本语言***进行初始化全局信息的数据模块,其中,所述第一脚本语言组件注册于所述第一脚本语言***。
17.一种电子设备,其特征在于,包括处理器和存储器;
所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现权利要求1至8中任一项所述的一种应用动态更新的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1至8中任一项所述的一种应用动态更新的方法。
CN201810503866.2A 2018-05-23 2018-05-23 一种应用动态更新的方法、装置、电子设备及存储介质 Active CN108845810B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810503866.2A CN108845810B (zh) 2018-05-23 2018-05-23 一种应用动态更新的方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810503866.2A CN108845810B (zh) 2018-05-23 2018-05-23 一种应用动态更新的方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN108845810A CN108845810A (zh) 2018-11-20
CN108845810B true CN108845810B (zh) 2022-04-22

Family

ID=64213332

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810503866.2A Active CN108845810B (zh) 2018-05-23 2018-05-23 一种应用动态更新的方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN108845810B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109669715A (zh) * 2018-12-24 2019-04-23 北京金山安全软件有限公司 应用程序动态更新方法、设备及存储介质
CN109918151A (zh) * 2019-03-14 2019-06-21 佳都新太科技股份有限公司 工作流实现方法、装置、设备及存储介质
CN109918112B (zh) * 2019-03-15 2022-10-04 网易(杭州)网络有限公司 游戏热更新方法、装置和存储介质
CN110389754B (zh) * 2019-06-18 2023-12-15 北京奇艺世纪科技有限公司 业务处理方法、***、服务器、终端、电子设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130017337A (ko) * 2011-08-10 2013-02-20 케이티하이텔 주식회사 하이브리드 앱 개발 플랫폼 구조 및 그 테스트 방법, 그리고 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
CN104111855A (zh) * 2014-07-29 2014-10-22 广东能龙教育股份有限公司 一种基于Lua的iOS客户端功能动态更新的方法
CN104123157A (zh) * 2014-07-17 2014-10-29 北京京东尚科信息技术有限公司 一种移动终端的跨平台业务逻辑定制方法和装置
KR20160012030A (ko) * 2014-07-23 2016-02-02 엘지전자 주식회사 디스플레이 장치 및 그의 동작 방법
CN105354014A (zh) * 2014-08-18 2016-02-24 阿里巴巴集团控股有限公司 应用界面渲染展示方法及装置
CN107391169A (zh) * 2017-06-09 2017-11-24 口碑控股有限公司 安卓页面的动态更新方法和装置
CN107608691A (zh) * 2017-08-18 2018-01-19 阿里巴巴集团控股有限公司 一种页面更新方法和装置
CN107967139A (zh) * 2016-10-17 2018-04-27 网易(杭州)网络有限公司 游戏的热更新方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155641B (zh) * 2015-03-24 2019-09-13 北京神州泰岳软件股份有限公司 一种移动终端应用界面动态生成的方法和***

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130017337A (ko) * 2011-08-10 2013-02-20 케이티하이텔 주식회사 하이브리드 앱 개발 플랫폼 구조 및 그 테스트 방법, 그리고 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
CN104123157A (zh) * 2014-07-17 2014-10-29 北京京东尚科信息技术有限公司 一种移动终端的跨平台业务逻辑定制方法和装置
KR20160012030A (ko) * 2014-07-23 2016-02-02 엘지전자 주식회사 디스플레이 장치 및 그의 동작 방법
CN104111855A (zh) * 2014-07-29 2014-10-22 广东能龙教育股份有限公司 一种基于Lua的iOS客户端功能动态更新的方法
CN105354014A (zh) * 2014-08-18 2016-02-24 阿里巴巴集团控股有限公司 应用界面渲染展示方法及装置
CN107967139A (zh) * 2016-10-17 2018-04-27 网易(杭州)网络有限公司 游戏的热更新方法及装置
CN107391169A (zh) * 2017-06-09 2017-11-24 口碑控股有限公司 安卓页面的动态更新方法和装置
CN107608691A (zh) * 2017-08-18 2018-01-19 阿里巴巴集团控股有限公司 一种页面更新方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
动态软件更新—文献综述和实验研究;姚燕;《中国优秀硕士学位论文全文数据库信息科技辑》;20141215;全文 *
反射中间件研究综述;张昕,丁晓宁;《计算机科学》;20041025;全文 *

Also Published As

Publication number Publication date
CN108845810A (zh) 2018-11-20

Similar Documents

Publication Publication Date Title
CN108845810B (zh) 一种应用动态更新的方法、装置、电子设备及存储介质
CN110297635B (zh) 页面的显示方法、装置、设备以及存储介质
CN108491199B (zh) 一种自动生成接口的方法及终端
CN101216838B (zh) 基于web标记的xml界面配置文件分发***及方法
CN109542427B (zh) 一种***定制方法、装置及电子设备和存储介质
CN109240697B (zh) 调用处理方法及装置、存储介质
JP5885527B2 (ja) 印刷システム、印刷サーバ、制御方法およびコンピュータプログラム
CN108334465B (zh) 通信接口的配置方法、装置、设备及计算机可读存储介质
CN107729014B (zh) 一种基于Android的页面跳转方法及结构
CN105718313A (zh) 应用操作方法和装置
JP5440252B2 (ja) 情報処理装置、外部装置、情報処理システム、情報処理方法、及びプログラム
CN108776592B (zh) 一种页面构建的方法、装置、设备及存储介质
CN104111827A (zh) 应用程序匹配方法及装置
CN103262020A (zh) 用于打印机的虚拟输入/输出装置
CN108845800B (zh) 一种组件扩展功能的实现方法、装置、设备及存储介质
CN113419729A (zh) 基于组件化的前端页面搭建方法、装置、设备及存储介质
CN108804120B (zh) 一种页面构建方法、装置、设备及存储介质
CN108021445B (zh) 内存优化方法、装置、***及计算机可读存储介质
CN107239265B (zh) Java函数与C函数的绑定方法及装置
CN109240673B (zh) 一种基于react-native的视图动态加载更新方法及***
CN101772196A (zh) 处理移动终端发送的信息的方法和***以及代理服务器
CN105739717A (zh) 信息输入方法和装置
CN110795154B (zh) 跨平台设备驱动方法、装置、设备及计算机可读存储介质
CN114385128A (zh) 数据处理方法、设备、装置、存储介质及程序产品
CN109509467B (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