CN104239054A - 一种基于安卓系统的插件加载方法及其系统 - Google Patents
一种基于安卓系统的插件加载方法及其系统 Download PDFInfo
- Publication number
- CN104239054A CN104239054A CN201410467050.0A CN201410467050A CN104239054A CN 104239054 A CN104239054 A CN 104239054A CN 201410467050 A CN201410467050 A CN 201410467050A CN 104239054 A CN104239054 A CN 104239054A
- Authority
- CN
- China
- Prior art keywords
- file
- dex
- class
- dex file
- main works
- 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
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于安卓系统的插件加载方法,用以调用在dex文件中定义的四大组件,所述方法包括以下步骤:在主工程中自定义一个加载dex文件的类加载器;将自定义的类加载器通过反射的方式替换系统分配给主工程的类加载器,使得dex文件中的类和主工程本身的类处于同一类空间中,主工程通过反射技术调用dex文件中的代码模块,以正常使用四大组件的方式使用dex代码文件中定义的四大组件,使dex文件中定义的四大组件具备正确的特性。本发明还提供了一种基于安卓系统的插件加载系统。
Description
技术领域
本发明涉及安卓系统插件领域,尤其涉及一种基于安卓系统的插件加载方法及其系统。
背景技术
由于android对于应用的函数量进行了限制,3.0以下最大函数量不能超过48000,3.0以上最大函数量不能超过65535,包括工程中自己编写的代码以及引用外部jar库中的代码。我们需要找到新的方式使用代码,从而绕过android的编译限制。android提供了DexClassLoader,用于加载外部的dex文件,通过反射的方式使用其中的类,但是这种方式无法使用在外部dex文件中定义的四大组件。
发明内容
针对现有技术的不足,本发明的目的在于提供一种基于安卓系统的插件加载方法,以资源方式动态加载dex文件的代码,并且可以正常调用在dex文件中定义的四大组件。
本发明的另外一个目的在于提供一种基于安卓系统的插件加载系统。
为实现上述目的,本发明采用的技术方案如下:一种基于安卓系统的插件加载方法,用以调用在dex文件中定义的四大组件:Activity显示界面、Service服务、Content Provider内容提供者、BroadcastReceiver广播接收器,其特征在于,所述方法包括以下步骤:
在主工程中自定义一个加载dex文件的类加载器,支持以资源方式加载dex文件中的类;
将自定义的类加载器通过反射方式替换系统分配给主工程的类加载器,使得dex文件中的类和主工程本身的类处于同一类空间中;
主工程通过反射技术调用dex文件中的代码模块,以正常使用四大组件的方式使用dex代码文件中定义的四大组件。
进一步,所述dex文件压缩为zip格式的文件。
为实现本发明的另一目的,本发明还采用如下技术方案:一种基于安卓系统的插件加载系统,用以调用在dex文件中定义的四大组件:Activity显示界面、Service服务、Content Provider内容提供者、BroadcastReceiver广播接收器,其特征在于,所述系统包括:
自定义模块,用于在主工程中自定义一个加载dex文件的类加载器,支持以资源方式加载dex文件中的类;
替换模块,将自定义的类加载器通过反射方式替换系统分配给主工程的类加载器,使得dex文件中的类和主工程本身的类处于同一类空间中;
调用模块,主工程通过反射技术调用dex文件中的代码模块,以正常使用四大组件的方式使用dex代码文件中定义的四大组件。
进一步,所述dex文件压缩为zip格式的文件。
相对于现有技术,本发明所述的技术方案通过在主工程中自定义一个加载dex文件的类加载器,支持以资源方式加载dex文件中的类;将自定义的类加载器通过反射方式替换系统分配给主工程的类加载器,使得dex文件中的类和主工程本身的类处于同一类空间中;主工程通过反射技术调用dex文件中的代码模块,以正常使用四大组件的方式使用dex代码文件中定义的四大组件。
为了充分地了解本发明的目的、特征和效果,以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明。
附图说明
图1是本发明基于安卓系统的插件加载系统的模块示意图;
图2是本发明基于安卓系统的插件加载方法的流程图。
具体实施方式
下面将结合附图以及具体实施方法来详细说明本发明,在本发明的示意性实施及说明用来解释本发明,但并不作为对本发明的限定。
如图1所示,一种基于安卓系统的插件加载系统,用以调用在dex文件中定义的四大组件:Activity显示界面、Service服务、Content Provider内容提供者、BroadcastReceiver广播接收器,所述Dex文件中定义的四大组件在主工程的AndroidMainfest.xml进行包名和类名显式注册,以便在主工程中进行调用,通过脚本将插件的jar包变成包含dex文件的文件,所述dex文件可压缩为zip格式的文件,所述dex文件储存于SD卡或设备内置存储上。
所述插件加载系统包括:
自定义模块,用于在主工程中自定义一个加载dex文件的类加载器,支持以资源方式加载dex文件中的类;
替换模块,将自定义的类加载器通过反射技术替换系统分配给主工程的类加载器,使得dex文件中的类和主工程本身的类处于同一类空间中;
调用模块,主工程通过反射技术调用dex文件中的代码模块,以正常使用四大组件的方式使用dex代码文件中定义的四大组件,所述主工程通过反射方式或构造类实例或者反射接口调用dex文件中的代码模块。
如图2所示,一种基于安卓系统的插件加载方法,包括以下步骤:
S101:在主工程中自定义一个加载dex文件的类加载器,支持以资源方式加载dex文件中的类;
S102:将自定义的类加载器通过反射方式替换系统分配给主工程的类加载器,使得dex文件定义的类和主工程中定义的类处于同一类空间中;
S103:主工程通过反射技术调用dex文件中的代码模块,以正常使用四大组件的方式使用dex代码文件中定义的四大组件。
本发明所述的技术方案通过在主工程中自定义一个加载dex文件的类加载器;将自定义的类加载器通过反射的方式替换系统分配给主工程的类加载器,使得dex文件中的类和主工程本身的类处于同一类空间中,主工程通过反射技术调用dex文件中的代码模块,以正常使用四大组件的方式使用dex代码文件中定义的四大组件,使dex文件中定义的四大组件具备正确的特性。
本实施例所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本发明实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (4)
1.一种基于安卓系统的插件加载方法,用以调用在dex文件中定义的四大组件:Activity显示界面、Service服务、Content Provider内容提供者、BroadcastReceiver广播接收器,其特征在于,所述方法包括以下步骤:
在主工程中自定义一个加载dex文件的类加载器,支持以资源方式加载dex文件中的类;
将自定义的类加载器通过反射方式替换系统分配给主工程的类加载器,使得dex文件中的类和主工程本身的类处于同一类空间中;
主工程通过反射技术调用dex文件中的代码模块,以正常使用四大组件的方式使用dex代码文件中定义的四大组件。
2.如权利要求1所述的插件加载方法,其特征在于,所述dex文件压缩为zip格式的文件。
3.一种基于安卓系统的插件加载系统,用以调用在dex文件中定义的四大组件:Activity显示界面、Service服务、Content Provider内容提供者、BroadcastReceiver广播接收器,其特征在于,所述系统包括:
自定义模块,用于在主工程中自定义一个加载dex文件的类加载器,支持以资源方式加载dex文件中的类;
替换模块,将自定义的类加载器通过反射方式替换系统分配给主工程的类加载器,使得dex文件中的类和主工程本身的类处于同一类空间中;
调用模块,主工程通过反射技术调用dex文件中的代码模块,以正常使用四大组件的方式使用dex代码文件中定义的四大组件。
4.如权利要求3所述的插件加载系统,其特征在于,所述dex文件压缩为zip格式的文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410467050.0A CN104239054A (zh) | 2014-09-12 | 2014-09-12 | 一种基于安卓系统的插件加载方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410467050.0A CN104239054A (zh) | 2014-09-12 | 2014-09-12 | 一种基于安卓系统的插件加载方法及其系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104239054A true CN104239054A (zh) | 2014-12-24 |
Family
ID=52227196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410467050.0A Pending CN104239054A (zh) | 2014-09-12 | 2014-09-12 | 一种基于安卓系统的插件加载方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104239054A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648740A (zh) * | 2016-10-18 | 2017-05-10 | 努比亚技术有限公司 | 一种可执行文件的加载方法及终端 |
CN106897587A (zh) * | 2017-02-27 | 2017-06-27 | 百度在线网络技术(北京)有限公司 | 加固应用、加载加固应用的方法和装置 |
CN108279939A (zh) * | 2016-12-30 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 一种Android插件框架支持新增广播接收者的方法、装置及设备 |
CN108334374A (zh) * | 2017-01-18 | 2018-07-27 | 北京京东尚科信息技术有限公司 | 组件动态加载与执行的方法和装置 |
CN109086157A (zh) * | 2018-08-02 | 2018-12-25 | 北京达佳互联信息技术有限公司 | 日志追踪方法、装置、电子设备及存储介质 |
CN111459570A (zh) * | 2020-03-30 | 2020-07-28 | 掌阅科技股份有限公司 | Pdf插件加载方法、电子设备和计算机存储介质 |
CN111552518A (zh) * | 2019-01-24 | 2020-08-18 | 阿里巴巴集团控股有限公司 | 一种启动应用的控件加载方法及装置 |
CN113253990A (zh) * | 2020-02-13 | 2021-08-13 | 北京沃东天骏信息技术有限公司 | 更新软件的方法、装置、设备和计算机可读介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102830992A (zh) * | 2012-07-31 | 2012-12-19 | 北京奇虎科技有限公司 | 插件加载方法及系统 |
CN103530156A (zh) * | 2013-10-17 | 2014-01-22 | 北京奇虎科技有限公司 | 动态加载和调用程序的方法及装置 |
CN103677877A (zh) * | 2012-09-12 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 一种本地广告软件开发包升级的方法及装置 |
-
2014
- 2014-09-12 CN CN201410467050.0A patent/CN104239054A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102830992A (zh) * | 2012-07-31 | 2012-12-19 | 北京奇虎科技有限公司 | 插件加载方法及系统 |
CN103677877A (zh) * | 2012-09-12 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 一种本地广告软件开发包升级的方法及装置 |
CN103530156A (zh) * | 2013-10-17 | 2014-01-22 | 北京奇虎科技有限公司 | 动态加载和调用程序的方法及装置 |
Non-Patent Citations (1)
Title |
---|
佚名: "Android系统下的动态Dex加载", 《HTTP://WWW.CNBLOGS.COM/XITANG/P/3534777.HTML》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648740A (zh) * | 2016-10-18 | 2017-05-10 | 努比亚技术有限公司 | 一种可执行文件的加载方法及终端 |
CN108279939A (zh) * | 2016-12-30 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 一种Android插件框架支持新增广播接收者的方法、装置及设备 |
CN108279939B (zh) * | 2016-12-30 | 2021-07-23 | 阿里巴巴集团控股有限公司 | 一种Android插件框架支持新增广播接收者的方法、装置及设备 |
CN108334374A (zh) * | 2017-01-18 | 2018-07-27 | 北京京东尚科信息技术有限公司 | 组件动态加载与执行的方法和装置 |
CN106897587A (zh) * | 2017-02-27 | 2017-06-27 | 百度在线网络技术(北京)有限公司 | 加固应用、加载加固应用的方法和装置 |
CN109086157A (zh) * | 2018-08-02 | 2018-12-25 | 北京达佳互联信息技术有限公司 | 日志追踪方法、装置、电子设备及存储介质 |
CN109086157B (zh) * | 2018-08-02 | 2022-03-25 | 北京达佳互联信息技术有限公司 | 日志追踪方法、装置、电子设备及存储介质 |
CN111552518A (zh) * | 2019-01-24 | 2020-08-18 | 阿里巴巴集团控股有限公司 | 一种启动应用的控件加载方法及装置 |
CN111552518B (zh) * | 2019-01-24 | 2023-04-07 | 阿里巴巴集团控股有限公司 | 一种启动应用的控件加载方法及装置 |
CN113253990A (zh) * | 2020-02-13 | 2021-08-13 | 北京沃东天骏信息技术有限公司 | 更新软件的方法、装置、设备和计算机可读介质 |
CN111459570A (zh) * | 2020-03-30 | 2020-07-28 | 掌阅科技股份有限公司 | Pdf插件加载方法、电子设备和计算机存储介质 |
CN111459570B (zh) * | 2020-03-30 | 2023-03-17 | 掌阅科技股份有限公司 | Pdf插件加载方法、电子设备和计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104239054A (zh) | 一种基于安卓系统的插件加载方法及其系统 | |
AU2018212186B2 (en) | Service processing method and apparatus | |
CN101697123A (zh) | 一种erp系统中界面布局修改方法、装置及erp系统 | |
CN110442327B (zh) | 一种应用程序构建方法、装置、服务器 | |
US20210173665A1 (en) | Bootstrapping Profile-Guided Compilation and Verification | |
CN106406925A (zh) | 用于支持在线升级的设备和方法 | |
Tchana et al. | Software consolidation as an efficient energy and cost saving solution | |
CN104951326A (zh) | 网页访问方法及装置 | |
CN104536869A (zh) | 移动终端及其资源管理方法 | |
CN104205109A (zh) | 持续性和弹性的工作者进程 | |
KR20130122619A (ko) | 선택된 실행 런타임을 갖는 실행을 위한 사용자 코드의 런타임 독립적 표현 | |
CN107578338B (zh) | 一种业务发布方法、装置及设备 | |
CN106202158A (zh) | 一种图形文件格式的使用方法及装置 | |
CN111651219A (zh) | 一种多模块项目配置文件管理的方法及设备 | |
CN105404794A (zh) | Java应用软件的保护方法和装置 | |
CN102419753B (zh) | 信息处理设备、信息处理方法和信息处理系统 | |
CN104205780A (zh) | 一种存储数据的方法和装置 | |
WO2015179509A1 (en) | High-performance computing framework for cloud computing environments | |
CN110888639A (zh) | 一种业务代码编译打包方法和装置 | |
CN102591710A (zh) | 共享对象表示 | |
US11635948B2 (en) | Systems and methods for mapping software applications interdependencies | |
CN105677481A (zh) | 一种数据处理方法、系统及电子设备 | |
CN104506630A (zh) | 基于用户角色的权限数据生成方法、服务器及系统 | |
CN102196016B (zh) | 控制跨服务器的服务的执行 | |
CN107844360B (zh) | 一种硬盘执行应用代码的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141224 |