平码五不中公式规律
  • / 28

在容器化工作空间环境中修改ANDROID应用生命周期以控制其执行的方法.pdf

关 键 ?#21097;?/dt>
容器 化工 空间 环境 修改 ANDROID 应用 生命周期 控制 执行 方法
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201580045075.4

申请日:

2015.01.13

公开号:

CN106663018A

公开日:

2017.05.10

当前法律状态:

实审

?#34892;?#24615;:

审中

法?#19978;?#24773;: 实质审查的生效IPC(主分类):G06F 9/445申请日:20150113|||公开
IPC分类号: G06F9/445; G06F11/34; G06F21/30 主分类号: G06F9/445
申请人: 甲骨文国?#20351;?#21496;
发明人: M·阿米尔; A·U·瑞曼
地址: 美国加利福尼亚
优?#28909;ǎ?/td> 2014.09.24 US 62/054,853; 2015.01.12 US 14/594,377
专利代理机构: 中国国际贸?#29366;?#36827;委?#34987;?#19987;利商标事务所 11038 代理人: 李晓芳
PDF完整版?#30053;兀?/td> PDF?#30053;?/a>
法律状态
申请(专利)号:

CN201580045075.4

授权公告号:

|||

法律状态公告日:

2017.09.12|||2017.05.10

法律状态类型:

实质审查的生效|||公开

摘要

描述了在Google应用的应用程序清单文件和字节码中修改该Google应用的生命周期的方法、设备和系统,以使得应用的执行可以经由安装在基于Android的设备上的工作空间应用管理的策略和安全性来控制。在调用原始类之前调用安全代码的假包装器类被插入到用于网络和I/O系统调用的字节码中。

权利要求书

1.一?#20013;?#25913;移动设备应用的生命周期的方法,所述方法包括:
提供应用清单文件和字节码文件,所述应用清单文件和字节码文件对应于计算机软件
应用;
将应用类的原始方法重命名为所述字节码文件中的重命名的方法;
在所述字节码文件中的应用类中插入包装器方法,所述包装器方法具有所述原始方法
的名称,所述包装器方法被配置为在调用所述重命名的方法之前调用认证或?#29992;?#26041;法;
将原始内容提供器类的名称修改为所述应用清单文件中的经修改的内容提供器类名
称;以及
在所述字节码文件中创建包装器内容提供器类,所述包装器内容提供器类具有所述经
修改的内容提供器类名称,所述包装器内容提供器类被配置为在转发?#36816;?#36848;原始内容提供
器类的方法的调用之前检查所述原始内容提供器类是否被实例化。
2.如权利要求1所述的方法,还包括:
将活动类的原始方法的名称重命名为所述字节码文件中所述活动类的重命名的方法;
以及
在所述字节码文件中的所述活动类中插入假方法,所述假方法具有所述活动类的所述
原始方法的名称,所述假方法被配置为在调用所述活动类的所述重命名的方法之前调用认
证或?#29992;?#26041;法。
3.如权利要求1或权利要求2所述的方法,其中所述应用清单文件中的所有内容提供器
类名称被重命名。
4.如前述权利要求中的任?#25105;?#39033;权利要求所述的方法,还包括:
通过所述包装器方法读取策略,其中?#36816;?#36848;认证或?#29992;?#26041;法的调用基于所述策略。
5.如权利要求4所述的方法,其中所述策略?#26377;?#24687;?#38469;?IT)部门?#29615;?#36865;到其上安装所
述移动设备应用的移动设备。
6.如前述权利要求中的任?#25105;?#39033;权利要求所述的方法,其中所述包装器方法包括对移
动设备管理器应用的调用。
7.如前述权利要求中的任?#25105;?#39033;权利要求所述的方法,其中所述原始方法包括静态块
初始化。
8.如前述权利要求中的任?#25105;?#39033;权利要求所述的方法,其中所述原始方法包括构造
器。
9.如权利要求8所述的方法,还包括:
重命名应用静态初始化方法、应用构造器方法、应用attachBaseContext()方法、内容
提供器静态初始化方法、内容提供器构造器方法、内容提供器onCreate()方法、应用
onCreate()方法、启动器活动静态初始化方法、启动器活动构造器方法以及所述字节码文
件中的启动器活动onCreate()、onStart()和onResume()方法。
10.如前述权利要求中的任?#25105;?#39033;权利要求所述的方法,还包括:
将onCreate()、onStart()、onStop()、onRestart()、onPause()、onResume()或
onDestroy()方法插入到所述包装器类中。
11.如前述权利要求中的任?#25105;?#39033;权利要求所述的方法,其中所述原始方法的重命名
包括将前缀或后缀追加到所述原始方法,以创建所述重命名的方法。
12.如前述权利要求中的任?#25105;?#39033;权利要求所述的方法,其中所述应用清单文件包括
可扩展标记语言(XML)代码。
13.如前述权利要求中的任?#25105;?#39033;权利要求所述的方法,其中所述字节码文件是用于
Google计算机应用的Google可执行(DEX)字节码文件。
14.如权利要求13所述的方法,还包括:
从Google应用包(APK)文件提取所述应用清单文件和所述字节码文件。
15.一?#21482;?#22120;可读非暂态介?#21097;?#25152;述机器可读非暂态介质包含指示用于使一个或多个
机器执行用于修改移动设备应用的生命周期的操作的指令的信息,所述操作包括:
提供应用清单文件和字节码文件,所述应用清单文件和字节码文件对应于计算机软件
应用;
将应用类的原始方法重命名为所述字节码文件中的重命名的方法;
在所述字节码文件中的所述应用类中插入包装器方法,所述包装器方法具有所述原始
方法的名称,所述包装器方法被配置为在调用所述重命名的方法之前调用认证或?#29992;?#26041;
法;
将原始内容提供器类的名称修改为所述应用清单文件中的经修改的内容提供器类名
称;以及
在所述字节码文件中创建包装器内容提供器类,所述包装器内容提供器类具有所述经
修改的内容提供器类名称,所述包装器内容提供器类被配置为在转发?#36816;?#36848;原始内容提供
器类的方法的调用之前检查所述原始内容提供器类是否被实例化。
16.如权利要求15所述的介?#21097;?#20854;中所述操作还包括:
将活动类的原始方法的名称重命名为所述字节码文件中的所述活动类的重命名的方
法;以及
在所述字节码文件中的所述活动类中插入假方法,所述假方法具有所述活动类的所述
原始方法的名称,所述假方法被配置为在调用所述活动类的所述重命名的方法之前调用认
证或?#29992;?#26041;法。
17.如权利要求15或权利要求16所述的介?#21097;?#20854;中所述应用清单文件中的所有内容提
供器类名称被重命名。
18.一种用于修改移动设备应用的生命周期的计算机系统,该系统包括:
处理器,以及
与处理器可操作地耦接的存储器,所述处理器执行来?#36816;?#36848;存储器的指令,包括:
用于提供应用清单文件和字节码文件的程序代码,所述应用清单文件和字节码文件对
应于计算机软件应用;
用于将应用类的原始方法重命名为所述字节码文件中的重命名的方法的程序代码;
用于在所述字节码文件中的所述应用类中插入包装器方法的程序代码,所述包装器方
法具有所述原始方法的名称,所述包装器方法被配置为在调用所述重命名的方法之前调用
认证或?#29992;?#26041;法;
用于将原始内容提供器类的名称修改为所述应用清单文件中的经修改的内容提供器
类名称的程序代码;以及
用于在所述字节码文件中创建包装器内容提供器类的程序代码,所述包装器内容提供
器类具有所述经修改的内容提供器类名称,所述包装器内容提供器类被配置为在转发?#36816;?br />述原始内容提供器类的方法的调用之前检查所述原始内容提供器类是否被实例化。
19.如权利要求18所述的系统,其中所述处理器执行还包括以下程序代码的指令:
用于将活动类的原始方法的名称重命名为所述字节码文件中的所述活动类的重命名
的方法的程序代码;以及
用于在所述字节码文件中的所述活动类中插入假方法的程序代码,所述假方法具有所
述活动类的所述原始方法的名称,所述假方法被配置为在调用所述活动类的所述重命名的
方法之前调用认证或?#29992;?#26041;法。
20.如权利要求18或19所述的系统,其中所述应用清单文件中的所有内容提供器类名
称被重命名。

?#24471;?#20070;

在容器化工作空间环境中修改ANDROID应用生命周期以控制其执行的方法

对相关申请的交叉引用

本申请是于2015年1月12日提交的美国申请No.14/594,377的?#26377;?#24182;且要求该美
国申请的权益,该美国申请要求于2014年9月24日提交的美国临时申请No.62/054,853的权
益,出于所有目的将这两个申请的全部内容通过引用并入本文。

本申请涉及于2013年3月15日提交的美国申请No.13/841,498以及于2014年3月14
日提交的美国申请No.14/213,244但不要求这两个申请的优?#28909;ǎ?#20986;于所有目的将这两个
申请的全部内容通过引用并入本文。

?#38469;?#39046;域

一般而言,本申请涉及数据处理。具体而言,本申请涉及用于向移动设备和其它设
备上的软件应用提供安全服务的系统、方法和机器可读介?#21097;?#20854;中安全服务包括认证、授
权、审计、单点登录、安全策略实施、密钥管理和分发、安全通信、安全数据存储和安全数据
共享?#21462;?br />

背景?#38469;?br />

在移动设备上方便地访问企业资源是一个反复出现的问题。一旦移动设备管理
(MDM)解决方案被安装在移动设备上,则几乎移动设备上的所有内容成为企业数据。如果移
动设备的用户希望将它用于非企?#30340;?#30340;,则这可能是次优的。

应用(或它们有时被称为“app”)被频繁地更新和修订。电子邮件应用每隔几个月
就打更新补丁并不是罕见的。移动设备和其它计算设备常常具?#34892;?#22810;应用,这些应用中的
每个应用被频?#22791;?#26032;。这可能使得保护移动设?#35813;?#21463;黑客攻击是困难的,因为计算设备的
安全一般仅取决于其最薄弱的一环。如果一个应用遭受安全异常,则潜在地可能危及设备
上的数据中的所有数据。

由于这些安全漏洞,许多公司不允许通过雇员自己的设备对他们的公司网络的访
问(通常被称为?#28304;?#35774;备(BYOD)访问)。除非雇员同意上文描述的锁定用户设备上的所有内
容的MDM解决方?#31119;?#21542;则公司不采纳BYOD的理念。替代方案是雇主为雇员提供用于企业访问
的电子设备;然而,这?#21069;?#36149;的并且需要更新基础设施。

移动设备上的应用的更好安全性、灵活性和集成是所需要的。

发明内容

一般而言,描述了用于在移动应用被安装到计算设备上之前自动将移动应用“容
器化(containerize)”以使得应用的网络调用和输入/输出(I/O)调用中的全部网络调用和
I/O调用之前都有必要的用户认证、令牌选择和/或?#29992;?#30340;系统、设备和方法。在本机应用在
构造器调用或网络调用或I/O调用中执行任何代码之前,执行安全代码。

“容器化器(containerizer)”应用以本机的、未修改的应用作为输入并且输出容
器化的、经修改的应用。具体而言,从Google应用包(APK)文件提取用于Google
计算机应用的ApplicationManifest.XML文件和Google可执行文
件(DEX)字节码文件。为应用、内容提供器(Content Provider)和活动创建包装器类和假
(dummy)生命周期方法。一个目的是创建假生命周期,以使得在认证完成之?#23433;?#25191;行原始代
码;一旦认证成功完成,则在执行实际应用代码之前获取和应用策略。

移动设备应用的生命周期可以被修改。方法将APK文件解码并且从APK文件提取
Android清单和DEX文件。该方法从清单读取应用类名,然后解析应用类的字节码,重命名方
法CLINIT(静态初始化器)、INIT(构造器)、attachBaseContext和onCreate(应用生命周期
方法),并且插入具?#24615;?#22987;名称(即,CLINIT、INIT、attachBaseContext和onCreate)的空白
假方法。在处理应用类之后,该方法从清单获取内容提供器类的名称,并且通过追加后缀常
量来修改(清单中的)这些名称。然后,该方法利用字节码操纵来为内容提供器创建充当原
始内容提供器之上的包装器/委托类的具有经修改的名称的类。一旦生成了用于内容提供
器的包装器,则该方法从清单文件读取活动的名称,它利用字节码解析器来重命名方法
CLINIT、INIT和生命周期方法(onCreate、onResume、onStart、onRestart、onPause、onStop、
onDestroy、finish)并且在它们的位置中创建假方法。另外,在DEX文件中添加假启动器活
动,并且该假启动器活动的名称作为(移除来自原始启动器活动的启动器属性的)启动器活
动被添加到清单文件中,这是启动应用?#24065;?#35843;用的第一个活动。一旦应用生命周期控制进
来,则触发假启动器活动认证并?#19968;?#21462;策略。此后,调用(invoke)原始启动器活动。

用假方法/类代替原始生命周期方法/类的目的是使得在完成认证和获取策略之
?#23433;?#25191;行应用代码。容器化器不仅修改生命周期,而且可以包装文件系统调用和网络调用,
以在这些调用中注入安全性。例如,在设备上写入任何数据之前,数据将被?#29992;埽?#24182;且将在
读取操作中被解密。类似地,所有网络调用可以通过安装在企业网络中的网关来代理,以使
得可以通过适当的信道来控制和路由所有网络业务。为了执行网络拦截,类似于对写/读操
作的?#29992;?解密,从路由业务的网络进行认证可能是重要的;密钥管理器应当被初始化。一
旦认证完成,则可以初始化密钥管理器,并且接收认证令牌以通过网络通信。以相同的序列
触发被重命名的原始生命周期方法/类。在一些实例中,可以只在控制进入活动生命周期
(例如,活动的onCreate/onResume)中时,才调用认证。因此,原始生命周期被假生命周期代
替。一旦认证发生,则原始生命周期在认证之后被调用。

当启动容器化的应用时,发生的第一件事是应用类的初始化。由于所有的初始化/
生命周期方法被重命名,因此该代码都没有被执行。相反,(由容器化器注入的)假方法被执
行。在应用类初始化之后,内容提供器被初始化并且用于内容提供器的(由容器化器注入
的)包装器类被初始化。

在应用和内容提供器初始化之后,应用生命周期进入假启动器活动,假启动器活
动触发认证并且在成功认证之后初始化密钥管理器和网络管理器。在此之后,触发原始生
命周期。第一个应用的类(重命名的CLINIT、重命名的INIT和重命名的attachBaseContext)
被调用。在执行重命名的生命周期方法之后,应用类原始内容提供器类被初始化并且它们
的onCreate被调用。一旦原始内容提供器被初始化,则应用的类的原始onCreate被调用。完
成所有这些之后,调用原始启动器活动并且相应地调用剩余的应用功能。

有时候,可以在某些具体活动时触发应用,在这些具体活动中在应用类和内容提
供器初始化之后,控制不进入假启动器活动而是直接进入被调用的活动。出于该原因,我们
在活动中重命名了静态初始化器(CLINIT)、构造器(INIT)和生命周期方法,并且在所有活
动中添加了用于活动生命周期的假方法。这些假方法在调用原始的重命名的生命周期方法
之前检查认证。如果未认证,则onCreate/onResume的假方法触发认证。成功认证后,用于应
用和内容提供器初始化的原始生命周期被触发。此后,调用活动的原始CLINIT、INIT和
onCreate,然后相应地进行剩余的应用流。

本发明的一些实施例涉及一?#20013;?#25913;移动设备应用的生命周期的方法。该方法包
括:提供应用清单文件和字节码文件,该应用清单文件和字节码文件对应于计算机软件应
用;将应用类的原始方法重命名为字节码文件中的重命名的方法;将包装器方法插入字节
码文件中的应用类中,该包装器方法具?#24615;?#22987;方法的名称,该包装器方法被配置为在调用
重命名的方法之前调用认证或?#29992;?#26041;法;将原始内容提供器类的名称修改为应用清单文件
中的经修改的内容提供器类名称;以及在字节码文件中创建包装器内容提供器类,包装器
内容提供器类具有经修改的内容提供器类名称,包装器内容提供器类被配置为在转发对原
始内容提供器类的方法的调用之前检查原始内容提供器类是否被实例化。

该方法还可以包括将活动类的原始方法的名称重命名为字节码文件中该活动类
的重命名的方法,并且在字节码文件中的该活动类中插入假方法,该假方法具有活动类的
原始方法的名称,该假方法被配置为在调用活动类的重命名的方法之前调用认证或?#29992;?#26041;
法。

应用清单文件中的所有内容提供器类名称可以被重命名。该方法还可以包括由包
装器方法读取策略,其中对认证或?#29992;?#26041;法的调用基于策略。策略可以?#26377;?#24687;?#38469;?IT)部
门发送到移动设备应用安装在其上的移动设备。

包装器方法可以包括对移动设备管理器应用的调用。原始方法可以包括静态块初
始化。原始方法可以包括构造器。该方法还可以包括重命名应用静态初始化方法、应用构造
器方法、应用attachBaseContext()方法、内容提供器静态初始化方法、内容提供器构造器
方法、内容提供器onCreate()方法、应用onCreate()方法、启动器活动静态初始化方法、启
动器活动构造器方法以及字节码文件中的启动器活动onCreate()、onStart()和onResume
()方法。

该方法还可以包括将onCreate()、onStart()、onStop()、onRestart()、onPause
()、onResume()或onDestroy()方法插入到包装器类中。原始方法的重命名可以包括将前
缀或后缀追加到原始方法,以创建重命名的方法。应用清单文件可以包括可扩展标记语言
(XML)代码。字节码文件可以是用于Google计算机应用的Google可
执行文件(DEX)字节码文件。该方法还可以包括从Google应用包(APK)文件提
取应用清单文件和字节码文件。

其它实施例涉及执行上文引用的方法的系统以?#23433;?#29992;或存储用于上文描述的方
法的指令的机器可读?#34892;未?#20648;介质。

本发明内容既不旨在识别要求保护的主题的关键特征或必要特征,也不旨在单独
用来确定要求保护的主题的范围。应当通过参考本专利的整个?#24471;?#20070;的适当的部分、任何
或全部附图以及每项权利要求来理解主题。

附图?#24471;?br />

图1?#22659;?#20102;根据实施例的连接到受保护的公司网络的移动设备。

图2A-2B?#22659;?#20102;根据实施例来修订应用清单文件。

图3A-3B?#22659;?#20102;根据实施例来修订字节码文件。

图4?#22659;?#20102;根据实施例的对应用生命周期的修改。

图5是?#22659;?#26681;据实施例的过程的流程图。

图6绘出了用于实现实施例中的一个实施例的联网系统的简化示意图。

图7?#22659;?#20102;其中可以实现本发明的各种实施例的示例性计算机系统。

图8?#22659;?#20102;可以在其中实现本发明的各种实施例的、用于修改移动设备应用的生
命周期的示例性系统的简化结构图。

具体实施方式

在下面的描述中,出于解释的目的,阐述了具体的细节,以便于提供?#21592;?#21457;明的实
施例的透彻理解。然而,将明显的是,可以在没有这些具体细节的情况下实践各种实施例。
附图和描述不旨在是限制性的。

可以以各种配置提供附图中的一些图中绘出的系统。在一些实施例中,系统可以
被配置为其中系统的一个或多个组件跨云计算系统中的一个或多个网络分布的分布式系
统。

本发明的方面涉及如何在基于Google操作系统(OS)的设备上执行安
全容器化。描述了如何在Android平台上实现容器化目标。它定义了如何拦截Android应用
生命周期并且执行注入以实现期望目标的过程。

容器化是一种保护移动应用的新方法。容器化可以提供安全的工作空间,并且围
绕它集成其它应用,以便这些其它应用与工作空间一起共享容器化环境的生态系统。

现有的行?#21040;?#20915;方案只是在移动设备上安装MDM;之后,设备?#34892;?#22320;成为企业的财
产。甚至个人应用也要遵守企业策略。

通过诸如本文描述的移动工作空间解决方案之类的移动工作空间解决方?#31119;?#20010;人
数据和企业数据可以保持在分开的控制下。在容器化环境中工作的企业应用及其数据仍然
受公司策略的控制。它们的网络访问和文件系统访问在容器化环境中以常见的方式被保
护。

这样的移动工作空间解决方案的?#38469;?#20248;点是它可以:

-为移动应用增加安全性;

-提供安全的网络和文件访?#21097;?br />

-提供对应用的经认证的访?#21097;?br />

-提供对应用程序的策略控制;

-提供数据泄漏保护;以及

-提供对设备上的容器化环境的控制,该容器化环境可以从管理控制台锁定/擦
除/清除,而不影响设备上的个人数据。

方法

Google应用的一般生命周期通常包括以下内容:

-应用类初始化

-静态初始化

-构造器初始化

-attachBaseContext()应用生命周期初始化

-内容提供器

-静态初始化

-构造器初始化

-onCreate()内容提供器生命周期初始化

-onCreate()应用生命周期初始化

-启动器活动初始化

-静态初始化

-构造器初始化

-onCreate()、onStart()、onResume()活动生命周期初始化

人们可以更改这个生命周期,以便于迫使来自应用的每个网络调用和I/O调用预
先检查安全策略和/或运行安全检查。

图1?#22659;?#20102;根据实施例的连接到受保护的公司网络的移动设备。在系统100中,智
能电话102经广域网110与公司网络120通信。

在智能电话102中,在虚拟机(VM)106上运行的应用108被拒绝与外部实
体的直接连接。替代地,关键构造器和初始化的包装器迫使网络调用经过移动数据管理器
(MDM)104。移动数据管理器104可以检查设备的通信的认证令牌和其它安全相关的方面。应
用108?#34892;?#22320;通过到广域网110(诸如因特网)的移动数据管理器104与公司网络120通信。

在公司网络120上,所有传入和传出的网络业务由防火墙112检查和调节。移动设
备102对企业服务器114的调用可以采取企业web服务116的形式。例如,应用108可以利用
(tap into)由企业服务116提供的内部雇员记录。

公司的IT部门可以发布策略118,策略118的副本通过广域网110发送到移动设备
102。应用108中的包装器类可以查询可以采取可扩展标记语言(XML)文件的形式的策略的
副本,以便确定是否以及何?#34987;?#21462;用于某些事务的安全证书?#21462;?br />

图2A-2B?#22659;?#20102;根据实施例来修订应用清单文件。在图2A中,原始应用清单文件
202具?#24615;?#22987;类名称204“oracle.webcenter.content.android.documentsprovider.WCCFi
lesPr ovider?#34180;?#22312;由该类名称命名的元素内的是原始子元素。

在图2B中,经修订的应用清单文件206被示为具有被重命名为带“MyC14N”前缀的
重命名的类名称的原始类名称204。即,它被重命名为

“oracle.webcenter.content.android.documentsprovider.MyC14NWC
CFilesProvider?#34180;?#20855;有与原始类名称相同的类名称(即,“oracle.webcenter.content.android.
documentsprovider.WCCFilesPr ovider”)的另一新类定义210被添加。在新类定义下的是
新的子元素。新的子元素可以是或者可以不是原始子元素的副本。一些子元素可以被?#22659;?br />

图3A-3B?#22659;?#20102;根据实施例来修订字节码文件。

在图3A中,原始字节码文件302具?#24615;?#22987;类304“ContentProvider?#34180;?#22312;该类内的是
原始代码。

在图3B中,经修订的类型代码文件306被示为具有被重命名为带“MyC14N”前缀的
重命名的类的原始类名称。即,它被重命名为“MyC14NContentProvider?#34180;?#23427;的原始代码保
持不变。

具有与原始类“ContentProvider”相同的名称的新类310被添加。这个新类定义检
查它是否已经被实例化和初始化的变量。它还创建诸如onCreate()之类的包装器方法,这
些包装器方法读取策略,基于策略认证、?#29992;?解密或执行其它安全功能,然后调用原始类
的原始onCreate()函数。

图4?#22659;?#20102;用于拦截可以被采用的应用代码的执行的字节码操纵/注入。对于每个
可能的网络和文件系统操作,可以创建被注入到现有应用中的包装器类。可以在现有代码
中实现实际的字节码修改,从而用包装器类代替原始类。例如:

-一旦可以用定制的包装器类代替FileInputStream和FileOutputStream。

由于可能希望控制应用生命周期,因此可以使用用于注入/修改现有生命周期代
码的字节码操纵方法。

使用该方法的一个目的是在用户被允许执行应用之前使用户通过认证,并且在认
证之后从安全工作空间获取会话数据和?#29992;?#23494;钥。因此,网络调用和文件系统调用实际上
可以工作。一些包装器需要主?#29992;?#23494;钥来解码用来在每个文件操作中?#29992;?解密数据的加
密密钥。同样,对于网络调用,可以要求会话令牌,以确立对任何网络资源进行的调用的真
实性,所述对任何网络资源进行的调用可以经由Oracle移动安全网关或其它基于云的网关
来路由。

为了实现上面的用例,可以延迟整个应用生命周期并且引入假生命周期,以使得
可以首?#28909;?#35777;用户,然后获取主?#29992;?#23494;钥和会话令牌。

这里是根据实施例的应用生命周期中的分步列表。

-在操作402中应用类初始化发生。

-对于静态初始化404,在容器化步骤430中它被重命名为定制定义的、带常量前
缀/后缀的名称,以使得它可以稍后被调用并且被注入空的类初始化器。

-对于构造器初始化406,在容器化步骤432中它被重命名为定制定义的、带常量前
缀/后缀的名称,以使得它可以稍后被调用并且被注入空的类构造器。这可以?#36816;?#26377;可用的
构造器进行。它可以对超类的所有构造器进行,并且它们相应的super()调用也可以被改
变为上面提到的定制名称。

-在操作434中方法attachBaseContext()408可以被重命名为定制定义的、带常量
前缀/后缀的名称,以使得它可以稍后被调用并且被注入用于它的空方法。

-对于内容提供器初始化410,可以在操作436中为在应用中定义的每个内容提供
器注入假内容提供器并?#19968;?#21487;以改变相关联的清单XML(可扩展标记语言)中的引用。这些
假内容提供器又包含对原始内容提供器的引用,并且对该假内容提供器的所有方法调用都
被委托给原始内容提供器。在对任何接口方法进行第一次调用之前,内容提供器通常不被
正常地初始化。或者可以简单地称为,它是懒惰的初始化。例如,如果内容提供器是
MyContentProvider,则可以实现以下内容:

-将清单中的条目

<provider android:name=”MyContentProvider”>改成

<provider android:name=”MyC14NContentProvider”>

-将静态init 412和构造器init 414注入名为MyC14NContentProvider的类。



以这种方式,通过引入假内容提供者并且将它们的接口方法委托给原始类的原始
方法来延迟内容提供器的初始化。

-对于应用onCreate()初始化416,容器化器可以执行以下操作。

-诸如对于生命周期初始化418,可以在操作438中将onCreate()方法重命名为定
制定义的、带常量前缀/后缀的名称,以使得它可以稍后被调用并且继而被注入onCreate
()的假方法。这?#36816;?#26377;超类进行,并且super.onCreate()的调用可以委托给上面提到的重
命名的onCreate()方法。

-对于活动生命周期初始化,诸如对于启动器活动初始化420,可以在操作440中注
入假活动,使其成为启动器活动,并且从原始活动中移除启动器动作。一旦在假活动中获取
控制,则可以调用工作空间以供认证,工作空间将返回会话令牌和主?#29992;?#23494;钥。一旦获取了
密钥,则可以通过调用被重命名的原始方法来重新初始化整个周期。

-原始应用类静态初始化器422可以被调用。

-然后原始应用类构造器424可以被调用。

-原始应用类attachBaseContext()可以被调用。

-可以对假内容提供器调用Init(),Init()将初始化原始内容提供器。

-原始应用类onCreate()可以被调用。

-类似地,可以注入/修改原始现有活动的生命周期。

-可以在操作442中重命名426的onCreate()、onRestart()、onResume()方法,并
且注入定制定义的生命周期方法,在该定制定义的生命周期方法中将进行策略实现的任
务,然后调用原始的重命名的方法。例如:

-onCreate()重命名为onCreate_C14N()

-注入我们自己的onCreate()


-类似地,这可以对其它生命周期方法onStart()、onResume()、onPause()、
onStop()、onDestroy()执行。

-使用字节码修改/注入的相同方法,可以用自己定制的调用代替共享偏好的系统
调用和startActivity(),在该自己定制的调用中可以执行所有?#29992;?解密和策略检查,然
后调用原始的操作。

图5是?#22659;?#26681;据实施例的过程500的流程图。该过程可以由计算机通过执行处理器
中的指令或以其它方式来实现。在操作501中,提供应用清单文件和字节码文件,应用清单
文件和字节码文件对应于计算机软件应用。在操作502中,将应用类的原始方法重命名为字
节码文件中的重命名的方法。在操作503中,包装器方法被插入到字节码文件中的应用类
中,该包装器方法具?#24615;?#22987;方法的名称,该包装器方法被配置为在调用重命名的方法之前
调用认证或?#29992;?#26041;法。在操作504中,原始内容提供器类的名称被修改为应用清单文件中的
经修改的内容提供器类名称。在操作505中,在字节码文件中创建包装器内容提供器类,该
包装器内容提供器类具有经修改的内容提供器类名称,该包装器内容提供器类被配置为在
转发对原始提供器类的方法的调用之前检查原始内容提供器类是否被实例化。

在操作506中,活动类的原始方法的名称被重命名为字节码文件中该活动类的重
命名的方法。在操作507中,假方法被插入到字节码文件中的该活动类中,该假方法具有活
动类的原始方法的名称,该假方法被配置为在调用活动类的重命名的方法之前调用认证或
?#29992;?#26041;法。

计算机系统基础设施

图6绘出了用于实现实施例中的一个实施例的分布式系统600的简化示意图。在所
示的实施例中,分布式系统600包括一个或多个客户机计算设备602、604、606和608,该一个
或多个客户机计算设备被配置为经一个或多个网络610执行和操作客户机应用,诸如web浏
览器、专有客户机(例如,Oracle Forms)?#21462;?#26381;务器612可以经由网络610与远程客户机计算
设备602、604、606和608可通信地耦接。

在各种实施例中,服务器612可以适于运行由系统的组件中的一个或多个组件提
供的一个或多个服务或软件应用。在一些实施例中,这些服务可以作为基于web的服务或云
服务向客户机计算设备602、604、606和/或608的用户提供,或者在软件即服务(SaaS)模型
下向客户机计算设备602、604、606和/或608的用户提供。操作客户机计算设备602、604、606
和/或608的用户进而可以利用一个或多个客户机应用与服务器612交互,以利用由这些组
件提供的服务。

在图中所绘出的配置中,系统600的软件组件618、620和622被示为在服务器612上
实现。在其它实施例中,系统600的组件中的一个或多个组件和/或由这些组件提供的服务
还可以由客户机计算设备602、604、606和/或608中的一个或多个实现。然后,操作客户机计
算设备的用户可以利用一个或多个客户机应用来使用由这些组件提供的服务。这些组件可
以在硬件、固件、软件或其组合中实现。应当理解的是,各种不同的系统配置是可能的,这些
系统配置可以不同于分布式系统600。因此,图中所示的实施例是用于实现实施例系统的分
布式系统的一个示例,并?#20063;?#26088;在是限制性的。

客户机计算设备602、604、606和/或608可以是运行诸如Microsoft Windows
之类的软件和/或诸如iOS、Windows Phone、Android、BlackBerry 10、Palm OS
等之类的各种移动操作系统并?#31227;?#29992;因特网、电子邮件、短消息服务(SMS)、
或其它通信协议的便携式手持设备(例如,蜂窝电话、
计算平板、个人数字助理(PDA))或可穿戴设备(例如,Google?#21453;?#24335;显示
器)。客户机计算设备可以是通用个人计算机,举例来说,包括运行各种版本的Microsoft
Apple和/或Linux操作系统的个人计算机和/或膝上型计算
机。客户机计算设备可以是运行包括但不限于各种GNU/Linux操作系统(诸如像Google
Chrome OS)的各种商用的或类UNIX操作系统中的任何操作系统的工作站计算
机。可替代地或附加地,客户机计算设备602、604、606和608可以是能够经(一个或多个)网
络610通信的任何其它电子设备,诸如瘦客户机计算机、启用因特网的游戏系统(例如,具有
或不具有姿势输入设备的Microsoft Xbox游戏机)和/或个人消息传送设备。

虽然示例性分布式系统600被示为具有四个客户机计算设备,但是任何数量的客
户机计算设备可以被支持。诸如具有传感器的设备等之类的其它设备可以与服务器612交
互。

分布式系统600中的(一个或多个)网络610可以是本领域?#38469;?#20154;员熟悉的可以利
用各种商用协议中的任何商用协议支持数据通信的任何类型的网络,所述各种商用协议包
括但不限于TCP/IP(传输控制协议/因特网协议)、SNA(系统网络架构)、IPX(互联网分组交
换)、AppleTalk?#21462;?#20165;仅作为示例,(一个或多个)网络610可以是局域网(LAN),诸如基于以
太网、令牌环和/或其它网络的LAN。(一个或多个)网络610可以是广域网和因特网。它可以
包括虚拟网络,该虚拟网络包括但不限于虚拟专用网络(VPN)、内联网、外联网、公共交换电
话网络(PSTN)、红外网络、无线网络(例如,在电气和电?#26377;?#20250;(IEEE)802.11协议族中的任
何协议、和/或任何其它无线协议下操作的网络);和/或这些网络和/或其它
网络的任何组合。

服务器612可以包括一个或多个通用计算机、专用服务器计算机(举例来说,包括
PC(个人计算机)服务器、服务器、中型服务器、大型计算机、机架式服务器等)、服
务器场、服务器集群或任何其它适当的布置和/或组合。在各种实施例中,服务器612可以适
于运行在前述公开内容中描述的一个或多个服务或软件应用。例如,服务器612可以对应于
用于执行根据本公开的实施例的上文描述的处理的服务器。

服务器612可以运行包括上面讨论的操作系统中的任何操作系统以及任何商用的
服务器操作系统的操作系统。服务器612还可以运行各种附加的服务器应用和/或中间层应
用中的任何服务器应用和/或中间层应用,包括HTTP(超文本传输协议)服务器、FTP(文件传
输协议)服务器、CGI(公共网关接口)服务器、服务器、数据库服务器?#21462;?#31034;例性数
据库服务器包括但不限于来自Oracle、Microsoft、Sybase、IBM(国际商业机器)等的商用数
据库服务器。

在一些实施方式中,服务器612可以包括一个或多个应用,以分析和整合从客户机
计算设备602、604、606和608的用户接收到的数据馈送和/或事件更新。作为示例,数据馈送
和/或事件更新可以包括但不限于从一个或多个第三方信息源和?#20013;?#25968;据流接收到的
馈送、更新或实?#22791;?#26032;,该一个或多个第三方信息源和?#20013;?#25968;据
流可以包括与传感器数据应用、金融收报机(ticker)、网络性能测量工具(例如,网络监视
和业务管理应用)、点击流分析工具、汽?#21040;?#36890;监视?#35748;?#20851;的实时事件。服务器612还可以包
括经由客户机计算设备602、604、606和608的一个或多个显示设备显示数据馈送和/或实时
事件的一个或多个应用。

分布式系统600还可以包括一个或多个数据库614和616。数据库614和616可以驻
留在各种位置中。作为示例,数据库614和616中的一个或多个可以驻留在服务器612?#38236;?br />(和/或驻留在服务器612中)的非暂态存储介质上。可替代地,数据库614和616可以?#29420;?#26381;
务器612,并且经由基于网络的或专用的连接与服务器612通信。在一组实施例中,数据库
614和616可以驻留在存储区域网络(SAN)中。类似地,用于执行属于服务器612的功能的任
何必要的文件可以适当地在服务器612?#38236;?#23384;储和/或远程存储。在一组实施例中,数据库
614和616可以包括适于响应于SQL格式的命令来存储、更新和检索数据的关系数据库,诸如
由Oracle提供的数据库。

图7?#22659;?#20102;其中可以实现本发明的各种实施例的示例性计算机系统700。计算机系
统700可以被用来实现上文描述的计算机系统中的任何计算机系统。如图中所示,计算机系
统700包括经由总线子系统702与若干外围子系统通信的处理单元704。这些外围子系统可
以包括处理加速单元706、I/O子系统708、存储子系统718和通信子系统724。存储子系统718
包括?#34892;?#30340;计算机可读存储介质722和系统存储器710。

总线子系统702提供用于使计算机系统700的各种组件和子系统按照预期彼此通
信的机制。虽然总线子系统702被示意性地示为单条总线,但是总线子系统的替代实施例可
以利用多条总线。总线子系统702可以是若干类型的总线结构中的任何总线结构,包括利用
各种总线架构中的任何总线架构的存储器总线或存储器控制器、外围总线和局部总线。例
如,这样的总线架构可以包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA
(EISA)总线、视频电子标准协会(VESA)局部总线以及可以被实现为根据IEEE P1386.1标准
制造的夹层(Mezzanine)总线的外围组件互连(PCI)总线。

可以被实现为一个或多个集成电路(例如,常规的微处理器或微控制器)的处理单
元704控制计算机系统700的操作。处理单元704中可以包括一个或多个处理器。这些处理器
可以包括单核或多核处理器。在某些实施例中,处理单元704可以被实现为具有包括在每个
处理单元中的单个或多核处理器的一个或多个独立处理单元732和/或734。在其它实施例
中,处理单元704还可以被实现为通过将两个双核处理器集成到单个芯片中而形成的四核
处理单元。

在各种实施例中,处理单元704可以响应于程序代码而执行各种程序,并且可以维
护多个并发执行的程序或过程。在任何给定的时间,要执行的程序代码中的一些或全部可
以驻留在(一个或多个)处理器704和/或存储子系统718中。通过适当的编程,(一个或多个)
处理器704可以提供上文描述的各种功能。计算机系统700可以附加地包括处理加速单元
706,处理加速单元706可以包括数?#20013;?#21495;处理器(DSP)、专用处理器和/或其它处理器。

I/O子系统708可以包括用户接口输入设备和用户接口输出设备。用户接口输入设
备可以包括键盘、诸如鼠标或轨迹球之类的指示设备、结?#31995;?#26174;示器中的触摸板或触摸屏、
滚轮、点拨轮、拨盘、按钮、开关、键板、具有语音命令识别系统的音频输入设备、麦克风以及
其它类型的输入设备。用户接口输入设备可以包括例如使得用户能够利用姿势和口头命令
通过自然用户接口来控制输入设备(诸如Microsoft360游戏控制器)并与其交互
的诸如Microsoft运动传感器之类的运动感测和/或姿势识别设备。用户接口输
入设备还可以包括眼部姿势识别设备,诸如检测来自用户的眼睛活动(例如,当?#32435;閫计?br />和/或进行菜单选择时的“眨眼”)并且将眼部姿势变换为到输入设备(例如,Google
)中的输入的Google眨眼检测器。附加地,用户接口输入设备可以包括使
得用户能够通过语音命令与语音识别系统(例如,?#24049;?#22120;)交互的语音识别感测设
备。

用户接口输入设备还可以包括但不限于三维(3D)鼠标、操纵杆或指示杆、游戏板
和图形平板、以及音频/视觉设备,诸如扬声器、数码照相机、数字摄像机、便携式媒体播放
器、网络摄像机、图像扫描仪、指纹扫描仪、条形码读取器3D扫描仪、3D打印机、激光测距仪、
以及视线跟踪设备。附加地,用户接口输入设备可以包括例如医疗?#19978;?#36755;入设备,诸如计算
机断层扫描、磁共振?#19978;瘛?#27491;电子发射断层扫描、医疗超声检查设备。用户接口输入设备还
可以包括例如音频输入设备,诸如MIDI键盘、数字乐器?#21462;?br />

用户接口输出设备可以包括显示子系统、指示器灯或者诸如音频输出设备之类的
非视觉显示器?#21462;?#26174;示子系统可以是阴极射线管(CRT)、诸如利用液晶显示器(LCD)或等离
子体显示器的平板设备之类的平板设备、投影设备、触摸屏?#21462;?#19968;般而言,术语“输出设备”
的使用旨在包括用于向用户或其它计算机输出来自计算机系统700的信息的所有可能类型
的设备和机构。例如,用户接口输出设备可以包括但不限于可视地传达文本、图形和音频/
视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽?#26723;己?#31995;统、绘图仪、语音
输出设备和调制解调器。

计算机系统700可以包括存储子系统718,存储子系统718包括被示为当前位于系
统存储器710内的软件元件。系统存储器710可以存储可在处理单元704上加载和执行的程
序指令以及在这些程序的执行期间生成的数据。

取决于计算机系统700的配置和类型,系统存储器710可以是?#36164;?#24615;的(诸如随机
存取存储器(RAM))和/或非?#36164;?#24615;的(诸如只读存储器(ROM)、闪存存储器,等等)。RAM通常
包含可由处理单元704立即访问和/或当?#23433;?#20316;和执行的数据和/或程序模块。在一些实施
方式中,系统存储器710可以包括多种不同类型的存储器,诸如静态随机存取存储器(SRAM)
或动态随机存取存储器(DRAM)。在一些实施方式中,包含有助于诸如在启动期间在计算机
系统700内的元件之间传送信息的基本例程的基本输入/输出系统(BIOS)通常可以存储在
ROM中。作为示例而非限制,系统存储器710还?#22659;?#20102;应用程序712、程序数据714以?#23433;?#20316;系
统716,应用程序712可以包括客户机应用、Web浏览器、中间层应用、关系数据库管理系统
(RDBMS)?#21462;?#20316;为示例,操作系统716可以包括各种版本的MicrosoftApple
和/或Linux操作系统、各种商用的或类UNIX操作系统(包括但不
限于各种GNU/Linux操作系统、GoogleOS等)和/或移动操作系统(诸如iOS、
Phone、OS、10OS和OS操作系统)。

存储子系统718还可以提供用于存储提供一些实施例的功能的基本编程和数据构
造的?#34892;?#30340;计算机可读存储介质。当由处理器执行时提供上文描述的功能的软件(程序、代
码模块、指令)可以被存储在存储子系统718中。这些软件模块或指令可以由处理单元704执
行。存储子系统718还可以提供用于存储根据本发明使用的数据的存储库。

存储子系统700还可以包括可以被进一步连接到计算机可读存储介质722的计算
机可读存储介质读取器720。与系统存储器710一起并且可选地与系统存储器710组?#24076;?#35745;算
机可读存储介质722可以全面地表示远程存储设备、?#38236;?#23384;储设备、固定存储设备和/或可
移动存储设备?#30001;?#29992;于临时和/或较永久地包含、存储、传输和检索计算机可?#21015;?#24687;的存储
介质。

包含代码或代码的部分的计算机可读存储介质722还可以包括本领域已知或使用
的任何适当的介?#21097;?#21253;括存储介质和通信介?#21097;?#35832;如但不限于以用于信息的存储和/或传输
的任何方法或?#38469;?#23454;现的?#36164;?#24615;和非?#36164;?#24615;介质、可移动和不可移动介质。这可以包括有
形的计算机可读存储介?#21097;?#35832;如RAM、ROM、电可擦除可编程ROM(EEPROM)、闪存存储器或其它
存储器?#38469;酢D-ROM、数字多功能盘(DVD)或其它光学存储装置、盒式磁带、磁带、磁盘存储
设备或其它磁性存储设备、或者其它?#34892;?#30340;计算机可读介质。这还可以包括非?#34892;?#30340;计算
机可读介?#21097;?#35832;如可以被用来传输期望的信息并且可以由计算系统700访问的数据信号、数
据传输或任何其它介质。

作为示例,计算机可读存储介质722可以包括从不可移动、非?#36164;?#24615;磁介质读取或
向其写入的?#25165;?#39537;动器,从可移动、非?#36164;?#24615;磁盘读取或向其写入的磁盘驱动器,以及从可
移动、非?#36164;?#24615;光盘(诸如CD-ROM、DVD和盘)或其它光学介质读取或向其写入
的光盘驱动器。计算机可读存储介质722可以包括但不限于驱动器、闪存存储器卡、
通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字视频带?#21462;?#35745;算机可读存储
介质722还可以包括基于非?#36164;?#24615;存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、
企业闪存驱动器、固态ROM等)、基于?#36164;?#24615;存储器的SSD(诸如基于固态RAM的SSD、基于动态
RAM的SSD、基于静态RAM的SSD、基于DRAM的SSD、磁阻RAM(MRAM)SSD),以及使用基于DRAM的
SSD和基于闪存存储器的SSD的组合的混合SSD。盘驱动器及其相关联的计算机可读介质可
以为计算机系统700提供计算机可读指令、数据结构、程序模块和其它数据的非?#36164;?#24615;存
储。

通信子系统724提供到其它计算机系统和网络的接口。通信子系统724充当用于从
来自计算机系统700的其它系统接收数据以及向来自计算机系统700的其它系统传输数据
的接口。例如,通信子系统724可以使得计算机系统700能够经由因特网连接到一个或多个
设备。在一些实施例中,通信子系统724可以包括用于(例如,利用蜂窝电话?#38469;酢?#22686;强的数
据网络?#38469;?诸如3G、4G或EDGE(用于全球演进的增强的数据率))、WiFi(IEEE 802.11族标
准)、或其它移动通信?#38469;酢?#25110;者其任何组合)访问无线语音网络和/或数据网络的射频(RF)
收发器组件、全球定位系统(GPS)接收器组件和/或其它组件。在一些实施例中,除了无线接
口之外或作为无线接口的代替,通信子系统724可以提供有线网络连接(例如,以太网)。

在一些实施例中,通信子系统724还可以代表可以使用计算机系统700的一个或多
个用户接收以结构化和/或非结构化数据馈送726、事件流728、事件更新730等形式的输入
通信。

作为示例,通信子系统724可以被配置为实时地接收来自社交网络的用户和/或诸
如馈送、更新、web馈送(诸如丰富?#38236;?#25688;要(RSS)馈送)之类的其
它通信服务的数据馈送726,和/或来自一个或多个第三方信息源的实?#22791;?#26032;。

此外,通信子系统724还可以被配置为接收没有明?#26041;?#26463;的本质上可以是连续的
或无界的连续数据流形式的数据,其中连续数据流可以包括实时事件的事件流728和/或事
件更新730。生成连续数据的应用的示例可以包括例如传感器数据应用、金融收报机、网络
性能测量工具(例如,网络监视和业务管理应用)、点击流分析工具、汽?#21040;?#36890;监视?#21462;?br />

通信子系统724还可以被配置为向可以与耦接到计算机系统700的一个或多个流
数据源计算机通信的一个或多个数据库输出结构化和/或非结构化数据馈送726、事件流
728、事件更新730?#21462;?br />

计算机系统700可以?#21069;?#25324;手持便携式设备(例如,蜂窝电话、
计算平板、PDA)、可穿戴设备(例如,Google?#21453;?#24335;显示器)、PC、工作站、大型机、信
息亭(kiosk)、服务器机架或任何其它数据处理系统的各种类型中的一种类型。

由于计算机和网络的不断变化的本?#21097;?#22270;中绘出的计算机系统700的描述仅旨在
作为具体示例。具有比图中绘出的系统更多或更少的组件的许多其它配置是可能的。例如,
定制的硬件还可以被使用和/或特定的元件可以在硬件、固件、软件(包括小程序)或其组合
中实现。此外,可以采用到其它计算设备(诸如网络输入/输出设备)的连接。基于本文提供
的公开内容和教?#36857;?#26412;领域普通?#38469;?#20154;员将理解实?#25351;?#31181;实施例的其它方式和/或方法。

图8?#22659;?#20102;其中可以实现本发明的各种实施例的、用于修改移动设备应用的生命
周期的示例性系统800的简化结构图。

如图8中所示,示例性系统800可以包括第一提供单元801、第一重命名单元802、第
一插入单元803、第一修改单元804和第一创建单元805。第一提供单元801可以被配置为提
供相关联的应用清单文件和字节码文件,该应用清单文件和该字节码文件对应于计算机软
件应用。第一重命名单元802可以被配置为将应用类的原始方法重命名为字节码文件中的
重命名的方法。第一插入单元803可以被配置为在字节码文件中的应用类中插入包装器方
法,该包装器方法具?#24615;?#22987;方法的名称,该包装器方法被配置为在调用重命名的方法之前
调用认证或?#29992;?#26041;法。第一修改单元804可以被配置为将原始内容提供器类的名称修改为
应用清单文件中的经修改的内容提供器类名称。第一创建单元805可以被配置为在字节码
文件中创建包装器内容提供器类,该包装器内容提供器类具有经修改的内容提供器类名
称,该包装器内容提供器类被配置为在转发对原始内容提供器类的方法的调用之前检查原
始内容提供器类是否被实例化。

第二重命名单元806可以被配置为将活动类的原始方法的名称重命名为字节码文
件中该活动类的重命名的方法。第二插入单元807可以被配置为在字节码文件中的该活动
类中插入假方法,该假方法具有活动类的原始方法的名称,该假方法被配置为在调用活动
类的重命名方法之前调用认证或?#29992;?#26041;法。

在一个实施例中,应用清单文件中的所有内容提供器类名称被重命名。

在一个实施例中,系统还可以包括:第一读取单元808,其被配置为通过包装器方
法读取策略,其中对认证或?#29992;?#26041;法的调用基于策略。

在一个实施例中,策略?#26377;?#24687;?#38469;?IT)部门?#29615;?#36865;到其上安装移动设备应用的移
动设备。

在一个实施例中,假类包括对移动设备管理器应用的调用。

在一个实施例中,类包括静态块初始化。

在一个实施例中,类包括构造器。

在一个实施例中,系统还可以包括第三重命名单元809,其被配置为重命名应用静
态初始化方法、应用构造器方法、应用attachBaseContext()方法、内容提供器静态初始化
方法、内容提供器构造器方法、内容提供器onCreate()方法、应用onCreate()方法、启动器
活动静态初始化方法、启动器活动构造器方法以及字节码文件中的启动器活动onCreate
()、onStart()和onResume()方法。

在一个实施例中,系统还可以包括第三插入单元810,其被配置为将onCreate()、
onStart()、onStop()、onRestart()、onPause()、onResume()或onDestroy()方法插入到
包装器类中。

在一个实施例中,第一重命名单元可以包括追加单元,其被配置为将前缀或后缀
追加到原始方法,以创建重命名的方法。

在一个实施例中,应用清单文件包括可扩展标记语言(XML)代码。

在一个实施例中,字节码文件是用于Google计算机应用的Google
可执行(DEX)字节码文件。

在一个实施例中,系统还可以包括提取单元811,其被配置为从Google
应用包(APK)文件提取应用清单文件和字节码文件。

系统800的单元可以由硬件(诸如现场可编程门阵列(FPGA)、集成电路(IC)或专用
集成电路(ASIC)等)、软件、固件或它们的任何组合来实现以实行本发明的原理。本领域技
术人员应当理解,图8中描述的单元可以被组合或分成子单元,以实现如上文描述的本发明
的原理。因此,图8中描述的单元可以根据实际需要根据如上面的实施例中描述的本发明的
原理来进行各种操作。

根据本发明的一些示例性实施例可以如下。

(1)一种用于修改移动设备应用的生命周期的计算机系统,该系统包括:

处理器,以及

与处理器可操作地耦接的存储器,该处理器执行来?#28304;?#20648;器的指令,

其中该处理器被配置为:

提供应用清单文件和字节码文件,应用清单文件和字节码文件对应于计算机软件
应用;

将应用类的原始方法重命名为字节码文件中的重命名的方法;

在字节码文件中的应用类中插入包装器方法,该包装器方法具?#24615;?#22987;方法的名
称,该包装器方法被配置为在调用重命名的方法之前调用认证或?#29992;?#26041;法;

将原始内容提供器类的名称修改为应用清单文件中的经修改的内容提供器类名
称;以及

在字节码文件中创建包装器内容提供器类,该包装器内容提供器类具有经修改的
内容提供器类名称,该包装器内容提供器类被配置为在转发对原始内容提供器类的方法的
调用之前检查原始内容提供器类是否被实例化。

(2)根据(1)所述的计算机系统,其中处理器还被配置为:

将活动类的原始方法的名称重命名为字节码文件中该活动类的重命名的方法;以

在字节码文件中的该活动类中插入假方法,该假方法具有活动类的原始方法的名
称,该假方法被配置为在调用活动类的重命名的方法之前调用认证或?#29992;?#26041;法。

(3)根据(1)所述的计算机系统,其中应用清单文件中的所有内容提供器类名称被
重命名。

(4)根据(1)所述的计算机系统,其中处理器还被配置为:

通过包装器方法读取策略,其中对认证或?#29992;?#26041;法的调用基于策略。

(5)根据(4)所述的计算机系统,其中策略?#26377;?#24687;?#38469;?IT)部门?#29615;?#36865;到其上安装
移动设备应用的移动设备。

(6)根据(1)所述的计算机系统,其中包装器方法包括对移动设备管理器应用的调
用。

(7)根据(1)所述的计算机系统,其中原始方法包括静态块初始化。

(8)根据(1)所述的计算机系统,其中原始方法包括构造器。

(9)根据(8)所述的计算机系统,其中处理器还被配置为:

重命名应用静态初始化方法、应用构造器方法、应用attachBaseContext()方法、
内容提供器静态初始化方法、内容提供器构造器方法、内容提供器onCreate()方法、应用
onCreate()方法、启动器活动静态初始化方法、启动器活动构造器方法,以及字节码文件
中的启动器活动onCreate()、onStart()和onResume()方法。

(10)根据(1)所述的计算机系统,其中处理器还被配置为:

将onCreate()、onStart()、onStop()、onRestart()、onPause()、onResume()或
onDestroy()方法插入到包装器类中。

(11)根据(1)所述的计算机系统,其中处理器被配置为重命名原始类名称包括处
理器被配置为将前缀或后缀追加到方法名称,以创建重命名的方法。

(12)根据(1)所述的计算机系统,其中应用清单文件包括可扩展标记语言(XML)代
码。

(13)根据(1)所述的计算机系统,其中字节码文件是用于Google计算
机应用的Google可执行(DEX)字节码文件。

(14)根据(1)所述的计算机系统,其中处理器还被配置为:

从Google应用包(APK)文件提取应用清单文件和字节码文件。

在前述?#24471;?#20070;中,参考其具体实施例描述了本发明的方面,但本领域?#38469;?#20154;员将
认识到本发明不限于此。上文描述的发明的各个特征和方面可以单独使用或联合使用。此
外,在不背离本?#24471;?#20070;的更广泛的精神和范围的情况下,可以在超出本文所描述的环境和
应用的任何数量的环境和应用中利用实施例。相应地,?#24471;?#20070;和附图将被认为是?#24471;?#24615;的
而不是限制性的。

关于本文
本文标题:在容器化工作空间环境中修改ANDROID应用生命周期以控制其执行的方法.pdf
链接地址:http://www.pqiex.tw/p-6091863.html

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


平码五不中公式规律 下载全民捕鱼 24小时娱乐在线 青海快三专家推荐号码 博一把娱乐交流论坛 仙剑4手游能赚钱么 奔驰宝马老虎机绿色单机版 pk10软件计划可信吗 下象棋的顺口溜 捕鱼来了每日一炮技巧 欢乐生肖开奖官网走势图