一种应用程序升级的方法及装置制造方法

文档序号:6536697阅读:131来源:国知局
一种应用程序升级的方法及装置制造方法
【专利摘要】本发明公开了一种应用程序升级的方法及装置,其中,所述方法包括:获取待升级的应用程序的安装包;从所述安装包中提取指定的组件对象信息;依据所述指定的组件对象信息确定所述应用程序中指定的组件对象;采用所述指定的组件对象信息加载所述指定的组件对象。本发明用以解决程序升级过程繁琐的问题,不需要用户进行升级操作也可完成应用程序的升级,能够快速完成升级,提高用户体验度。
【专利说明】一种应用程序升级的方法及装置
【技术领域】
[0001]本发明涉及数据处理的【技术领域】,具体涉及一种应用程序升级的方法,以及,一种应用程序升级的装置。
【背景技术】
[0002]在具体实现中,应用程序经过一段时间的使用,就会逐步显现出自身的一些漏洞和缺陷,这些漏洞和缺陷无法满足日益发展应用程序的要求,因此应用程序开发商必须定期或者不定期对应用程序本身的漏洞和缺陷进行修复和更正,因此不断产生新的应用程序的安装包,以满足应用程序升级的要求。
[0003]用户要更新应用程序时,需要先下载该应用程序的安装包放到指定位置,再去使用该安装包,通常会弹出系统提示框,用户根据提示进行相应的操作才可以升级该应用程序。另外,由于应用程序的升级是一个持续的过程,所以会不断出现新的安装包,用户也需要不断地进行更新,对于部分用户来说,升级过程比较繁琐,且需要耗费一定的时间,用户的体验效果差。

【发明内容】

[0004]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种应用程序升级的方法,以及,一种应用程序升级的装置。
[0005]依据本发明的一个方面,提供了一种应用程序升级的方法,包括:
[0006]获取待升级的应用程序的安装包;
[0007]从所述安装包中提取指定的组件对象信息;
[0008]依据所述指定的组件对象信息确定所述应用程序中指定的组件对象;
[0009]采用所述指定的组件对象信息加载所述指定的组件对象。
[0010]可选地,所述指定的组件对象信息包括当前类加载器的目录地址,所述应用程序中指定的组件对象包括类加载器;
[0011]所述采用指定的组件对象信息加载所述指定的组件对象的步骤包括:
[0012]采用所述应用程序中的反射对象获取所述应用程序中的原始类加载器的目录地址;
[0013]将原始类加载器的目录地址修改为当前类加载器的目录地址。
[0014]从所述当前类加载器的目录地址加载所述类加载器。
[0015]可选地,所述指定的组件对象信息包括当前应用对象的目录地址,所述应用程序中指定的组件对象包括应用对象;
[0016]所述采用指定的组件对象信息加载所述指定的组件对象的步骤包括:
[0017]采用所述应用程序中的反射对象获取所述应用程序中的原始应用对象的目录地址;
[0018]将原始应用对象的目录地址修改为当前应用对象的目录地址。[0019]从所述当前应用对象的目录地址加载所述应用对象。
[0020]可选地,所述指定的组件对象信息包括当前资源数据的目录地址,所述应用程序中指定的组件对象包括资源数据;
[0021]所述采用指定的组件对象信息加载所述指定的组件对象的步骤包括:
[0022]采用所述应用程序中的反射对象获取所述应用程序中的原始资源数据的目录地址;
[0023]将原始资源数据的目录地址修改为当前资源数据的目录地址。
[0024]从所述当前资源数据的目录地址加载所述资源数据。
[0025]可选地,所述指定的组件对象信息包括当前包管理器的目录地址,所述应用程序中指定的组件对象包括包管理器;
[0026]所述采用指定的组件对象信息加载所述指定的组件对象的步骤包括:
[0027]采用所述应用程序中的反射对象获取所述应用程序中的原始包管理器的目录地址;
[0028]将原始包管理器的目录地址修改为当前包管理器的目录地址。
[0029]从所述当前包管理器的目录地址加载所述包管理器。
[0030]根据本发明的另一方面,提供了一种应用程序升级的装置,包括:
[0031]获取模块,适于获取待升级的应用程序的安装包;
[0032]提取模块,适于从所述安装包中提取指定的组件对象信息;
[0033]确定模块,适于依据所述指定的组件对象信息确定所述应用程序中指定的组件对象;
[0034]加载模块,适于采用所述指定的组件对象信息加载所述指定的组件对象。
[0035]可选地,所述指定的组件对象信息包括当前类加载器的目录地址,所述应用程序中指定的组件对象包括类加载器;
[0036]所述加载模块包括:
[0037]第一地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始类加载器的目录地址;
[0038]第一地址修改子模块,适于将原始类加载器的目录地址修改为当前类加载器的目录地址。
[0039]第一加载子模块,适于从所述当前类加载器的目录地址加载所述类加载器。
[0040]可选地,所述指定的组件对象信息包括当前应用对象的目录地址,所述应用程序中指定的组件对象包括应用对象;
[0041]所述加载模块包括:
[0042]第二地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始应用对象的目录地址;
[0043]第二地址修改子模块,适于将原始应用对象的目录地址修改为当前应用对象的目录地址。
[0044]第二加载子模块,适于从所述当前应用对象的目录地址加载所述应用对象。
[0045]可选地,所述指定的组件对象信息包括当前资源数据的目录地址,所述应用程序中指定的组件对象包括资源数据;[0046]所述加载模块包括:
[0047]第三地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始资源数据的目录地址;
[0048]第三地址修改子模块,适于将原始资源数据的目录地址修改为当前资源数据的目录地址。
[0049]第三加载子模块,适于从所述当前资源数据的目录地址加载所述资源数据。
[0050]可选地,所述指定的组件对象信息包括当前包管理器的目录地址,所述应用程序中指定的组件对象包括包管理器;
[0051]所述加载模块包括:
[0052]第四地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始包管理器的目录地址;
[0053]第四地址修改子模块,适于将原始包管理器的目录地址修改为当前包管理器的目录地址。
[0054]第四加载子模块,适于从所述当前包管理器的目录地址加载所述包管理器。
[0055]根据本发明的一种应用程序升级的方法,以及,一种应用程序升级的装置,可以在获取到应用程序的安装包后,提取按照包中指定的组件对象信息,并根据指定的组件对象信息确定应用程序中的指定组件对象,采用该指定的组件对象信息加载指定的组件对象,打破了 android规定的权限,通过将对象组件由原始的加载地址,重定向到安装包中新的地址来加载组件对象,实现了应用程序的自动升级,由此解决了传统应用程序升级过程繁琐的问题,不需要用户进行升级操作也可完成应用程序的升级,取得了快速完成升级,提高用户体验度的有益效果。
[0056]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【专利附图】

【附图说明】
[0057]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0058]图1示出了根据本发明一个实施例的一种应用程序升级的方法实施例的步骤流程图;
[0059]图2示出了根据本发明一个实施例的一种应用程序升级的装置实施例的结构框图。
【具体实施方式】
[0060]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。[0061]参照图1,示出了根据本发明一个实施例的一种应用程序升级的方法实施例的步骤流程图,具体可以包括如下步骤:
[0062]步骤101,获取待升级的应用程序的安装包;
[0063]在本发明的实施例中,应用程序可以是适用于计算设备的版本或者适用于移动设备的版本。例如,计算设备版本的手机助手应用程序,如PC版的手机助手应用程序,或者,移动设备版本的手机助手应用程序,如Android版的手机助手应用程序。
[0064]在具体实现中,终端设备中安装有很多应用程序,可以包括用户安装的应用程序和系统内置的应用程序。应用程序所在的终端设备可以预设检测机制来检测是否存在新的APK (Android Package,安装包),例如,可以在终端设备安装手机助手或者其他应用程序,用以查询该终端设备有哪些应用程序需要升级。具体地,当手机助手检测到需要升级的应用程序较多时,终端设备侧的手机助手可以将已安装应用的应用程序包名和应用程序版本号以Gzip格式压缩处理,然后通过HTTP请求的形式发送到网络侧服务器,从而获取到经过安全检测中心的审核认证,绿色无毒,安全的APK。采用手机助手获取应用程序APK的方式,可以节省流量,并且更快捷、更方便、更安全地获取网络资源。
[0065]在实际应用中,手机助手可以设置为每隔预定时间间隔检测一次,当检测到网络侧服务器存在新的APK时,通过HTTP请求的形式或者其他方式来获取APK,为了保护获取到的新的APK,方便用户管理或者数据读取,可以将其存储到指定的位置,比如安装到移动设备内存或者移动设备SD卡中,另外,还可以采用智能的方式根据APK的特征(APK的大小)安装到合适的位置。在具体实现中,可以优先考虑将APK存储于SD卡中,方便用户管理,同时不会占用因为移动设备内存,而导致移动设备速度的变慢。例如,可以将APK保存于:sdcard/download/data。
[0066]当然,在实际应用中,也可以是服务器发布有新的APK时,主动将该APK发送给终端设备,本发明实施例对此不作限制。
[0067]步骤102,从所述安装包中提取指定的组件对象信息;
[0068]在实际应用中,可以事先在应用程序中设置相应的配置信息,其中,在所述配置信息中可以设置获取组件对象信息的指示信息,当获取到带升级的应用程序的APK时,依据配置信息从APK中获取指定的组件对象信息。
[0069]步骤103,依据所述指定的组件对象信息确定所述应用程序中指定的组件对象;
[0070]在本发明实施例中,可以从APK中提取指定的组件对象信息,再根据组件对象信息来确定应用程序中需要进行升级的组件对象。
[0071]步骤104,采用所述指定的组件对象信息加载所述指定的组件对象。
[0072]在本发明的一种优选实施例中,所述指定的组件对象信息包括当前类加载器的目录地址,所述应用程序中指定的组件对象可以包括类加载器;
[0073]所述步骤104可以包括如下子步骤:
[0074]子步骤S11,采用所述应用程序中的反射对象获取所述应用程序中的原始类加载器的目录地址;
[0075]子步骤S12,将原始类加载器的目录地址修改为当前类加载器的目录地址。
[0076]子步骤S13,从所述当前类加载器的目录地址加载所述类加载器。
[0077]在本发明实施例中,由于在Android系统中,一些未公开的功能不可以通过API接口直接调用,因此采用JAVA反射机制来调用一些未公开的功能,来实应用程序的升级。具体而言,JAVA反射机制是在应用程序在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为JAVA语言的反射机制。
[0078]当运行应用程序时,首先运行JVM (Java虚拟机),再将应用程序的类加载到JVM里头运行,负责加载应用程序的类的这部分就是类加载器。在本发明实施例中,修改类加载器的目的在于修改应用程序的代码,具体修改的代码可以包括应用程序中的类。采用JAVA反射机制将应用程序中原始类加载器的目录地址修改为新的APK中类加载器的目录地址,当应用程序再次加载时,可以直接从新的类加载器的目录地址加载,修改后的类加载器在应用程序启动时需要加载的类也被修改,那么就可以实现例如应用程序新功能的增加,应用程序中BUG的修改等应用程序的升级。
[0079]在本发明的一种优选实施例中,所述指定的组件对象信息可以包括当前应用对象的目录地址,所述应用程序中指定的组件对象可以包括应用对象;
[0080]所述步骤104可以包括如下子步骤:
[0081]子步骤S21,采用所述应用程序中的反射对象获取所述应用程序中的原始应用对象的目录地址;
[0082]子步骤S22,将原始应用对象的目录地址修改为当前应用对象的目录地址。
[0083]子步骤S23,从所述当前应用对象的目录地址加载所述应用对象。
[0084]在本发明实施例中,修改应用对象的目的在于修改应用程序中的启动逻辑顺序,具体而言,即应用程序中的类的加载顺序。在具体实现中,经过应用程序一段时间的使用,发现应用程序中采用其他顺序来加载类可以更好地使用应用程序,或者,应用程序通过修改类加载器增加了新的功能,可以采用反射机制将应用对象的加载地址修改为新的APK中应用对象的加载地址,当应用程序再次加载时可以直接从新的应用对象的目录地址加载,应用程序中类的启动逻辑顺序就发生了变化,例如,应用程序启动时将启动新增加功能部分。
[0085]在本发明的一种优选实施例中,所述指定的组件对象信息包括当前资源数据的目录地址,所述应用程序中指定的组件对象包括资源数据;
[0086]所述步骤104可以包括如下子步骤:
[0087]子步骤S31,采用所述应用程序中的反射对象获取所述应用程序中的原始资源数据的目录地址;
[0088]子步骤S32,将原始资源数据的目录地址修改为当前资源数据的目录地址。
[0089]子步骤S33,从所述当前资源数据的目录地址加载所述资源数据。
[0090]在具体实现中,所述资源数据可以是图片资源或者是文本资源,例如,主题、壁纸、铃声、软件、音乐、游戏、视频、电子书等等。资源数据具有文件属性信息,其中,文件属性信息包括资源的大小、资源的类型、资源的版本号、资源的标识等等。
[0091]在实际中图片资源或者是文本资源需要经常更新,例如应用程序可能由于新的功能的增加而需相应的增加图标,在本发明实施例中,只需要将应用程序中的图片修改为从新的APK中的图片的中加载,当应用程序再次加载时可以直接从新的图片的目录地址加载,以此完成应用程序中的图片的更新。[0092]在本发明的一种优选实施例中,所述指定的组件对象信息包括当前包管理器的目录地址,所述应用程序中指定的组件对象包括包管理器;
[0093]所述步骤104可以包括如下子步骤:
[0094]子步骤S41,采用所述应用程序中的反射对象获取所述应用程序中的原始包管理器的目录地址;
[0095]子步骤S42,将原始包管理器的目录地址修改为当前包管理器的目录地址。
[0096]子步骤S43,从所述当前包管理器的目录地址加载所述包管理器。
[0097]在具体实现中,还可以对应用程序的包管理器的加载地址进行修改,以说明该应用程序已经实现一定程度上的更新,具体而言,可以将应用程序中的包管理器的目录地址重新定位到APK中包管理器的地址中,当应用程序再次加载时可以直接从新的包管理器的目录地址加载,例如,原本应用程序加载包管理器后显示为9.0版本,重新定位包管理器地址后加载后显不为9.1版本。
[0098]在本发明实施例中采用重定向及反射技术来实现应用程序的自动升级。当获取到新的APK时,获取该APK中指定组件对象的目录地址,并根据所述指定组件的目录地址将应用程序中原始的指定件对象的目录地址修改为新的APK中指定组件对象的目录地址,当应用程序再次加载指定组件对象时,就不再从原始的指定件对象的目录地址进行加载,而是直接从新的APK中指定组件对象的目录地址进行加载,由此解决了传统应用程序升级过程繁琐的问题,不需要用户进行升级操作也可完成应用程序的升级,取得了快速完成升级,提高用户体验度的有益效果。在实际中,还可以采用转发技术来实现应用程序的升级,即当需要从原始的指定件对象的目录地址加载指定的组件对象时,跳转到新的APK的指定组件的目录地址去加载指定的组件对象。
[0099]需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0100]参照图2,示出了根据本发明一个实施例的一种应用程序升级的装置实施例的结构框图,具体可以包括如下模块:
[0101]获取模块201,适于获取待升级的应用程序的安装包;
[0102]提取模块202,适于从所述安装包中提取指定的组件对象信息;
[0103]确定模块203,适于依据所述指定的组件对象信息确定所述应用程序中指定的组件对象;
[0104]加载模块204,适于采用所述指定的组件对象信息加载所述指定的组件对象。
[0105]在本发明的一种优选实施例中,所述指定的组件对象信息包括当前类加载器的目录地址,所述应用程序中指定的组件对象包括类加载器;
[0106]所述加载模块204可以包括:
[0107]第一地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始类加载器的目录地址;
[0108]第一地址修改子模块,适于将原始类加载器的目录地址修改为当前类加载器的目录地址。[0109]第一加载子模块,适于从所述当前类加载器的目录地址加载所述类加载器。
[0110]在本发明的一种优选实施例中,所述指定的组件对象信息包括当前应用对象的目录地址,所述应用程序中指定的组件对象包括应用对象;
[0111]所述加载模块204可以包括:
[0112]第二地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始应用对象的目录地址;
[0113]第二地址修改子模块,适于将原始应用对象的目录地址修改为当前应用对象的目录地址。
[0114]第二加载子模块,适于从所述当前应用对象的目录地址加载所述应用对象。
[0115]在本发明的一种优选实施例中,所述指定的组件对象信息包括当前资源数据的目录地址,所述应用程序中指定的组件对象包括资源数据;
[0116]所述加载模块204可以包括:
[0117]第三地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始资源数据的目录地址;
[0118]第三地址修改子模块,适于将原始资源数据的目录地址修改为当前资源数据的目录地址。
[0119]第三加载子模块,适于从所述当前资源数据的目录地址加载所述资源数据。
[0120]在本发明的一种优选实施例中,所述指定的组件对象信息包括当前包管理器的目录地址,所述应用程序中指定的组件对象包括包管理器;
[0121 ] 所述加载模块204可以包括:
[0122]第四地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始包管理器的目录地址;
[0123]第四地址修改子模块,适于将原始包管理器的目录地址修改为当前包管理器的目录地址。
[0124]第四加载子模块,适于从所述当前包管理器的目录地址加载所述包管理器。
[0125]对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0126]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0127]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0128]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0129]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0130]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0131 ] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的应用程序模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP )来实现根据本发明实施例的应用程序升级设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0132]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0133]本发明公开了 Al、一种应用程序升级的方法,包括:
[0134]获取待升级的应用程序的安装包;
[0135]从所述安装包中提取指定的组件对象信息;
[0136]依据所述指定的组件对象信息确定所述应用程序中指定的组件对象;
[0137]采用所述指定的组件对象信息加载所述指定的组件对象。
[0138]A2、如权利要求Al所述的方法,其特征在于,所述指定的组件对象信息包括当前类加载器的目录地址,所述应用程序中指定的组件对象包括类加载器;
[0139]所述采用指定的组件对象信息加载所述指定的组件对象的步骤包括:[0140]采用所述应用程序中的反射对象获取所述应用程序中的原始类加载器的目录地址;
[0141]将原始类加载器的目录地址修改为当前类加载器的目录地址。
[0142]从所述当前类加载器的目录地址加载所述类加载器。
[0143]A3、如权利要求Al或A2所述的方法,其特征在于,所述指定的组件对象信息包括当前应用对象的目录地址,所述应用程序中指定的组件对象包括应用对象;
[0144]所述采用指定的组件对象信息加载所述指定的组件对象的步骤包括:
[0145]采用所述应用程序中的反射对象获取所述应用程序中的原始应用对象的目录地址;
[0146]将原始应用对象的目录地址修改为当前应用对象的目录地址。
[0147]从所述当前应用对象的目录地址加载所述应用对象。
[0148]A4、如权利要求A3所述的方法,其特征在于,所述指定的组件对象信息包括当前资源数据的目录地址,所述应用程序中指定的组件对象包括资源数据;
[0149]所述采用指定的组件对象信息加载所述指定的组件对象的步骤包括:
[0150]采用所述应用程序中的反射对象获取所述应用程序中的原始资源数据的目录地址;
[0151 ]将原始资源数据的目录地址修改为当前资源数据的目录地址。
[0152]从所述当前资源数据的目录地址加载所述资源数据。
[0153]A5、如权利要求A4所述的方法,其特征在于,所述指定的组件对象信息包括当前包管理器的目录地址,所述应用程序中指定的组件对象包括包管理器;
[0154]所述采用指定的组件对象信息加载所述指定的组件对象的步骤包括:
[0155]采用所述应用程序中的反射对象获取所述应用程序中的原始包管理器的目录地址;
[0156]将原始包管理器的目录地址修改为当前包管理器的目录地址。
[0157]从所述当前包管理器的目录地址加载所述包管理器。
[0158]本发明还公开了 B6、一种应用程序升级的装置,包括:
[0159]获取模块,适于获取待升级的应用程序的安装包;
[0160]提取模块,适于从所述安装包中提取指定的组件对象信息;
[0161]确定模块,适于依据所述指定的组件对象信息确定所述应用程序中指定的组件对象;
[0162]加载模块,适于采用所述指定的组件对象信息加载所述指定的组件对象。
[0163]B7、如权利要求B6所述的装置,其特征在于,所述指定的组件对象信息包括当前类加载器的目录地址,所述应用程序中指定的组件对象包括类加载器;
[0164]所述加载模块包括:
[0165]第一地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始类加载器的目录地址;
[0166]第一地址修改子模块,适于将原始类加载器的目录地址修改为当前类加载器的目录地址。
[0167]第一加载子模块,适于从所述当前类加载器的目录地址加载所述类加载器。[0168]B8、如权利要求B6或B7所述的装置,其特征在于,所述指定的组件对象信息包括当前应用对象的目录地址,所述应用程序中指定的组件对象包括应用对象;
[0169]所述加载模块包括:
[0170]第二地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始应用对象的目录地址;
[0171]第二地址修改子模块,适于将原始应用对象的目录地址修改为当前应用对象的目录地址。
[0172]第二加载子模块,适于从所述当前应用对象的目录地址加载所述应用对象。
[0173]B9、如权利要求B8所述的装置,其特征在于,所述指定的组件对象信息包括当前资源数据的目录地址,所述应用程序中指定的组件对象包括资源数据;
[0174]所述加载模块包括:
[0175]第三地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始资源数据的目录地址;
[0176]第三地址修改子模块,适于将原始资源数据的目录地址修改为当前资源数据的目录地址。
[0177]第三加载子模块,适于从所述当前资源数据的目录地址加载所述资源数据。
[0178]B10、如权利要求B9所述的装置,其特征在于,所述指定的组件对象信息包括当前包管理器的目录地址,所述应用程序中指定的组件对象包括包管理器;
[0179]所述加载模块包括:
[0180]第四地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始包管理器的目录地址;
[0181]第四地址修改子模块,适于将原始包管理器的目录地址修改为当前包管理器的目录地址。
[0182]第四加载子模块,适于从所述当前包管理器的目录地址加载所述包管理器。
【权利要求】
1.一种应用程序升级的方法,包括: 获取待升级的应用程序的安装包; 从所述安装包中提取指定的组件对象信息; 依据所述指定的组件对象信息确定所述应用程序中指定的组件对象; 采用所述指定的组件对象信息加载所述指定的组件对象。
2.如权利要求1所述的方法,其特征在于,所述指定的组件对象信息包括当前类加载器的目录地址,所述应用程序中指定的组件对象包括类加载器; 所述采用指定的组件对象信息加载所述指定的组件对象的步骤包括: 采用所述应用程序中的反射对象获取所述应用程序中的原始类加载器的目录地址; 将原始类加载器的目录地址修改为当前类加载器的目录地址。 从所述当前类加载器的目录地址加载所述类加载器。
3.如权利要求1或2所述的方法,其特征在于,所述指定的组件对象信息包括当前应用对象的目录地址,所述应用程序中指定的组件对象包括应用对象; 所述采用指定的组件 对象信息加载所述指定的组件对象的步骤包括: 采用所述应用程序中的反射对象获取所述应用程序中的原始应用对象的目录地址; 将原始应用对象的目录地址修改为当前应用对象的目录地址。 从所述当前应用对象的目录地址加载所述应用对象。
4.如权利要求3所述的方法,其特征在于,所述指定的组件对象信息包括当前资源数据的目录地址,所述应用程序中指定的组件对象包括资源数据; 所述采用指定的组件对象信息加载所述指定的组件对象的步骤包括: 采用所述应用程序中的反射对象获取所述应用程序中的原始资源数据的目录地址; 将原始资源数据的目录地址修改为当前资源数据的目录地址。 从所述当前资源数据的目录地址加载所述资源数据。
5.如权利要求4所述的方法,其特征在于,所述指定的组件对象信息包括当前包管理器的目录地址,所述应用程序中指定的组件对象包括包管理器; 所述采用指定的组件对象信息加载所述指定的组件对象的步骤包括: 采用所述应用程序中的反射对象获取所述应用程序中的原始包管理器的目录地址; 将原始包管理器的目录地址修改为当前包管理器的目录地址。 从所述当前包管理器的目录地址加载所述包管理器。
6.一种应用程序升级的装置,包括: 获取模块,适于获取待升级的应用程序的安装包; 提取模块,适于从所述安装包中提取指定的组件对象信息; 确定模块,适于依据所述指定的组件对象信息确定所述应用程序中指定的组件对象; 加载模块,适于采用所述指定的组件对象信息加载所述指定的组件对象。
7.如权利要求6所述的装置,其特征在于,所述指定的组件对象信息包括当前类加载器的目录地址,所述应用程序中指定的组件对象包括类加载器; 所述加载模块包括: 第一地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始类加载器的目录地址;第一地址修改子模块,适于将原始类加载器的目录地址修改为当前类加载器的目录地址。 第一加载子模块,适于从所述当前类加载器的目录地址加载所述类加载器。
8.如权利要求6或7所述的装置,其特征在于,所述指定的组件对象信息包括当前应用对象的目录地址,所述应用程序中指定的组件对象包括应用对象; 所述加载模块包括: 第二地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始应用对象的目录地址; 第二地址修改子模块,适于将原始应用对象的目录地址修改为当前应用对象的目录地址。 第二加载子模块,适于从所述当前应用对象的目录地址加载所述应用对象。
9.如权利要求8所述的装置,其特征在于,所述指定的组件对象信息包括当前资源数据的目录地址,所述应用程序中指定的组件对象包括资源数据; 所述加载模块包括: 第三地址获取子模块 ,适于采用所述应用程序中的反射对象获取所述应用程序中的原始资源数据的目录地址; 第三地址修改子模块,适于将原始资源数据的目录地址修改为当前资源数据的目录地址。 第三加载子模块,适于从所述当前资源数据的目录地址加载所述资源数据。
10.如权利要求9所述的装置,其特征在于,所述指定的组件对象信息包括当前包管理器的目录地址,所述应用程序中指定的组件对象包括包管理器; 所述加载模块包括: 第四地址获取子模块,适于采用所述应用程序中的反射对象获取所述应用程序中的原始包管理器的目录地址; 第四地址修改子模块,适于将原始包管理器的目录地址修改为当前包管理器的目录地址。 第四加载子模块,适于从所述当前包管理器的目录地址加载所述包管理器。
【文档编号】G06F9/445GK103793248SQ201410033251
【公开日】2014年5月14日 申请日期:2014年1月23日 优先权日:2014年1月23日
【发明者】蒋又新 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1