CN107508846B - 应用客户端的更新方法和系统及终端设备 - Google Patents
应用客户端的更新方法和系统及终端设备 Download PDFInfo
- Publication number
- CN107508846B CN107508846B CN201610417487.2A CN201610417487A CN107508846B CN 107508846 B CN107508846 B CN 107508846B CN 201610417487 A CN201610417487 A CN 201610417487A CN 107508846 B CN107508846 B CN 107508846B
- Authority
- CN
- China
- Prior art keywords
- file
- update
- class
- application client
- module
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
- H04L67/303—Terminal profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种应用客户端的更新方法和系统及终端设备,其中,所述方法包括:从服务器中获取应用客户端的更新模块的更新文件,其中,所述更新文件为采用与所述应用客户端所在终端相同的原生开发语言编写;解析所述更新文件,生成相应的具有新的参数值的类对象;将所述具有新的参数值的类对象赋值给应用客户端中相应的类对象引用,从而更新所述应用客户端。所述系统包括客户端和服务器,其中,所述客户端包括更新信息获取模块,解析模块和赋值模块,进而更新所述应用客户端。本发明使用终端平台原生开发语言来开发应用客户端的更新模块,减低了开发成本,提高了客户端更新功能的实时性。
Description
技术领域
本发明涉及软件应用技术领域,具体地说,涉及一种应用(App) 客户端的更新方法和系统及终端设备。
背景技术
随着业务和科技的发展,为了更好地向用户提供服务,目前大部分的企业都开发有与其业务相应的App客户端,企业用户可以从该企业服务器下载该App客户端,安装到其台式电脑、笔记本电脑或移动通讯终端,方便享用相应的服务。
随着业务的发展,企业常常需要对其发布的App客户端进行更新以适应业务的发展和更新。另一方面,由于App客户端的错误修复需要、为保障该App客户端安全运行而不断更新安全插件的需要等,企业也常常需要对其发布的App客户端进行更新。
关于更新App客户端的现有技术方案,大致有以下几种:
1)企业重新打包生成新版本App软件包,提示用户下载并安装更新。该方案难以及时更新软件的功能,并且用户体验不好。从企业发布版本到提示用户安装,再到用户自己下载安装,需要很长时间,对于紧急Bug 修复,很难及时修复。而且每次用户重新安装软件,也会打断用户对该应用的正常使用。
2)在更新Android App客户端时,使用HTML、JavaScript创建移动客户端软件,在移动客户端中内嵌浏览器,用户每次请求的是网页,然后由移动客户端中的浏览器来解释执行网页程序,来实现更新软件功能。在该方案中,客户端软件界面性能较差,用户体验不好。HTML和 JavaScript的用户界面渲染性能比系统原生用户界面的性能差。同时也无法调用Android平台上的API,只能调用HTML、JavaScript自身提供的API,功能受限大。
3)企业在Android App客户端中使用DexClassLoader来装载新版本的Android类文件,并运行该Android类文件以达到更新App客户端的目的。新版本的Android类文件存放于企业服务器上,企业根据需要适时更新它。该方案需要编译打包DEX,配置编译环境,并且完成编译需要一定的时间,不但复杂,而且及时性不好。
4)企业在开发移动客户端时,使用类似于React native框架的模型转换技术,移动客户端向服务器请求HTML、JavaScript文本程序,然后再使用React native库将HTML、JavaScript程序中的模型对象转换成Android平台的模型对象,来实现动态实时更新。该方案具有以下问题:
⑴程序员除了需要掌握Android开发技术外,还需要另外掌握 JavaScript或HTML,对开发人员的要求较高。
⑵需要开发维护一套模型转换框架React native,它依赖于 Android平台,随着Android平台的更新而更新,因而开发复杂、成本高。
⑶如果React native库自身存在Bug,则难以动态修复。
发明内容
本发明要解决的技术问题在于,针对现有技术的不足,提供一种应用客户端的更新方法及系统和终端设备,减低程序员开发可更新模块的学习成本,提高客户端更新功能的实时性。
为解决上述技术问题,本发明提供了一种应用客户端的更新方法,其中,包括以下步骤:
从服务器中获取应用客户端的更新模块的更新文件,其中,所述更新文件为采用与所述应用客户端所在终端相同的原生开发语言编写;
解析所述更新文件,生成相应的具有新的参数值的类对象;
将所述具有新的参数值的类对象赋值给应用客户端中相应的类对象引用,从而更新所述应用客户端。
优选地,所述应用客户端基于Android平台,所述原生开发语言为Java。
优选地,当所述更新文件为应用客户端更新模块的Java源代码时,所述解析所述更新文件,生成相应的具有新的参数值的类对象的步骤包括:
通过Java编译引擎编译所述Java源代码,生成class文件;
通过DEX转换生成器将所述class文件转换成DEX文件,并存放到本地;
获取更新模块的类名称;
以所述应用客户端中与所述类相应的下上文对象作为参数,创建更新模块的类对象;
初始化所述类对象,使所述类对象具有新的参数值。
优选地,所述获取更新模块的类名称的步骤包括:
所述客户端通过类装载器(DexClassLoader)载入所述DEX文件;
通过调用DexClassLoader的loadClass函数时传入的参数得到更新模块类的类名称。
优选地,所述下上文对象为全局上下文对象或单个界面上下文对象。
优选地,在服务器中没有更新模块时,所述客户端查询本地是否有更新模块的DEX文件包,如果有,从本地载入所述DEX文件包。
优选地,当所述更新文件为界面布局XML更新文件时,在解析所述更新文件时,生成具有新的参数值的界面类对象。
优选地,所述从服务器中获取应用客户端的更新模块的更新文件步骤包括:
所述客户端建立并保持与所述服务器的网络连接;
当服务器中具有更新模块时,所述服务器向所述客户端发送通知;
所述客户端访问所述服务器,下载相应更新模块的更新文件;
或
所述客户端建立并保持与所述服务器的网络连接;
所述客户端查询所述服务器,查询是否有更新模块,如果有,从所述服务器下载相应更新模块的更新文件。
优选地,所述服务器中的更新模块的更新文件被加密后存储在所述服务器中;
当所述客户端下载所述更新模块的更新文件后,对所述更新文件解密,得到原始的更新文件。
本发明还提供了一种应用客户端的更新系统,包括客户端和服务器,其中,所述客户端包括:
更新信息获取模块,用于从所述服务器获取所述应用客户端的更新模块的更新文件;
解析模块,用于解析所述更新文件,得到具有新参数值的类对象;和
赋值模块,用于将所述类对象赋值给所述应用客户端中对应的类对象引用,从而更新所述应用客户端。
优选地,所述解析模块包括:
Java编译引擎,用于编译由Java源代码编写的更新文件,生成 class文件;和
DEX转换生成器,用于将所述class文件转换成DEX文件存放到本地;
类装载器,用于从本地载入所述DEX文件,并获取更新模块类的类名;
类对象创建单元,用于根据所述类名,以与所述应用客户端中相应的下上文对象作为参数,创建可更新模块的类对象;
初始化单元,用于初始化所述更新模块的类对象,得到具有新参数值的类对象。
优选地,所述解析模块还包括:
界面布局解析单元,用于解析所述界面布局XML更新文件,生成界面类对象;
所述赋值模块还用于将所述界面类对象值赋值给客户端原界面类对象引用,从而更新客户端主界面。
优选地,所述更新信息获取模块包括:
网络连接单元,用于建立并保持与所述服务器的网络连接;
查询单元,用于查询所述服务器或本地存储器,确定是否有更新模块或DEX文件;和
下载单元,用于根据从所述服务器中得到的更新模块信息,下载相应更新模块的Java源代码。
优选地,所述更新系统还包括解密模块,用于解密从所述服务器获取的所述应用客户端的更新文件。
本发明还提供了一种实现前述更新方法的终端设备,其中,包括:
网络接入单元,用于接入无线网络;
数据接口,用于通过无线网络从相应服务器中获取应用客户端的更新文件;
存储器,用于存储所述更新文件、处理过程中的数据及上述指令;和
处理器,按照以下配置的指令处理所述更新文件,更新相应的应用客户端:
从服务器中获取应用客户端的更新模块的更新文件,其中,所述更新文件为采用与所述应用的原生开发语言编写;
解析所述更新文件,生成相应的具有新的参数值的类对象;
将所述具有新的参数值的类对象赋值给应用客户端中相应的类对象引用,从而更新所述应用客户端。
优选地,当所述更新文件为应用客户端更新模块的Java源代码时,所述处理器还被以下指令配置进行解析所述更新文件:
通过Java编译引擎编译所述Java源代码,生成class文件;
通过DEX转换生成器将所述class文件转换成DEX文件,并存放到本地;
获取更新模块的类名称;
以所述应用客户端中与所述类相应的下上文对象作为参数,创建更新模块的类对象;
初始化所述类对象,使所述类对象具有新的参数值。
本发明使用终端平台(如Android)原生开发语言(如Java)来开发可更新的终端客户端,用户体验好,具有较好的运行性能。其次,由于使用和原生终端的客户端相同的开发语言书写可更新模块,直观明了、更容易检查错误,并且,不再需要程序员学习其他语言,如JavaScript 等,大大减低了程序员开发可更新模块的学习成本,即降低了更新成本;使得修改服务器中更新文件的操作更为简便。
附图说明
通过参照以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1为本发明所述Android App客户端的更新方法和系统的简要原理图;
图2为本发明所述Android App客户端的更新方法的流程示意图;
图3为本发明所述Android App客户端的更新方法一具体实施例的流程示意图;
图4为本发明所述Android App客户端的更新方法另一具体实施例的流程示意图;
图5为本发明所述Android App客户端的原理框图;
图6为本发明所述解析模块的原理框图;
图7为本发明所述更新信息获取模块的原理框图;
图8为本发明所述Android App客户端一个具体实施例的原理框图;
图9为本发明所述Android设备的原理框图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
附图中的流程图、框图图示了本发明实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。
以下仅以Android平台为例,对本发明的思想进行详细说明,但是,本发明也可以应到其他平台的客户端更新。
如图1所示,为本发明所述App客户端的更新方法和系统一实施例的简要原理图。
在本实施例中,所述应用客户端基于Android平台,所述原生开发语言为Java。因而,软件工程师3根据企业的业务需要,采用Java语言编写应用的更新模块,并将其发布到服务器上,供客户端下载。所述更新模块可以为任何Java类,比如是一个屏幕界面Activity的子类、一个控件View的子类、某个自定义的算法类或者某个数据结构类。
如果当前所述的更新涉及到界面的布局有变化时,软件工程师3还需要用XML语言书写Android界面的布局文本文件,加密后发布到企业服务器上。
Android应用客户端与企业服务器通信并保持网络连接,检查是否有该客户端的更新模块,如果有,则将Java源代码和Android界面的布局文本文件下载到Android应用的客户端。
Android应用的客户端内置有Java编译引擎和DEX (Dalvik Executable,简称DEX)转换生成器。Java编译引擎为使用 Groovy框架的Java源代码解释器,它支持在软件运行时动态载入Java 源代码文本,并将其解释编译为Java class字节码。DEX转换生成器选择使用DX工具类库,它可以将Java class转换成DEX文件,这个DEX 文件和应用(App)里面已经有的DEX文件是平行的,存放在应用自己的数据目录下,具体路径为/data/data/app包名/。
根据以上原理可见,首先,本发明使用Android平台原生开发语言 Java来开发Android客户端的更新模块,即采用原生控件,更新模块的 Java源代码被客户端编译转换成Android DEX文件,所有界面元素都是原生的,用户体验好,具有较好的运行性能。其次,由于使用和原生Android客户端相同的开发语言书写更新模块,直观明了、更容易检查错误,并且,不再需要Android程序员学习其他语言,如JavaScript 等,大大减低了Android程序员开发更新模块的学习成本,即降低了更新成本。再有,由于软件工程师将Java源代码发布在服务器上,如果下次有更新,只需要在服务器上修改Java源代码即可完成又一次的更新,操作简便。
基于上述原理,本发明提供了一种Android应用客户端的更新方法,如图2所示,其中,包括以下步骤:
步骤S1,从服务器中获取应用客户端的更新模块的更新文件,其中,所述更新文件为采用与所述应用的原生开发语言编写;
步骤S2,解析所述更新文件,生成相应的具有新的参数值的类对象;
步骤S3,将所述具有新的参数值的类对象赋值给应用客户端中相应的类对象引用,从而更新所述应用客户端。
具体更新流程如图3所示:
步骤S1a,客户端从服务器中获取所述App客户端的更新模块的 Java源代码。
步骤S2a,客户端通过Java编译引擎编译所述Java源代码,生成 class文件;
步骤S3a,客户端通过DEX转换生成器将所述class文件转换成DEX 文件,并存放到本地;
步骤S4a,客户端载入所述DEX文件,获取可更新模块的类;
步骤S5a,以所述App客户端中相应的下上文对象作为参数,创建更新模块的类对象;
步骤S6a,初始化所述更新模块的类对象;
步骤S7a,所述客户端将初始化后得到的类对象的具体参数值,赋值给App客户端中对应的原类对象,从而更新所述App客户端。
在上述步骤S 1a中,所述客户端通过客户端内置的检查下载器按照以下两种方式中的任何一种从服务器中获取所述App客户端更新模块的 Java源代码:
客户端通过客户端内置的检查下载器建立并保持与服务器的网络连接,当服务器发布了更新模块时,服务器向所述Android应用客户端发送通知,Android应用客户端接收到该通知后,检查下载器会负责下载Java源代码。
或者在Android App客户端初始化时候,或者在Android设备的网络状态变为可连接状态时,检查下载器会主动去连接服务器,从服务器获取信息并判断是否有应用更新模块,如果有,则从服务器下载更新模块的Java源代码。
通过上述步骤S 1a可知,企业软件工程师将编写好的更新模块发布到服务器后,App客户端可以在第一时间得到具有更新模块的消息,并同时将下载所述更新模块的更新文件,因而可以进行实时更新,并且不需要打断用户对该应用的正常使用。
在步骤S4a中,所述App客户端通过类装载器(Dex Class Loader) 载入所述DEX文件,通过调用Dex Class Loader的loadClass函数时传入的参数得到可更新模块类的类名,从而得知当前可更新模块的类。
在步骤S 5a中,所述App客户端中相应的下上文对象可以为全局上下文(Application Context)对象或单个界面上下文(Activity Context) 对象,具体选择哪一种,主要依据当前的更新模块,例如,当更新模块是一个全局功能模块,则需要传入Application Context对象来创建该可更新模块的类对象。
创建了类对象后,通过步骤S6a,初始化所述更新模块的类对象,使所述的类对象具有更新模块的具体参数值,在步骤S7a,将具有了新的参数值的类对象赋值给应用中的对应的类引用,也就是说,用新的类对象替换原来的类对象,从而达到更新所述App客户端的目的。
由于所述更新可能会导致应用的主界面发生变化,所以,还需查询所述服务器是否有界面布局XML更新文件,如果有,下载所述界面布局 XML更新文件;通过解析所述界面布局XML更新文件,生成界面类对象;类似地,将具有新的参数值的界面类对象赋值给原来的界面类对象,从而更新应用的主界面。
由于更新模块采用Java源代码,因而可以访问所有已存在的Java 类、Android公开类和Android App客户端自身添加的类,实现了无缝集成。并且,API(ApplicationProgramming Interface,应用程序编程接口)兼容性好,拥有和原生应用一样的API兼容性。
另外,由于软件工程师在发布更新模块之前,将所述编写的文件进行加密,用以保证更新文件的安全。因而本发明在上述过程中,还包括解密的过程。
具体地,所述Android App客户端的更新方法的一个具体实施例的流程如图4所示。
步骤S1b,Android App客户端初始化。
步骤S2b,检查企业服务器中是否要与所述应用相关的更新模块,如果有,转到步骤S3b;如果没有,转到步骤S7b。
步骤S3b,下载所述更新模块的Java源代码。
步骤S4b,解密所述Java源代码文件,例如当所述Java源代码文件使用不对称加密算法和私钥加密时,通过使用对应的不对称解密算法和公钥解密,得于原始的Java源代码。
步骤S5b,使用Groovy框架的Java编译器编译Java源代码,得到 class文件。
步骤S6b,DEX转换生成器使用DX工具类库,将Java class文件转换成DEX文件,并存在本地存储器,跳转至步骤S8b。
步骤S7b,查看本地存储器内是否存在可更新模块的DEX文件,如果有,则执行步骤S8b,如果有,则返回步骤S2b,重新进行获取可更新模块的步骤。
步骤S8b,通过Dex Class Loader从本地存储器中载入所述DEX文件,并获知当前可更新模块的类。
步骤S9b,以所述App客户端中相应的下上文对象作为参数,创建可更新模块的类对象;
步骤S10b,初始化所述类对象,并得到初始化的执行结果。所述执行结果为可能是一个界面类对象,也可能是一个算法类对象,也可能是一个Android服务类对象。
步骤S11b,检查服务器上是否有界面布局XML文件的更新,如果有,执行步骤S12b,如果没有,跳到步骤S13b。
步骤S12b,下载所述界面布局XML文件,解析并生成界面类对象。
步骤S13b,根据初始化所述类对象的执行结果赋值给App客户端的对应对象,使所述客户端具有新的功能或新的行为,从而达到更新所述客户端的目的。
本发明还提供了一种应用客户端的更新系统,其原理框图如图1所示,包括客户端1和服务器2。其中,关于客户端1,如图5所示,所述客户端1包括更新信息获取模块11、解析模块12和赋值模块13。其中,更新信息获取模块11用于从所述服务器获取所述应用客户端的更新模块的更新文件;所述解析模块12用于解析所述更新文件,得到具有新参数值的类对象;所述赋值模块13用于将所述类对象赋值给所述应用客户端中对应的类对象引用,从而更新所述应用客户端1。
具体地,针对Android App客户端,所述解析模块12如图6所示,包括Java编译引擎121、DEX转换生成器122和类对象生成单元123,其中,类对象生成单元包括类装载器1231、类对象创建单元1232和初始化单元1233。
其中,所述Java编译引擎121与所述更新信息获取模块11相连接,用于编译所述Java源代码,生成class文件。所述DEX转换生成器122 与所述Java编译引擎121相连接,用于将所述class文件转换成DEX 文件,并存放到本地,如本地存储器。
所述类装载器1231用于从本地载入所述DEX文件,并获取可更新模块类的类名。所述类对象创建单元1232与所述类装载器1231相连接,用于根据所述类名,以与所述App客户端中相应的下上文对象作为参数,创建可更新模块的类对象。所述初始化单元1233与所述类对象创建单元1232相连接,用于初始化所述更新模块的类对象,使所述类对象具有新的参数值。
所述更新信息获取模块11如图7所示,包括网络连接单元110、查询单元111和下载单元112。其中,所述网络连接单元110用于建立并保持与所述服务器2的网络连接。所述查询单元111用于查询所述服务器2或本地存储器15,确定是否有可更新模块。所述下载单元112与所述服务器2连接,根据从所述服务器2中得到的更新模块信息,下载相应更新模块的Java源代码,并存储到本地存储器15中,从而提供给所述Java编译引擎121。
另外,由于软件工程师3将其编写的Java源代码文件和界面布局 XML更新文件在加密后发布到服务器2中,因此,所述App客户端1还包括解密模块,用于解密从所述服务器获取的所述App客户端的更新模块的Java源代码,或界面布局XML更新文件,解密后存储到本地存储器中。
为了解析所述界面布局XML更新文件,所述解析模块还包括界面布局解析单元,用于解析所述界面布局XML更新文件,生成界面类对象,并将所述界面类对象的参数值发送给所述赋值模块。
所述Android App客户端一个具体实施例如图8所示。所述客户端包括更新信息获取模块11、解密模块14、解析模块12和赋值模块13。其中,与前述实施例不同的是,本实施例中增加了解密模块14和界面布局解析单元124。更新信息获取模块11与服务器2相连接,从所述服务器下载更新模块的Java源代码文件,或界面布局XML更新文件,通过所述解密模块14对所述两种文件进行解密,分别得到对应的更新文件的原始文件。根据获取的更新文件不同,分别将解密后的更新文件发送到 Java编译引擎121和界面布局解析单元124。分别进行Java更新文件和 XML更新文件的解析,得到对应的具有新的参数值的类对象,分别通过赋值模块13进行赋值,从而达到对客户端某些功能或其主界面的更新。
本实施例使用Android平台原生开发语言Java来开发可更新的 Android客户端的方案,从而减低Android程序员开发可更新模块的学习成本。同时它应具有良好的动态性和较高的正确性,以提高Android 客户端软件的更新功能的实时性、正确性和兼容性。
为了实现前面所述的更新方法,本发明提供了一种终端设备,其一实施例如图9所示。所述App客户端安装在所述终端设备中,其中,所述终端设备包括:网络接入单元400,数据接口100,中央处理器200 和存储器300。其中,所述网络接入单元400用于接入无线网络,为所述Android设备提供网络环境。所述数据接口100通过无线网络与服务器进行信息交互,获取服务器中的更新文件。所述中央处理器200接收并处理所述更新文件,更新相应的App客户端。所述存储器用于存储处理过程中的各种数据及指令。
例如,所述网络接入单元400支持各种无线网络和移动网络的接入,例如,蓝牙、WLAN(Wireless Local Area Network)、中国移动运营商提供的移动网络等。通常,需要用户在所述Android设备中进行相关设置,从而使Android设备可以进行网络通信。
中央处理器200按照以下配置的指令处理所述更新文件,更新相应的App客户端:
从服务器中获取应用客户端的更新模块的更新文件,其中,所述更新文件为采用与所述应用的原生开发语言编写;
解析所述更新文件,生成相应的具有新的参数值的类对象;
将所述具有新的参数值的类对象赋值给应用客户端中相应的类对象引用,从而更新所述应用客户端。
对于Android设备,所述更新文件为应用客户端更新模块的Java 源代码。其处理器的配置如下:
从服务器中获取所述App客户端的可更新模块的Java源代码;
调用Java编译引擎编译所述Java源代码,生成class文件;
控制DEX转换生成器将所述class文件转换成DEX文件,并存放到存储器;
载入所述DEX文件,获取可更新模块的类;
以所述App客户端中相应的下上文对象作为参数,创建可更新模块的类对象;
初始化所述更新模块的类对象;
将初始化后得到的类对象的具体参数值,赋值给App客户端中对应的原类对象,从而更新所述App客户端。
具体地,当有更新文件后,中央处理器按照上述指令,控制上述更新系统中的解密模块14、Java编译引擎121、DEX转换生成器122、解析模块12、界面布局解析单元124和赋值模块13等的有序执行,从而达到更新所述App客户端的目的。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种应用客户端的更新方法,其中,包括以下步骤:
从服务器中获取应用客户端的更新模块的更新文件,其中,所述更新文件为采用与所述应用客户端所在终端相同的原生开发语言编写;
解析所述更新文件,生成相应的具有新的参数值的类对象;
将所述具有新的参数值的类对象赋值给应用客户端中相应的类对象引用,通过新的类对象替换原来的类对象,从而更新所述应用客户端,
其中,所述应用客户端基于Android平台,所述原生开发语言为Java,
当所述更新文件为应用客户端更新模块的Java源代码时,所述解析所述更新文件,生成相应的具有新的参数值的类对象的步骤包括:
通过Java编译引擎编译所述Java源代码,生成class文件;
通过DEX转换生成器将所述class文件转换成DEX文件;
通过所述DEX文件获取更新模块的类名称;
以所述应用客户端中与所述类相应的下上文对象作为参数,创建更新模块的类对象;
初始化所述类对象,使所述类对象具有新的参数值。
2.如权利要求1所述的应用客户端的更新方法,其中,所述获取更新模块的类名称的步骤包括:
所述应用客户端通过类装载器载入所述DEX文件;
通过调用所述类装载器的loadClass函数时传入的参数得到更新模块类的类名称。
3.如权利要求2所述的应用客户端的更新方法,其中,在通过DEX转换生成器将所述class文件转换成DEX文件后,将所述DEX文件存入本地存储器;
在服务器中没有更新模块时,所述应用客户端查询本地是否有更新模块的DEX文件包,如果有,通过类装载器从本地载入所述DEX文件。
4.如权利要求1所述的应用客户端的更新方法,其中,所述下上文对象为全局上下文对象或单个界面上下文对象。
5.如权利要求1所述的应用客户端的更新方法,其中,所述从服务器中获取应用客户端的更新模块的更新文件步骤包括:
所述应用客户端建立并保持与所述服务器的网络连接;
当服务器中具有更新模块时,所述服务器向所述应用客户端发送通知;
所述应用客户端访问所述服务器,下载相应更新模块的更新文件;
或
所述应用客户端建立并保持与所述服务器的网络连接;
所述应用客户端查询所述服务器,查询是否有更新模块,如果有,从所述服务器下载相应更新模块的更新文件。
6.如权利要求1-5任一所述的应用客户端的更新方法,其中,所述服务器中的更新模块的更新文件被加密后存储在所述服务器中;
当所述应用客户端下载所述更新模块的更新文件后,对所述更新文件解密,得到原始的更新文件。
7.一种应用客户端的更新系统,包括应用客户端和服务器,其中,所述应用客户端包括:
更新信息获取模块,用于从所述服务器获取所述应用客户端的更新模块的更新文件;
解析模块,用于解析所述更新文件,得到具有新参数值的类对象;和
赋值模块,用于将所述类对象赋值给所述应用客户端中对应的类对象引用,通过新的类对象替换原来的类对象,从而更新所述应用客户端,
其中,所述解析模块包括:
Java编译引擎,用于编译由Java源代码编写的更新文件,生成class文件;和
DEX转换生成器,用于将所述class文件转换成DEX文件存放到本地;
类装载器,用于从本地载入所述DEX文件,并获取更新模块类的类名;
类对象创建单元,用于根据所述类名,以与所述应用客户端中相应的下上文对象作为参数,创建可更新模块的类对象;
初始化单元,用于初始化所述更新模块的类对象,得到具有新参数值的类对象。
8.如权利要求7所述的应用客户端的更新系统,其中,所述更新信息获取模块包括:
网络连接单元,用于建立并保持与所述服务器的网络连接;
查询单元,用于查询所述服务器或本地存储器,确定是否有更新模块或DEX文件;和
下载单元,用于根据从所述服务器中得到的更新模块信息,下载相应更新模块的Java源代码。
9.如权利要求7所述的应用客户端的更新系统,其中,还包括解密模块,用于解密从所述服务器获取的所述应用客户端的更新文件。
10.一种实现权利要求1-6任一所述更新方法的终端设备,其中,包括:
网络接入单元,用于接入无线网络;
数据接口,用于通过无线网络从相应服务器中获取应用客户端的更新文件;
存储器,用于存储所述更新文件、处理过程中的数据及指令;和
处理器,按照以下的配置处理所述更新文件,更新相应的应用客户端:
其中,所述应用客户端基于Android平台,所述原生开发语言为Java,
当所述更新文件为应用客户端更新模块的Java源代码时,所述解析所述更新文件,生成相应的具有新的参数值的类对象的步骤包括:
通过Java编译引擎编译所述Java源代码,生成class文件;
通过DEX转换生成器将所述class文件转换成DEX文件;
通过所述DEX文件获取更新模块的类名称;
以所述应用客户端中与所述类相应的下上文对象作为参数,创建更新模块的类对象;
初始化所述类对象,使所述类对象具有新的参数值。
11.如权利要求10所述的终端设备,其中,当所述终端设备为Android设备、所述更新文件为应用客户端更新模块的Java源代码时,所述处理器还通过以下配置进行解析所述更新文件:
通过Java编译引擎编译所述Java源代码,生成class文件;
通过DEX转换生成器将所述class文件转换成DEX文件,并存放到本地;
获取更新模块的类名称;
以所述应用客户端中与所述类相应的下上文对象作为参数,创建更新模块的类对象;
初始化所述类对象,使所述类对象具有新的参数值。
12.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如权利要求1至6中任一项所述的应用客户端的更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610417487.2A CN107508846B (zh) | 2016-06-14 | 2016-06-14 | 应用客户端的更新方法和系统及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610417487.2A CN107508846B (zh) | 2016-06-14 | 2016-06-14 | 应用客户端的更新方法和系统及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107508846A CN107508846A (zh) | 2017-12-22 |
CN107508846B true CN107508846B (zh) | 2021-02-26 |
Family
ID=60679113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610417487.2A Active CN107508846B (zh) | 2016-06-14 | 2016-06-14 | 应用客户端的更新方法和系统及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107508846B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110351323A (zh) * | 2018-04-08 | 2019-10-18 | 北京京东尚科信息技术有限公司 | 一种应用系统的参数管理方法和装置 |
CN110187910B (zh) * | 2019-05-30 | 2023-09-05 | 腾讯科技(上海)有限公司 | 一种热更新方法、装置、设备及计算机可读存储介质 |
CN110995793B (zh) * | 2019-11-19 | 2022-07-05 | 北京奇艺世纪科技有限公司 | 一种信息流控件更新系统、方法和装置 |
CN111694586A (zh) * | 2020-06-05 | 2020-09-22 | 平安科技(深圳)有限公司 | 程序初始化方法、程序初始化装置、终端设备及存储介质 |
CN113282328A (zh) * | 2021-07-22 | 2021-08-20 | 杭州涂鸦信息技术有限公司 | 应用程序更新方法、计算机设备及计算机存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622227A (zh) * | 2011-09-13 | 2012-08-01 | 北京科技大学 | 一种支持动态配置的构件模型及构件工厂 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100489778C (zh) * | 2007-11-22 | 2009-05-20 | 上海交通大学 | Java程序可动态更新化实现方法 |
CN101771762B (zh) * | 2009-01-06 | 2012-03-21 | 北京邮电大学 | 业务系统中业务动态加载系统及方法 |
CN102141919B (zh) * | 2010-01-28 | 2013-03-13 | 北京邮电大学 | 模块化java应用软件在线更新系统及方法 |
CN102402427B (zh) * | 2010-09-09 | 2015-09-02 | 阿里巴巴集团控股有限公司 | 一种Java应用程序的更新方法及装置 |
CN102707977A (zh) * | 2012-05-17 | 2012-10-03 | 江苏中科梦兰电子科技有限公司 | 一种基于Android应用软件的增量升级方法 |
US10127023B2 (en) * | 2013-09-20 | 2018-11-13 | Oracle International Corporation | Computer-aided development of native mobile application code |
CN103701930A (zh) * | 2014-01-07 | 2014-04-02 | 浙江大学 | 一种移动应用程序的实时更新方法及系统 |
CN104123168B (zh) * | 2014-08-07 | 2018-01-19 | 广州猎豹网络科技有限公司 | 一种应用升级方法及装置 |
CN104156215B (zh) * | 2014-08-14 | 2019-03-01 | 北京奇虎科技有限公司 | 基于移动操作系统获取应用程序信息的方法及装置 |
US9971611B2 (en) * | 2014-10-31 | 2018-05-15 | Cisco Technology, Inc. | Monitoring a mobile device application |
-
2016
- 2016-06-14 CN CN201610417487.2A patent/CN107508846B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622227A (zh) * | 2011-09-13 | 2012-08-01 | 北京科技大学 | 一种支持动态配置的构件模型及构件工厂 |
Also Published As
Publication number | Publication date |
---|---|
CN107508846A (zh) | 2017-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107508846B (zh) | 应用客户端的更新方法和系统及终端设备 | |
US11868231B2 (en) | System and method for evaluating code by a hybrid of local and cloud-based computers | |
US10338907B2 (en) | Cloud service framework for toolkit deployment | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
US10209968B2 (en) | Application compiling | |
US20130167123A1 (en) | Application debugging | |
CN110333868B (zh) | 用于生成子应用的安装包的方法和系统 | |
Wittern et al. | Opportunities in software engineering research for web API consumption | |
CN111026439B (zh) | 应用程序的兼容方法、装置、设备及计算机存储介质 | |
CN113568680B (zh) | 应用程序的动态链接库保护方法、装置、设备及介质 | |
CN109284106A (zh) | 业务规则的发布管理方法、电子装置及可读存储介质 | |
US9880943B2 (en) | Cache management in a multi-threaded environment | |
CN103051711B (zh) | 基于spice协议的嵌入式云终端系统的构建方法 | |
CN110058861B (zh) | 源码处理方法及装置、存储介质、电子设备 | |
CN112965731B (zh) | 基于Tinker的Flutter热更新方法、装置、设备及存储介质 | |
CN107871066B (zh) | 基于安卓系统的代码编译方法及装置 | |
CN111610990B (zh) | 一种应用程序升级的方法、装置和相关系统 | |
KR102272635B1 (ko) | 대용량 애플리케이션 변환 장치 및 방법 | |
CN112416395A (zh) | 一种热修复更新方法和装置 | |
CN111610982B (zh) | 一种应用程序开发的方法、装置和相关系统 | |
CN108595169B (zh) | 一种可视化编程方法、云端服务器及存储介质 | |
US20230236828A1 (en) | Build-independent software framework for creating custom adapters | |
KR20130020135A (ko) | 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법 | |
CN106775900B (zh) | 应用浏览器的调用方法和系统 | |
CN113779791B (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 |