CN106909409A - 一种运行应用程序的apk插件的方法及装置 - Google Patents

一种运行应用程序的apk插件的方法及装置 Download PDF

Info

Publication number
CN106909409A
CN106909409A CN201510977737.3A CN201510977737A CN106909409A CN 106909409 A CN106909409 A CN 106909409A CN 201510977737 A CN201510977737 A CN 201510977737A CN 106909409 A CN106909409 A CN 106909409A
Authority
CN
China
Prior art keywords
plug
units
apk
unit
loading
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
Application number
CN201510977737.3A
Other languages
English (en)
Inventor
荣涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510977737.3A priority Critical patent/CN106909409A/zh
Publication of CN106909409A publication Critical patent/CN106909409A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开一种运行应用程序的APK插件的方法及装置,该方法包括:加载APK插件,加载过程中在所述主程序目录中生成Dex文件;当加载成功后,调用所述加载成功的APK插件中的方法以实现插件的功能;通过虚拟机运行所述Dex文件,以运行所述APK插件。上述方法和装置在接收到针对插件的运行指令后,应用程序加载插件;在加载过程中,将应用程序的实例赋值给APK插件的实例;并在应用程序目录中生成Dex文件;之后应用程序发起对APK插件的调用请求;进而通过系统调用应用程序对应的方法,应用程序调用插件对应的方法,实现了插件的加载和调用。并最终通过虚拟机运行Dex文件,从而达到可以跳过繁琐复杂的安装步骤,只需下载即可运行该插件的目的。

Description

一种运行应用程序的APK插件的方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种运行应用程序的APK插件的方法及装置。
背景技术
智能终端在日常生活中扮演了越来越重要的角色,以Android智能手机为例,为满足各种需求,可以将主应用程序即APK(Android Package,Android安装包)安装在系统平台中,当需要某些功能时,就可以打开安装在系统平台中的应该程序,来实现某些功能。
但是随着各行业的进步,应用程序的集成的功能更加丰富且界面更加人性化、绚丽,所以导致了应用程序的体积越来越大,由于应用程序集成的每个功能可能都由不同的开发团队开发,所以不同功能的更新周期都不尽相同,如果仅为了某个集成在应用程序中的功能就重新安装应用程序的整个安装包,显然即浪费网络传输资源,又浪费智能手机的处理资源。况且,有些功能不一定所有人都需要,所以可以将集成在应用程序中功能做成插件,当需要某个功能时,运行对应的插件就可以了。比如,以导航软件为例,主程序包含最基本的导航功能,然而为了满足个性化的需求,可以在导航软件中集成拥堵提示,限行提示,违章查询等。可以将这些功能做成APK插件,当用户需要时,下载对应的插件,运行即可。
而现有技术在实现APK插件的功能时,需要先将APK插件安装在系统平台中,然后再运行,如果插件很多,就需要全部安装。比如,依旧以上文的导航软件为例,如果需要拥堵提示、限行提示以及违章查询,就需要下载对应的APK插件,并全部安装在系统平台中,占用系统平台的存储空间。也就是还不能够在仅下载而不安装APK插件的情况下,运行该APK插件。
发明内容
本申请实施例提供一种运行应用程序的APK插件的方法,用于在不安装插件的情况下,运行该插件。
本申请实施例提供一种运行应用程序的APK插件的装置,用于在不安装插件的情况下,运行该插件。
本申请实施例采用下述技术方案:
一种运行应用程序的APK插件的方法,包括:
加载APK插件,加载过程中在所述主程序目录中生成Dex文件,所述APK插件为未在应用程序所在平台上安装的插件;
当加载成功后,调用所述加载成功的APK插件中的方法以实现插件的功能;
通过虚拟机运行所述Dex文件,以运行所述APK插件。
优选地,加载APK插件,包括:生成ClassLoader类加载器的对象;根据生成的所述类加载器的对象设置所述应用程序的调用插件活动组件类的子类的实例Context;将所述实例Context赋值给所述APK插件中插件活动组件类的子类的实例中,以实现对应用程序的APK插件的加载。
优选地,调用所述加载成功的APK插件中的方法以实现插件的功能,包括:实例化所述APK插件中插件活动组件类对应的Activity;应用程序的调用插件活动组件类的子类以插件形式调用所述Activity的实例,以实现插件的功能。
优选地,加载APK插件之前,所述方法还包括:收集所述应用程序所在平台的信息,并将所述信息发送到云端服务器,以便云端服务器根据所述信息匹配与所述信息相适应的APK插件,并将所述相适应的APK插件或所述APK插件的下载地址返回给所述应用程序所在平台。
优选地,在所述应用程序所在平台获得所述APK插件后,所述方法还包括对所述APK插件按照下述步骤进行合法性鉴权:获取所述APK插件的PackageInfo包信息类;根据PackageInfo包信息类获取Signature签名对象,并确定Signature签名对象的MD5值;对比所述MD5值与合法签名是否一致。
一种运行应用程序的APK插件的装置,包括:加载单元、调用单元以及运行单元,其中,
所述加载单元,用于加载APK插件,加载过程中在所述主程序目录中生成Dex文件,所述APK插件为未在应用程序所在平台上安装的插件;
所述调用单元,用于当加载成功后,调用所述加载成功的APK插件中的方法以实现插件功能;
所述运行单元,用于通过虚拟机运行所述Dex文件,以运行所述APK插件。
优选地,所述加载单元具体用于:生成ClassLoader类加载器的对象;根据生成的所述类加载器的对象设置所述应用程序的调用插件活动组件类的子类的实例Context;将所述实例Context赋值给所述APK插件中插件活动组件类的子类的实例中,以实现对应用程序的APK插件的加载。
优选地,所述调用单元具体用于:实例化所述APK插件中插件活动组件类对应的Activity;应用程序的调用插件活动组件类的子类以插件形式调用所述Activity的实例,以实现插件的功能。
优选地,所述装置还包括:获取单元,用于在主程序加载APK插件之前,收集所述应用程序所在平台的信息,并将所述信息发送到云端服务器,以便云端服务器根据所述信息匹配与所述信息相适应的APK插件,并将所述相适应的APK插件或所述APK插件的下载地址返回给所述应用程序所在平台。
优选地,所述装置还包括鉴权单元,具体用于:在所述应用程序所在平台获得所述APK插件后,对所述APK插件按照下述步骤进行合法性鉴权:获取所述APK插件的PackageInfo包信息类;根据PackageInfo包信息类获取Signature签名对象,并确定Signature签名对象的MD5值;对比所述MD5值与合法签名是否一致。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:在接收到针对插件的运行指令后,应用程序加载插件;在加载过程中,将应用程序的实例赋值给APK插件的实例;并在应用程序目录中生成Dex文件;之后应用程序发起对APK插件的调用请求;进而通过系统调用应用程序对应的方法,应用程序调用插件对应的方法,实现了插件的加载和调用。并最终通过虚拟机运行Dex文件,从而达到可以跳过繁琐复杂的安装步骤,只需下载即可运行该插件的目的。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例1提供的一种运行应用程序的APK插件的方法的流程示意图;
图2为本申请实施例1提供的主程序的抽象父类的定义示意图;
图3为本申请实施例1提供的APK插件的抽象父类的定义示意图;
图4为本申请实施例2提供的一种运行应用程序的APK插件的装置的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
本申请实施例提出了一种运行应用程序的APK插件的方法,用于在不安装插件的情况下,运行该插件,该方法的流程示意图如图1所示,包括下述步骤:
步骤11:加载APK插件,加载过程中在所述主程序目录中生成Dex文件。
该步骤中,由于是本申请就是要在不安装的情况下加载APK插件,所以该步骤中判断的APK插件是未在应用程序所在平台上安装的插件。在本申请中,将应用程序看作是安装在系统平台中的主程序。为了方便加载APK插件,以便最终实现APK插件的功能,规避过多的使用反射机制,本发明将APK插件提供的功能抽象为两个抽象父类。其中用于加载APK插件的主程序的抽象父类为调用插件活动组件类(下文简称CallPluginActivity),APK插件的抽象父类为插件活动组件类(下文简称PluginActivity)。CallPluginActivity和PluginActivity均为抽象类,需要子类实现其相应的方法,因此本文后续描述的CallPluginActivity均也代表CallPluginActivity的实现类,PluginActivity均也代表PluginActivity的实现类,后面将不再赘述。
主程序的抽象父类CallPluginActivity主要是为了向APK插件中的PluginActivity提供实例,即上下文Context,并通过反射机制加载APK插件。在本发明实施例中,主程序的抽象父类的定义如图2所示。其中,LoadAPK()方法用于判断是否需要加载APK。当是时,生成DexClassLoader类加载器的对象,并生成DexClassLoader和PackageInfo等句柄及文件,该句柄及文件就是成DexClassLoader类加载器的对象。
在实际应用中,由于主程序的差异、(Android)系统的差异可能会导致APK插件的适配问题,并且APK插件的安全检测也是比较重要的,所以,在一种实施方式中,生成DexClassLoader类加载器的对象之前,方法还可以包括:
收集主程序的信息,并将主程序信息发送到服务器;根据服务器返回的适配结果以及APK插件的地址,下载该APK插件;对下载的该APK插件进行合法性鉴权。
具体地,启动主程序时,收集收集主程序的信息,比如主程序的版本信息(如3.0或3.1等)、主程序所在的Android系统信息(如4.4.2或5.1等),收集完相关数据后,需要将参数传至服务器,由服务器返回适配结果,服务器返回的适配结果中可以包含APK插件的下载地址,然后主程序会根据下载地址下载APK插件。下载到得APK插件后,就可以对其进行合法性鉴权。这是为了避免APK插件被非法篡改,或在网络传输过程中数据出错。具体步骤为:
获取APK插件的PackageInfo;根据PackageInfo获取Signature对象并确定Signature的MD5值;对比MD5值与合法签名是否一致。如果鉴权错误,则返回ERROR,停止加载。该合法签名可以是伴随在服务器返回的适配结果中的,也可以预先存储在主程序中。图2所示的checkApk()方法可以用于对APK插件进行合法性鉴权。
主程序的抽象父类CallPluginActivity主要是为了向APK插件中的PluginActivity提供实例,即上下文Context,所以可以根据DexClassLoader和PackageInfo等句柄及文件,设置Context,即CallPluginActivity子类的实例。
在得到Context后,就可以将Context赋值到APK插件的PluginActivity子类的实例当中,以主程序的Context替代被加载APK插件的Context,最终得到对应的PluginActivity实例(变量名为:pluginActivity)。
在实际应用中,为了实现APK插件的功能,除了加载APK插件外,还需要加载APK插件对应的资源,图2中,getOtherResources()方法用于通过反射方法加载APK插件的资源并生成Resources句柄(变量名为:pluginRes)。为了实现对应的功能,需要在子类中重写父类定义的如下方法:
重写以下方法替换当前CallPluginActivity的资源、样式为APK插件中的资源、样式:
本文中代码后“//…”的内容是代码的注释内容。
在加载APK插件的过程中,可以在主程序目录中生成Dex文件,以便后续操作时,可以运行该APK插件。
步骤12:当加载成功后,调用加载成功的APK插件中的方法以实现插件的功能。
在加载完APK插件后,就可以调用该APK插件的功能了。如图2所示,LoadAPK()方法用于生成DexClassLoader和PackageInfo等句柄及文件,并通过反射方法得到对应的PluginActivity子类的实例画(变量名为:pluginActivity),即实例化APK插件中PluginActivity对应的Activity。
APK插件的抽象父类的主要功能是完成APK插件的构建和提供符合Android标准的Activity和Service等。在实施例中,APK插件的抽象父类的定义如图3所示。其中,onCreate()方法由主程序调用,用于发起对APK插件的调用请求。setCallActivity()由主程序反射调用并设置自身的实例(pluginActivity)为APK插件的实例(baseActivity)。具体实现方法如下:
所以,可以判断baseActivity是否为空,如果判断出baseActivity不为空,则确定本Activity是由主程序以插件的形式调用。
为了实现APK插件子类对应的功能,需要在子类中重写父类定义的方法。重写以下方法使APK插件中的PluginActivity受主程序CallPluginActivity的控制,如:onStart、onResume方法,其他方法以此类推;以baseActivity变量是否为空来判断PluginActivity是由主程序以插件形式启动,还是以Android正常启动(非插件调用的方式):
以baseActivity变量是否为空来判断PluginActivity是否由主程序以插件形式调用,如果是插件形式,则调用baseActivity对应方法,正常启动的话调用其父类对应方法。也就是主程序通过主系统调用主程序对应的方法,主程序调用插件对应的方法。
步骤13:通过虚拟机运行所述Dex文件,以运行APK插件。
通过步骤11,完成了加载并在主程序目录中生成了Dex文件,通过步骤12完成了调用APK插件的功能,所以,在该步骤中,可以通过虚拟机运行所述Dex文件,来运行该APK插件,以便实现用户对于该APK插件的的需求。比如在应用程序中运行时间校准插件,就是可以先对该时间校准插件进行加载,加载该插件及该插件所有的逻辑和资源,并在主程序目录中生成Dex文件,加载完成后调用该插件中的功能(如,查询服务器时间功能,GPS定位功能等),最终运行该插件,实现时间校准的功能。
采用实施例1提供的该方法,在接收到针对插件的运行指令后,应用程序加载插件;在加载过程中,将应用程序的实例赋值给APK插件的实例;并在应用程序目录中生成Dex文件;之后应用程序发起对APK插件的调用请求;进而通过系统调用应用程序对应的方法,应用程序调用插件对应的方法,实现了插件的加载和调用。并最终通过虚拟机运行Dex文件,从而达到可以跳过繁琐复杂的安装步骤,只需下载即可运行该插件的目的。
实施例2
基于相同的发明构思,实施例2提供了一种运行应用程序的APK插件的装置,用于在不安装插件的情况下,运行该插件。如图4所示,该装置包括:加载单元21、调用单元22以及运行单元23,其中,
加载单元21,可以用于加载APK插件,加载过程中在所述主程序目录中生成Dex文件,所述APK插件为未在应用程序所在平台上安装的插件;
调用单元22,可以用于当加载成功后,调用所述加载成功的APK插件中的方法以实现插件功能;
运行单元23,可以用于通过虚拟机运行所述Dex文件,以运行所述APK插件。
在一种实施方式中,所述加载单元可以用于:生成ClassLoader类加载器的对象;根据生成的所述类加载器的对象设置所述应用程序的调用插件活动组件类的子类的实例Context;将所述实例Context赋值给所述APK插件中插件活动组件类的子类的实例中,以实现对应用程序的APK插件的加载。
在一种实施方式中,调用单元可以用于:实例化所述APK插件中插件活动组件类对应的Activity;应用程序的调用插件活动组件类的子类以插件形式调用所述Activity的实例,以实现插件的功能。
在一种实施方式中,装置还包括获取单元,可以用于:在主程序加载APK插件之前,收集所述应用程序所在平台的信息,并将所述信息发送到云端服务器,以便云端服务器根据所述信息匹配与所述信息相适应的APK插件,并将所述相适应的APK插件或所述APK插件的下载地址返回给所述应用程序所在平台。
在一种实施方式中,装置还包括鉴权单元,可以用于:在所述应用程序所在平台获得所述APK插件后,对所述APK插件按照下述步骤进行合法性鉴权:获取所述APK插件的PackageInfo包信息类;根据PackageInfo包信息类获取Signature签名对象,并确定Signature签名对象的MD5值;对比所述MD5值与合法签名是否一致。
采用实施例2提供的该装置,在接收到针对插件的运行指令后,应用程序加载插件;在加载过程中,将应用程序的实例赋值给APK插件的实例;并在应用程序目录中生成Dex文件;之后应用程序发起对APK插件的调用请求;进而通过系统调用应用程序对应的方法,应用程序调用插件对应的方法,实现了插件的加载和调用。并最终通过虚拟机运行Dex文件,从而达到可以跳过繁琐复杂的安装步骤,只需下载即可运行该插件的目的。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种运行应用程序的APK插件的方法,其特征在于,包括:
加载APK插件,加载过程中在所述主程序目录中生成Dex文件,所述APK插件为未在应用程序所在平台上安装的插件;
当加载成功后,调用所述加载成功的APK插件中的方法以实现插件的功能;
通过虚拟机运行所述Dex文件,以运行所述APK插件。
2.如权利要求1所述的方法,其特征在于,加载APK插件,包括:
生成ClassLoader类加载器的对象;
根据生成的所述类加载器的对象设置所述应用程序的调用插件活动组件类的子类的实例Context;
将所述实例Context赋值给所述APK插件中插件活动组件类的子类的实例中,以实现对应用程序的APK插件的加载。
3.如权利要求1所述的方法,其特征在于,调用所述加载成功的APK插件中的方法以实现插件的功能,包括:
实例化所述APK插件中插件活动组件类对应的Activity;
应用程序的调用插件活动组件类的子类以插件形式调用所述Activity的实例,以实现插件的功能。
4.如权利要求1所述的方法,其特征在于,加载APK插件之前,所述方法还包括:
收集所述应用程序所在平台的信息,并将所述信息发送到云端服务器,以便云端服务器根据所述信息匹配与所述信息相适应的APK插件,并将所述相适应的APK插件或所述APK插件的下载地址返回给所述应用程序所在平台。
5.如权利要求4所述的方法,其特征在于,在所述应用程序所在平台获得所述APK插件后,所述方法还包括对所述APK插件按照下述步骤进行合法性鉴权:
获取所述APK插件的PackageInfo包信息类;
根据PackageInfo包信息类获取Signature签名对象,并确定Signature签名对象的MD5值;
对比所述MD5值与合法签名是否一致。
6.一种运行应用程序的APK插件的装置,其特征在于,包括:加载单元、调用单元以及运行单元,其中,
所述加载单元,用于加载APK插件,加载过程中在所述主程序目录中生成Dex文件,所述APK插件为未在应用程序所在平台上安装的插件;
所述调用单元,用于当加载成功后,调用所述加载成功的APK插件中的方法以实现插件功能;
所述运行单元,用于通过虚拟机运行所述Dex文件,以运行所述APK插件。
7.如权利要求6所述的装置,其特征在于,所述加载单元具体用于:
生成ClassLoader类加载器的对象;
根据生成的所述类加载器的对象设置所述应用程序的调用插件活动组件类的子类的实例Context;
将所述实例Context赋值给所述APK插件中插件活动组件类的子类的实例中,以实现对应用程序的APK插件的加载。
8.如权利要求6所述的装置,其特征在于,所述调用单元具体用于:
实例化所述APK插件中插件活动组件类对应的Activity;
应用程序的调用插件活动组件类的子类以插件形式调用所述Activity的实例,以实现插件的功能。
9.如权利要求6所述的装置,其特征在于,所述装置还包括:获取单元,用于在主程序加载APK插件之前,
收集所述应用程序所在平台的信息,并将所述信息发送到云端服务器,以便云端服务器根据所述信息匹配与所述信息相适应的APK插件,并将所述相适应的APK插件或所述APK插件的下载地址返回给所述应用程序所在平台。
10.如权利要求9所述的装置,其特征在于,所述装置还包括鉴权单元,具体用于:在所述应用程序所在平台获得所述APK插件后,
对所述APK插件按照下述步骤进行合法性鉴权:
获取所述APK插件的PackageInfo包信息类;
根据PackageInfo包信息类获取Signature签名对象,并确定Signature签名对象的MD5值;对比所述MD5值与合法签名是否一致。
CN201510977737.3A 2015-12-23 2015-12-23 一种运行应用程序的apk插件的方法及装置 Pending CN106909409A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510977737.3A CN106909409A (zh) 2015-12-23 2015-12-23 一种运行应用程序的apk插件的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510977737.3A CN106909409A (zh) 2015-12-23 2015-12-23 一种运行应用程序的apk插件的方法及装置

Publications (1)

Publication Number Publication Date
CN106909409A true CN106909409A (zh) 2017-06-30

Family

ID=59199531

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510977737.3A Pending CN106909409A (zh) 2015-12-23 2015-12-23 一种运行应用程序的apk插件的方法及装置

Country Status (1)

Country Link
CN (1) CN106909409A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291503A (zh) * 2017-06-23 2017-10-24 广东神马搜索科技有限公司 应用程序升级设备、装置及方法
CN108037941A (zh) * 2017-12-27 2018-05-15 掌阅科技股份有限公司 基于公共插件的应用程序更新方法、电子设备、存储介质
CN108491236A (zh) * 2018-03-23 2018-09-04 努比亚技术有限公司 一种插件加载方法、装置及计算机可读存储介质
CN108536464A (zh) * 2018-04-26 2018-09-14 北京奇艺世纪科技有限公司 一种应用程序的热修复方法及装置
CN110941459A (zh) * 2019-11-20 2020-03-31 东软集团股份有限公司 调用Replugin插件的方法及装置
CN111324359A (zh) * 2020-02-27 2020-06-23 支付宝(杭州)信息技术有限公司 插件部署方法及装置
CN113138768A (zh) * 2021-04-29 2021-07-20 北京百度网讯科技有限公司 应用程序包生成方法、装置、电子设备以及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103365644A (zh) * 2012-04-10 2013-10-23 腾讯科技(深圳)有限公司 一种扩展软件功能的方法及装置
CN103793257A (zh) * 2014-03-07 2014-05-14 中南大学 一种Android程序的流式执行方法
CN104391716A (zh) * 2014-11-14 2015-03-04 百度在线网络技术(北京)有限公司 基于插件的应用程序实现方法及装置
CN105094888A (zh) * 2012-03-29 2015-11-25 北京奇虎科技有限公司 一种应用程序插件加载方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105094888A (zh) * 2012-03-29 2015-11-25 北京奇虎科技有限公司 一种应用程序插件加载方法及装置
CN103365644A (zh) * 2012-04-10 2013-10-23 腾讯科技(深圳)有限公司 一种扩展软件功能的方法及装置
CN103793257A (zh) * 2014-03-07 2014-05-14 中南大学 一种Android程序的流式执行方法
CN104391716A (zh) * 2014-11-14 2015-03-04 百度在线网络技术(北京)有限公司 基于插件的应用程序实现方法及装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291503A (zh) * 2017-06-23 2017-10-24 广东神马搜索科技有限公司 应用程序升级设备、装置及方法
CN108037941A (zh) * 2017-12-27 2018-05-15 掌阅科技股份有限公司 基于公共插件的应用程序更新方法、电子设备、存储介质
CN108491236A (zh) * 2018-03-23 2018-09-04 努比亚技术有限公司 一种插件加载方法、装置及计算机可读存储介质
CN108536464A (zh) * 2018-04-26 2018-09-14 北京奇艺世纪科技有限公司 一种应用程序的热修复方法及装置
CN110941459A (zh) * 2019-11-20 2020-03-31 东软集团股份有限公司 调用Replugin插件的方法及装置
CN111324359A (zh) * 2020-02-27 2020-06-23 支付宝(杭州)信息技术有限公司 插件部署方法及装置
CN113138768A (zh) * 2021-04-29 2021-07-20 北京百度网讯科技有限公司 应用程序包生成方法、装置、电子设备以及可读存储介质
CN113138768B (zh) * 2021-04-29 2023-11-07 北京百度网讯科技有限公司 应用程序包生成方法、装置、电子设备以及可读存储介质

Similar Documents

Publication Publication Date Title
CN106909409A (zh) 一种运行应用程序的apk插件的方法及装置
US10871953B2 (en) Application update method and apparatus
CN108027741B (zh) 基于补丁升级的文件处理方法、装置、终端以及存储介质
CN109885311B (zh) 一种应用程序的生成方法及设备
CN111782338B (zh) 一种基于区块链智能合约的数据处理方法及系统
US10205750B2 (en) Policy-based secure web boot
AU2018310287A1 (en) Smart contract processing method and apparatus
CN106909406A (zh) 一种加载应用程序的apk插件的方法及装置
CN103902265B (zh) 一种应用实现方法及相关装置
CN106708597A (zh) 一种基于Openstack创建集群环境的方法、装置及系统
CN105765527A (zh) 用于定制的软件开发包(sdk)的方法和装置
CN108958881A (zh) 数据处理方法、装置及计算机可读存储介质
CN112558946A (zh) 一种生成代码的方法、装置、设备和计算机可读存储介质
CN106874028A (zh) 应用部署方法和装置
CN108021400A (zh) 数据处理方法及装置、计算机存储介质及设备
EP3313041A1 (en) Application download method and device
US9513762B1 (en) Static content updates
CN111177703B (zh) 操作系统数据完整性的确定方法及装置
CN106506163B (zh) Rom包处理方法及装置
CN104158812B (zh) 一种终端应用的安全控制方法及系统
CN111400771A (zh) 目标分区的校验方法及装置、存储介质、计算机设备
CN115617471A (zh) 一种业务调用的方法、装置、存储介质及电子设备
CN113553068B (zh) 一种下载应用包的方法、装置和电子设备
CN106909408A (zh) 一种调用应用程序的apk插件的方法及装置
CN108171063A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20170630

RJ01 Rejection of invention patent application after publication