CN102915247B - Apk插件化管理方法 - Google Patents
Apk插件化管理方法 Download PDFInfo
- Publication number
- CN102915247B CN102915247B CN201210315794.1A CN201210315794A CN102915247B CN 102915247 B CN102915247 B CN 102915247B CN 201210315794 A CN201210315794 A CN 201210315794A CN 102915247 B CN102915247 B CN 102915247B
- Authority
- CN
- China
- Prior art keywords
- plug
- apk
- unit
- android system
- performs
- 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.)
- Expired - Fee Related
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种APK插件化管理方法。本发明可以解决现有技术APK安装的繁琐过程,软件在升级时,用户依然需要手动进行操作,并且安装APK将强制弹出安装界面,使得用户体验急速下降的问题,其技术方案要点是:所述的APK插件化管理方法包括以下步骤:步骤一:APK启动;步骤二:判断APK中的壳是否进行实例化,如果是,则进行APK中壳实例化,然后执行步骤三,如果APK中的壳实例化完成则安卓***通过壳执行APK插件功能步骤;步骤三:安卓***判断APK中的插件是否通过插件检测,如果APK中的插件通过插件检测则执行步骤四,否则执行完整升级步骤;步骤四:安卓***加载插件,执行插件管理模块的注册步骤,然后跳转执行APK插件功能步骤。本发明能更好地提升用户体验。
Description
技术领域
本发明涉及一种安卓平台上的软件数据***管理方法,特别涉及一种安卓平台上具有管理插件功能的 APK 插件化管理方法。
背景技术
安卓(Andriod)***是一款谷歌推出的移动终端操作***,作为移动设备***安卓***以其开源的特性,成为了主流的操作***之一。安卓***上的开发者套件简称为 SDK、安卓的软件安装包格式为 APK 格式,这些都已经被广大开发者进行了广泛的应用。但是和绝大多数的操作***一样,安卓***也存在很多的弊端,特别是在软件升级上,安卓***就存在一个较大的弊端,需要整体进行更新,特别是一些占用空间较大的软件,如果需要进行软件整体更新,则会出现一个使用者需要进行大量时间和大量资源进行更新,而最后仅仅是增加了一部分很少的内容,往往会让使用者感到不适,久而久之,会让使用者放弃更新,影响软件的普及,同时, APK安装的过程繁琐,软件在升级时,用户需要手动进行操作,并且安装 APK将强制弹出安装界面,使得用户体验急速下降。
目前,有一些非常流行软件,采用了不同功能对应不同插件,采用插件功能的选择,能够实现很多功能的插件化实现和插件化的静默安装,但是仔细分析这些软件,我们发现,其实这些软件实现所谓插件化和静默安装的本质是,在 APK 中将实现主要功能的程序以及实现其他相关功能的程序均进行安装,但是只激活主要功能程序而其他相关功能暂不执行,此类软件所谓的安装和卸载插件只是将其他相关功能的程序进行激活,很简单的判断是,这类软件哪怕是更新一个插件的功能也必须要对 APK 进行全面更新,需要较多的资源,软件在升级时,用户需要手动进行操作,并且安装 APK 时强制弹出安装界面,使得用户体验急速下降。
发明内容
本发明的目的在于解决现有技术存在 APK 过大的问题,用户在更新 APK时可以花费较大的数据流量,以及 APK 安装的繁琐过程,软件在升级时,用户依然需要手动进行操作,并且安装 APK 将强制弹出安装界面,使得用户体验急速下降的问题,提供一种软件更新静默、更新所需流量较少,更新速度快的 APK 插件化管理方法。
本发明解决其技术问题所采用的技术方案是:一种 APK 插件化管理方法,在安卓***中使用,其特征在于:所述的 APK 插件化管理方法包括以下步骤:
步骤一:APK 启动;
步骤二:判断 APK 中的壳是否进行实例化,如果是,则进行 APK 中壳实例化,然后执行步骤三,如果 APK 中的壳实例化完成则安卓***跳过步骤三和步骤四直接通过壳执行 APK 插件功能步骤;
步骤三:安卓***判断 APK 中的插件是否通过插件检测,如果 APK 中的插件通过插件检测则执行步骤四,否则执行完整升级步骤;
步骤四:安卓***加载插件,执行插件管理模块的注册步骤,然后跳转执行 APK 插件功能步骤。
这样设置,壳,即 shell,起到了被安卓***调用的桥梁作用,安卓***通过壳即可调用插件,很多实现代码都可以存放至插件中,无需打包进APK 中,因此 APK 更新时只要更新插件即可,而插件可以存放在 SD 卡等终端设备存储空间的各个任意位置,只需更新一些插件即可达到 APK 更新的目的,达到了 APK 能够实现更新静默、更新所需流量较少,更新速度快的效果。
作为优选,所述的步骤二之后***版本检测步骤,安卓***对 APK 版本进行检测,如果安卓***对 APK 版本检测通过,则跳转执行步骤三,否则执行完整升级步骤。本发明的版本检测,保证了 APK 整体有较大更新时可以进行整体更新,而 APK 整体更新不多,只是更新一部分实现代码时,只需进行小篇幅的更新即可,这样 APK 的更新有了更好的自由度,而插件的合法性检测一方面防止了插件非法所带来的木马问题,另一方面也保证了插件进行插件升级的成功率。
作为优选,所述的完整升级步骤依次为完整升级提醒、完整 APK 下载和完整升级。APK 整体有较大更新时对客户进行提醒,保证了客户可以主动选择是否进行 APK 更新。
作为优选,所述的 APK 插件功能步骤包括以下分步骤:
分步骤一:对 APK 中的壳进行启动;
分步骤二:安卓***启动插件化 SDK,插件化 SDK 提供插件管理模块与插件间的接口;
分步骤三:插件管理模块对所有插件进行调用管理,确定各插件之间的调用关系和加载顺序;
分步骤四:安卓***运行插件内实现具体功能的代码,实现消息响应。
APK 插件化是一项可行的技术。但是当一个应用程序的 Activity 可能是有互相联系的,以 Activity 归类插件时,可能会遇到插件之间互相调用的问题。为了解决这个问题,则需要一个插件管理器,以它为中心,各个插件可以互调用,这样的机制可以使得插件成为一个完全独立的 jar 包进行发布,所以本发明这样设置,保证了安卓***可以通过插件化 SDK 提供插件管理模块与插件间的接口,插件管理模块通过插件化 SDK 对插件进行控制,达到插件之间的相互调用。
作为优选,所述的壳为若干个插件各自分别依赖的若干个Activity类,所述插件所依赖的 Activity 类不存放实现具体功能的代码,起到被安卓***调用的作用,安卓***通过调用所依赖的 Activity 类进行调用插件,所述的插件内部存放有实现具体功能的代码,所述插件所依赖的 Activity 类打包入 APK中。这样设置,确保了使用 JAR 包动态加载技术,以 Activity 为承载媒体,并分离所有实现代码,使安卓软件即 APK 具有更高的可修改性,有效性,可靠性,可理解性,可维护性,可适应性,可重用性,可追踪性,有助于
提高软件的产品质量和开发效率,减少维护困难,并且能更好地提升用户体验。
作为优选,所述的插件为使用 SDK 工具将 APK 中的实现代码分离并转换而成的 jar 包,所述的插件直接存储在终端的任意存储位置。
作为优选,所述的分步骤四中,安卓***首先加载并运行 Dalvik 虚拟机,然后将插件加载到 Dalvik 虚拟机上,安卓***通过 Dalvik 虚拟机运行插件内的代码。
作为优选,所述的插件化 SDK 为实现 SDK 功能的插件,所述的插件化SDK 直接存储在终端的任意存储位置。
本发明的实质性效果是:本发明具有更高的可修改性,有效性,可靠性,可理解性,可维护性,可适应性,可重用性,可追踪性,有助于提高软件的产品质量和开发效率,减少维护困难,并且能更好地提升用户体验,软件更新静默、更新所需流量较少,更新速度快。
附图说明
图 1 是本发明中软件的一种功能模块结构图;
图 2 是本发明的一种软件流程图。
图中:1、APK 文件,2、实现具体功能的插件,3、插件化 SDK,4、公共插件和其他插件,5、插件管理模块,6、资源管理器,7、插件加载器,8、插件版本管理器,9、壳,10、安卓资源以及配置文件。
具体实施方式
下面通过具体实施例,并结合附图,对本发明的技术方案作进一步的具体说明。
实施例:
一种 APK 插件化管理方法(参见附图 2),在安卓***中使用,本实施例中的安装软件包括打包进 APK 文件 1 中的插件管理模块 5、升级模块、资源管理器 6、插件加载器 7、插件版本管理器 8、壳 9 和安卓资源以及配置文件 10,还有未打包进 APK 文件 1 的实现具体功能的插件 2、插件化 SDK3、公共插件和其他插件 4。安卓资源以及配置文件 10 包括 Androidmanifest.xml,而一个 APK 中最先开始运行的用户代码都是由 Application 或 Activity 的子类开始的,而且 Application 和 Activity 必须在 AndroidManifest.xml 中事先声明。壳 9 为若干个插件所依赖的 Activity 类,所述插件所依赖的 Activity 类不存放实现具体功能的代码,在 AndroidManifest.xml 中事先声明,起到被安卓***调用的作用,安卓***通过调用所依赖的 Activity 类进行调用插件,所述的插件内部存放有实现具体功能的代码,所述插件所依赖的 Activity类打包入 APK 中。插件管理模块 5 对所有插件进行调用管理,确定各插件之间的调用关系和加载顺序。升级模块起到升级管理的作用,用于执行完整升级步骤。完整升级步骤依次为完整升级提醒、完整 APK 下载和完整升级。插件版本管理器 8 用于检测插件版本,对插件的版本和合法性进行检测,一旦插件版本或合法性检测失败则启动升级模块进行完整升级,如果插件版本或合法性检测通过则启动插件加载器 7 加载插件,同时将插件注册至插件管理模块 5,此后执行具体实现功能时,此插件可以***件管理模块进行管理和调用。资源管理器 6 用于管理安卓资源以及配置文件 10。插件为使用 SDK工具将 APK 中的实现代码分离并转换而成的 jar 包,所述的插件直接存储在终端的任意存储位置。包括实现具体功能的插件 2、插件化 SDK3、公共插件和其他插件 4。插件化 SDK3 为实现 SDK 功能的插件,所述的插件化 SDK 直接存储在终端的任意存储位置。
APK 插件化管理方法(参见附图 1)包括以下步骤:
步骤一:APK 启动 S1;
步骤二:判断 APK 中的壳是否进行实例化,如果 APK 中的壳实例化完成则安卓***通过壳执行 APK 插件功能步骤;进行 APK 中壳实例化 S2,然后执行版本检测 S3 步骤,安卓***依次进行 APK 版本检测 S3,如果安卓***对APK 版本检测通过,则跳转执行步骤三,否则启动升级模块 S8,执行完整升级步骤。
步骤三:安卓***对插件合法性进行检测 S4 判断 APK 中的插件是否通过插件检测,如果 APK 中的插件通过插件检测则执行步骤四,否则执行完整升级步骤;
完整升级步骤依次为启动升级模块 S8,执行完整升级提醒、完整 APK下载、完整升级、升级完成提醒 S7。
步骤四:安卓***通过插件加载器加载插件,对加载的插件执行插件管理模块的注册步骤 S6,然后跳转执行 APK 插件功能步骤。
APK 插件功能步骤包括以下分步骤:
分步骤一:对 APK 中的壳进行启动 S9;同样,一个 APK 中最先开始运行的用户代码都是在 AndroidManifest.xml 中事先声明的 Application 或Activity 的子类开始的,安卓***通过 Activity 的子类确定要调用至终端内存中的插件;
分步骤二:安卓***启动插件化 SDKS10,安卓***通过 Activity 的子类将插件化 SDK 调用至内存中,插件化 SDK 开始工作,插件化 SDK 提供插件管理模块与插件间的接口;
分步骤三:插件管理模块对所有插件进行调用管理 S11,确定各插件之间的调用关系和加载顺序;Activity 可能是有互相联系的,以 Activity 归类插件时,可能会遇到插件之间互相调用的问题。以插件管理模块为中心,各个插件即可实现相互之间的调用;
分步骤四:安卓***运行插件内实现具体功能的代码,包括调用其他插件 S13 和调用公共插件 S14,实现消息响应 S12。
以上所述的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型。
Claims (4)
1.一种APK插件化管理方法,在安卓***中使用,其特征在于:所述的APK插件化管理方法包括以下步骤:
步骤一:APK启动;
步骤二:判断APK中的壳是否进行实例化,如果是,则进行APK中壳实例化,然后执行步骤三,如果APK中的壳实例化完成则安卓***跳过步骤三和步骤四直接通过壳执行APK插件功能步骤;
步骤三:安卓***判断APK中的插件是否通过插件检测,如果APK中的插件通过插件检测则执行步骤四,否则执行完整升级步骤;
步骤四:安卓***加载插件,执行插件管理模块的注册步骤,然后跳转执行APK插件功能步骤,
所述的APK插件功能步骤包括以下分步骤:
分步骤一:对APK中的壳进行启动;
分步骤二:安卓***启动插件化SDK,插件化SDK提供插件管理模块与插件间的接口;
分步骤三:插件管理模块对所有插件进行调用管理,确定各插件之间的调用关系和加载顺序;
分步骤四:安卓***运行插件内实现具体功能的代码,实现消息响应,所述的插件为使用SDK工具将APK中的实现代码分离并转换而成的jar包,所述的插件直接存储在终端的任意存储位置,所述的插件化SDK为实现SDK功能的插件,所述的插件化SDK直接存储在终端的任意存储位置,所述的壳为若干个插件各自分别依赖的若干个Activity类。
2.根据权利要求1所述的APK插件化管理方法,其特征在于:所述的步骤二之后***版本检测步骤,安卓***对APK版本进行检测,如果安卓***对APK版本检测通过,则跳转执行步骤三,否则执行完整升级步骤。
3.根据权利要求1或2所述的APK插件化管理方法,其特征在于:所述的完整升级步骤依次为完整升级提醒、完整APK下载和完整升级。
4.根据权利要求1所述的APK插件化管理方法,其特征在于:所述的分步骤四中,安卓***首先加载并运行Dalvik虚拟机,然后将插件加载到Dalvik虚拟机上,安卓***通过Dalvik虚拟机运行插件内的代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210315794.1A CN102915247B (zh) | 2012-08-31 | 2012-08-31 | Apk插件化管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210315794.1A CN102915247B (zh) | 2012-08-31 | 2012-08-31 | Apk插件化管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102915247A CN102915247A (zh) | 2013-02-06 |
CN102915247B true CN102915247B (zh) | 2015-08-19 |
Family
ID=47613621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210315794.1A Expired - Fee Related CN102915247B (zh) | 2012-08-31 | 2012-08-31 | Apk插件化管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102915247B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123151B (zh) * | 2013-04-28 | 2018-07-10 | 百度在线网络技术(北京)有限公司 | 移动终端中应用程序的插件管理方法、装置和移动终端 |
CN104123152A (zh) * | 2013-04-28 | 2014-10-29 | 百度在线网络技术(北京)有限公司 | 移动终端中应用程序的更新方法、装置和移动终端 |
CN103399792A (zh) * | 2013-07-24 | 2013-11-20 | 佳都新太科技股份有限公司 | 基于Android的应用插件化实现方案 |
CN104572054B (zh) * | 2013-10-22 | 2018-08-17 | ***通信集团公司 | 一种能力调用方法和设备 |
CN104636122B (zh) * | 2013-11-06 | 2018-05-18 | ***通信集团公司 | 一种能力组件的共享方法和设备 |
CN103607702B (zh) * | 2013-11-15 | 2018-09-07 | 上海大汉三通通信股份有限公司 | 一种在短信业务中不同平台间进行通讯的方法和*** |
CN103744669B (zh) * | 2013-12-26 | 2017-07-18 | 世纪龙信息网络有限责任公司 | 安卓***Activity插件的创建、调用方法及*** |
CN104077160B (zh) * | 2014-05-12 | 2018-04-03 | 联动优势电子商务有限公司 | 一种升级安卓软件的方法、设备和*** |
CN104216741A (zh) * | 2014-08-25 | 2014-12-17 | 华中科技大学 | 基于APK动态加载的Android插件化实现方法、装置及交互方法 |
CN104375861B (zh) * | 2014-11-04 | 2017-06-09 | 北京奇虎科技有限公司 | 基于安卓平台的应用程序免安装运行的方法、装置及终端 |
US9609067B2 (en) * | 2014-12-02 | 2017-03-28 | Amazon Technologies, Inc. | Proxy captive portal traffic for input-limited devices |
CN105511907B (zh) * | 2015-11-26 | 2020-03-17 | 小米科技有限责任公司 | 应用程序升级方法、装置及*** |
CN106325937A (zh) * | 2016-08-24 | 2017-01-11 | 乐视控股(北京)有限公司 | 一种第三方应用程序调用方法及电子设备 |
CN106445595B (zh) * | 2016-09-23 | 2020-05-15 | 北京奇虎科技有限公司 | 插件的Application对象的构建方法及装置 |
CN107273151B (zh) * | 2017-05-25 | 2020-11-17 | 西安理工大学 | 一种安全的Android App功能插件化方法 |
CN108021508B (zh) * | 2017-12-26 | 2021-06-01 | 洛阳理工学院 | 一种计算机软件产品品质管制管理*** |
CN108037941B (zh) * | 2017-12-27 | 2018-10-23 | 掌阅科技股份有限公司 | 基于公共插件的应用程序更新方法、电子设备、存储介质 |
CN109725952B (zh) * | 2019-01-07 | 2021-09-24 | 深圳市网心科技有限公司 | 一种应用程序插件化的方法、***以及相关装置 |
CN110532022B (zh) * | 2019-08-07 | 2022-06-17 | 浪潮电子信息产业股份有限公司 | 一种获取不同云平台版本的方法、装置、设备和存储介质 |
CN111638921A (zh) * | 2020-06-01 | 2020-09-08 | 南京雷鲨信息科技有限公司 | 运行于智能终端的插件管理***及方法 |
CN114489853A (zh) * | 2022-01-21 | 2022-05-13 | 阿里巴巴(中国)有限公司 | 插件注册方法、电子设备及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1710535A (zh) * | 2005-05-10 | 2005-12-21 | 上海宝信软件股份有限公司 | 一种gis应用***及其开发方法 |
CN101699405A (zh) * | 2009-10-26 | 2010-04-28 | 中兴通讯股份有限公司 | 一种宿主程序和插件及插件间进行交互的方法及装置 |
CN102073520A (zh) * | 2010-12-30 | 2011-05-25 | 中国民航信息网络股份有限公司 | 一种c++应用程序版本动态管理***和方法 |
-
2012
- 2012-08-31 CN CN201210315794.1A patent/CN102915247B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1710535A (zh) * | 2005-05-10 | 2005-12-21 | 上海宝信软件股份有限公司 | 一种gis应用***及其开发方法 |
CN101699405A (zh) * | 2009-10-26 | 2010-04-28 | 中兴通讯股份有限公司 | 一种宿主程序和插件及插件间进行交互的方法及装置 |
CN102073520A (zh) * | 2010-12-30 | 2011-05-25 | 中国民航信息网络股份有限公司 | 一种c++应用程序版本动态管理***和方法 |
Non-Patent Citations (3)
Title |
---|
《基于插件的移动终端应用架构研究》;乔雅莉 等;《移动通信》;20101231;第2010年卷(第24期);第56-60页 * |
《浅谈插件化软件开发》;李鸣亚 等;《广西轻工业》;20090831;第2009年卷(第8期);第81-82页 * |
祖兆研.《基于插件技术的软件架构设计及应用》.《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》.中国学术期刊(光盘版)电子杂志社,2007,第2007年卷(第12期),I138-275. * |
Also Published As
Publication number | Publication date |
---|---|
CN102915247A (zh) | 2013-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102915247B (zh) | Apk插件化管理方法 | |
CN107346252B (zh) | 应用更新方法和装置 | |
CN102622241B (zh) | 一种软件升级方法及装置 | |
CN101593121B (zh) | 软件在线升级的方法、装置及*** | |
CN105138382B (zh) | 一种Android***升级的方法及终端 | |
CN103902265B (zh) | 一种应用实现方法及相关装置 | |
CN103488466B (zh) | 用于执行应用程序的方法和装置 | |
EP2696532A2 (en) | Method, server and system for starting application | |
EP2864872B1 (en) | Automatic provisioning of a software platform to a device ecosystem | |
CN103379481B (zh) | 一种实现安全防护的方法 | |
EP3296906A1 (en) | Method for protecting dex file from being decompiled in android system | |
CN104506639A (zh) | 一种获取Root权限的方法及装置 | |
US20190196804A1 (en) | Methods, Apparatuses, Terminals, Servers, and Systems for Container Generation | |
CN109791497B (zh) | 一种执行热补丁的方法、装置及终端 | |
CN103810416A (zh) | 一种软件安装或卸载方法及装置 | |
CN103971056A (zh) | 一种防止操作***中应用程序被卸载的方法和装置 | |
CN105068834A (zh) | ***升级方法及装置 | |
CN108089873A (zh) | 一种应用组件即时更新的方法及终端 | |
CN107220074A (zh) | 对支撑层软件功能的访问、升级方法及装置 | |
CN112015448A (zh) | 一种基于空中下载技术的***升级方法及装置 | |
CN103019764A (zh) | Andriod资源包可安装性的检测方法及*** | |
CN114021141A (zh) | 一种电子设备、可信应用调用方法、装置、设备及介质 | |
CN114036524A (zh) | 一种电子设备 | |
CN110045998A (zh) | 加载动态库的方法及装置 | |
CN104239112B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 310000 room 821, building 1, Xinjun building, 330 Internet of things street, Xixing street, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: HANGZHOU SKY NETWORK TECHNOLOGY CO.,LTD. Address before: 10, building 2, block B, The Union Buildings, No. 310000, Bauhinia Road, Hangzhou, Xihu District, Zhejiang Patentee before: HANGZHOU SKY NETWORK TECHNOLOGY CO.,LTD. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150819 Termination date: 20210831 |