一种Chaos应用虚拟化引擎调度方法、系统及介质与流程

文档序号:35632888发布日期:2023-10-06 03:51阅读:96来源:国知局
一种Chaos应用虚拟化引擎调度方法、系统及介质与流程

本发明涉及电子信息,尤其涉及一种chaos应用虚拟化引擎调度方法、系统及介质。


背景技术:

1、目前,android手机上app是以软件包名为识别码作为唯一标识,手机上相同包名的app,android系统不支持同一个app的多个实例。也就是说一个应用只能开一个实例,打开一个应用程序界面。

2、随着现在人们需求日益增长和变化,尤其是对社交中必要的多身份需求就不能同时打开多个相同的app,保证多个账号同时在线,不能满足用户的需求。

3、android的软件安装包(apk文件),需要通过手机系统完成安装操作后才能运行。而软件的安装如果是非root手机上,不能静默安装,会弹出软件的安装界面,且需要用户点击确认以及下一步之类的界面交互后才能进行安装。在一些软件分发或者模块化开发的场景下,不能直接运行未通过手机系统安装的app。


技术实现思路

1、本发明的主要目的在于提供一种chaos应用虚拟化引擎调度方法、系统及介质,旨在实现android上的app可以虚拟化运行。

2、为实现上述目的,本发明提供一种chaos应用虚拟化引擎调度方法,所述方法包括以下步骤:

3、步骤s10,基于宿主app虚拟化引擎为基础虚拟化安卓系统的framework层。

4、步骤s20,虚拟化android四大组件,所述android四大组件包括activity组件、service组件、broadcast receiver组件和content provider组件。

5、步骤s30,基于虚拟化引擎虚拟化文件系统,以实现安装一个宿主app,免安装同时运行一个或者多个其他app。

6、本发明进一步地技术方案是,所述步骤s10,虚拟化安卓系统的framework层的步骤包括虚拟化framework层binder ipc通信代理和虚拟化framework层android应用生命周期的代理。

7、其中,所述虚拟化framework层binder ipc通信代理的步骤包括:在应用层与framework层之间,在原有的binder通信之间的binderproxy增加一个动态代理,起到承上启下的作用。

8、其中,所述在应用层与framework层之间,在原有的binder通信之间的binderproxy增加一个动态代理的步骤具体包括:

9、从framework层中servicemanager类静态map中获取对应的binderproxy,生成虚拟化系统需要的动态代理类,再将动态代理类替换之前静态map中对应的binderproxy。

10、所述虚拟化framework层android应用生命周期的代理的步骤包括:以静态单例的方式运行activitythread,针对该静态单例代理其中特定的内部成员变量,达到对相关生命周期进行代理的目的,所述特定的内部成员变量包括activitythread中成员变量mh、activitythread中成员变量minstrumentation、activitythread中成员变量minitialapplication。

11、本发明进一步地技术方案是,所述成员变量minitialapplication类型为application,application是当前app程序的入口,所述步骤s20,基于虚拟化引擎虚拟化android四大组件的步骤之前还包括:

12、s101,判断是否已经对application进行初始化。

13、如果已经对application进行初始化,则执行步骤s20。

14、如果没有对application进行初始化,则执行步骤s102。

15、步骤s102,初始化application:使用context.createpackagecontext方法获得代理app的上下文context,使用反射的方式调用context的成员变量的mpackageinfo,及loadedapk类的实例调用makeapplication函数,完成代理app的创建获得要虚拟化运行app的application,同时调用instrumentation代理的callapplicationoncreate函数完成对应的初始化,再替换activitythread中minitialapplication成员变量。

16、本发明进一步地技术方案是,所述步骤s20中虚拟化activity组件的步骤包括:

17、通过在宿主app中预占桩的方式,在宿主app的menifest文件中预注册一些用于虚拟化activity的占桩代理类,在启动其他app的activity时先将该app真实的activity替换成占桩的activity,先让其正常启动占桩的activity,从而绕过检测;绕过检测后,在activitythread中mh的代理类的消息事件中,先判断原始app对应的进程的application是否已经创建,如果未创建,先创建application,再将占桩的activity还原成app真实的activity,恢复真实activity的正常运行。

18、本发明进一步地技术方案是,所述步骤s20中虚拟化content provider组件的步骤包括:

19、采用预站桩的方式,先在宿主appmanifest中注册一些占桩的contentprovider,在app与framework层(ams)通信的接口getcontentprovider/getcontentproviderexternal函数中,先将函数中的参数,原app的contentprovider的authority替换成宿主站桩的authority,在该函数调用安卓服务端返回站桩的contentprovider结果时,先判断原始contentprovider对应的进程的application是否已经创建,如果未创建,先创建application,动态替换结果为app原始的contentprovider。

20、本发明进一步地技术方案是,所述步骤s20中虚拟化service组件的步骤包括:

21、在service相关操作的函数中,替换app原始的service类为宿主的service代理类,然后在宿主的service代理类的service运行生命周期里,先判断原始app对应的进程的application是否已经创建,如果未创建,先创建application,然后还原成app原始的service来执行其对应的生命周期。

22、本发明进一步地技术方案是,所述步骤s20中虚拟化broadcast receiver组件的步骤包括虚拟化静态广播接收代理和虚拟化普通动态广播接收代理。

23、其中,虚拟化静态广播接收代理的步骤具体包括:chaos引擎在目标app运行时,在完成目标app的application初始化后,针对该app当前的进程名称从其apk文件的manifest中找出对应的静态广播接收类,并对广播的接收事件进行相应的转换,生成一个静态广播接收代理类。

24、虚拟化普通动态广播接收代理的步骤具体包括:在app与framework层通信的接口registerreceiver/registerreceiverwithfeature函数中,对相关的事件名称进行重定向,以及事件接收器的代理来实现。

25、本发明进一步地技术方案是,所述步骤s30,基于虚拟化引擎虚拟化文件系统的步骤包括针对applicationinfo的路径进行重定向和基于linux底层的io操作函数hook。

26、为实现上述目的,本发明还提出一种chaos应用虚拟化引擎调度系统,所述系统包括存储器、处理器以及存储在所述处理器上的chaos应用虚拟化引擎调度程序,所述chaos应用虚拟化引擎调度程序被所述处理器运行时执行如上实施例所述的方法的步骤。

27、为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有chaos应用虚拟化引擎调度程序,所述chaos应用虚拟化引擎调度程序被处理器运行时执行如上实施例所述的方法的步骤。

28、本发明chaos应用虚拟化引擎调度方法、系统及介质的有益效果是:本发明通过上述技术方案,包括:基于宿主app虚拟化引擎为基础虚拟化安卓系统的framework层;虚拟化android四大组件,所述android四大组件包括activity组件、service组件、broadcastreceiver组件和contentprovider组件;基于虚拟化引擎虚拟化文件系统,以实现安装一个宿主app,免安装同时运行一个或者多个其他app,实现了android系统上的app可以虚拟化运行。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1