[发明专利]一种应用程序的加载方法、装置和移动终端有效
申请号: | 201510142323.9 | 申请日: | 2015-03-27 |
公开(公告)号: | CN104731622A | 公开(公告)日: | 2015-06-24 |
发明(设计)人: | 宋照春;张炅轩;姚彤 | 申请(专利权)人: | 北京奇虎科技有限公司;奇智软件(北京)有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京智汇东方知识产权代理事务所(普通合伙) 11391 | 代理人: | 康正德;范晓斌 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 应用程序 加载 方法 装置 移动 终端 | ||
技术领域
本发明涉及计算机领域,具体涉及一种应用程序的加载方法、装置和移动终端。
背景技术
目前,Android(安卓)操作系统在移动终端领域得到了广泛的应用,大量的手机、平板电脑采用Android操作系统。在Android操作系统中,应用程序通过Java编译,并且对每个应用程序提供了独立的Java虚拟机支持其运行,同时提供了大量的对象供虚拟机使用。
其中,ClassLoader对象为其中最重要的一个对象,其主要对类的请求提供服务,用以在应用程序启动或运行时完成dex文件以及资源等文件的加载。但是由于Android操作系统采用了较高的安全机制,ClassLoader对象对应用程序的限制也很明显。
例如:ClassLoader对象提供的类只支持对应用程序的dex文件或资源文件的加载,却不能支持对于应用程序下的插件的dex文件或资源文件的加载,导致开发者对于插件的开发受限制很大。
为了能够轻松灵活的开发Android下的应用程序,开发者希望能够重写Android下的ClassLoader对象,也即自定义ClassLoader对象,以实现开发者希望的功能。但是目前的情况是,在应用程序启动时,Android会默认使用自身的ClassLoader对象,而无法通过自定义的ClassLoader对象去加载应用程序。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种应用程序的加载方法、相应地装置和移动终端。
依据本发明的一个方面,提供一种应用程序的加载方法,包括:
当应用程序的进程启动时,获取操作系统为所述应用程序建立的PackageInfo对象;
获取所述PackageInfo对象中的mClassLoader字段,所述mClassLoader字段用于存储指向ClassLoader对象的地址;
修改所述mClassLoader字段中的地址,使其指向自定义的ClassLoader对象地址;
通过所述自定义的ClassLoader对象加载所述应用程序。
可选地,当应用程序的进程启动时,还包括:
重写当所述应用程序的进程启动时调用的指定方法函数,使所述调用的指定方法函数触发获取操作系统进程为所述应用程序建立的PackageInfo对象的操作。
可选地,所述获取操作系统为所述应用程序建立的PackageInfo对象,包括:
获取所述应用程序的Application对象;
获取所述Application对象中的mBase对象;
读取所述mBase对象中的mPackageInfo字段,通过所述mPackageInfo字段获取所述操作系统为所述应用程序建立的PackageInfo对象;
其中,所述mPackageInfo字段中存储有所述PackageInfo对象的地址。
可选地,在获取所述PackageInfo对象中的mClassLoader字段之前,所述方法还包括:
生成自定义的ClassLoader对象。
可选地,所述生成自定义的ClassLoader对象,包括:
重写所述ClassLoader对象下的方法函数,且使所述自定义的ClassLoader对象继承自所述操作系统的ClassLoader对象。
依据本发明的另一个方面,提供一种应用程序的加载装置,包括:
对象获取模块,适于当应用程序的进程启动时,获取操作系统为所述应用程序建立的PackageInfo对象;
地址获取模块,适于获取所述PackageInfo对象中的mClassLoader字段,所述mClassLoader字段用于存储指向ClassLoader对象的地址;
替换模块,适于修改所述mClassLoader字段中的地址,使其指向自定义的ClassLoader对象地址;
加载模块,使用通过所述自定义的ClassLoader对象加载所述应用程序。
可选地,所述装置还包括:
调用模块,适于当应用程序的进程启动时,重写当所述应用程序的进程启动时调用的指定方法函数,使所述指定方法函数触发获取操作系统进程为所述应用程序建立的PackageInfo对象的操作。
可选地,所述对象获取模块,包括:
第一对象获取单元,适于获取所述应用程序的Application对象;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司;奇智软件(北京)有限公司;,未经北京奇虎科技有限公司;奇智软件(北京)有限公司;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510142323.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:操作系统部署方法和系统
- 下一篇:一种固定服务器启动设备的方法