G06F9/44 G06F9/445
1.一种应用程序多开的实现方法,其特征在于,包括以下步骤:
共享进程,为安卓系统提供一个进程运行多个apk的机制;
提前申请注册权限,通过预先占坑的方式提前向安卓系统申请权限;
Hook机制,通过API欺骗机制瞒过系统;
插件启动,开启两个及两个以上的相同应用程序。
2.根据权利要求1所述的一种应用程序多开的实现方法,其特征在于,所述共享进程的 具体过程为:
分叉请求,安卓系统向虚拟引擎发送分叉命令以及相关参数;
分叉执行,虚拟引擎分叉出一个新的进程。
3.根据权利要求1所述的一种应用程序多开的实现方法,其特征在于,所述提前申请注 册权限的具体过程为:
根预注册,预注册一堆根活动、根内容提供者以及根服务;
进程预注册,预注册一堆进程;
动态分配,用于实现进程、根活动、根内容提供者以及根服务的动态分配。
4.根据权利要求1所述的一种应用程序多开的实现方法,其特征在于,所述Hook机制的 具体过程为:
动态代理,用于JAVA虚拟机在运行时动态生成一系列的代理类;
代理绑定,进程创建后对进程进行绑定;
进程修改,改变进程的名字。
5.根据权利要求1所述的一种应用程序多开的实现方法,其特征在于,还包括适配操 作,具体如下:
API适配,为每个安卓系统版本的API进行参数配置;
AppOps适配:为4.3以上系统AppOps检测包名;
插件适配:IO重定向。
6.一种应用程序多开的实现装置,其特征在于,包括:
共享进程模块,用于为安卓系统提供一个进程运行多个apk的机制;
提前申请注册权限模块,用于通过预先占坑的方式提前向安卓系统申请权限;
Hook机制模块,用于通过API欺骗机制瞒过系统;
插件启动模块,用于开启两个及两个以上的相同应用程序。
7.根据权利要求6所述的一种应用程序多开的实现装置,其特征在于,所述共享进程模 块具体包括:
分叉请求模块,用于使安卓系统向虚拟引擎发送分叉命令以及相关参数;
分叉执行模块,用于使虚拟引擎分叉出一个新的进程。
8.根据权利要求6所述的一种应用程序多开的实现装置,其特征在于,所述提前申请注 册权限模块具体包括:
根预注册模块,用于预注册一堆根活动、根内容提供者以及根服务;
进程预注册模块,用于预注册一堆进程;
动态分配模块,用于实现进程、根活动、根内容提供者以及根服务的动态分配。
9.根据权利要求6所述的一种应用程序多开的实现装置,其特征在于,所述Hook机制模 块具体包括:
动态代理模块,用于JAVA虚拟机在运行时动态生成一系列的代理类;
代理绑定模块,用于进程创建后对进程进行绑定;
进程修改模块,用于改变进程的名字。
10.根据权利要求6所述的一种应用程序多开的实现装置,其特征在于,还包括适配操 作模块,具体包括:
API适配模块,用于为每个安卓系统版本的API进行参数配置;
AppOps适配模块:用于为4.3以上系统AppOps检测包名;
插件适配模块:用于IO重定向。
一种应用程序多开的实现方法及装置
技术领域
本发明属于电子设备应用技术领域,具体是一种应用程序多开的实现方法及装 置。
背景技术
随着智能终端的不断发展,用户对智能终端的应用需求越来越高。例如,在安卓系 统中,用户需要在同一台设备上开启两个相同的应用,这种需求被称为应用多开。
现有技术在实现应用多开时,需要用户手动创建分身应用,并在分身应用中输入 登录信息等配置信息,进而实现用户使用主账号在主应用中操作,达到在同一台设备上开 启两个相同的应用的效果。
然而,上述操作相对较为繁琐,而且不同的手机生产厂商、手机系统版本的手机应 用多开技术不能相通,且一般应用多开只限定于某一个特定的机型,或者特定的系统版本, 不能真正做到普遍适用、覆盖广,且稳定性不高。
发明内容
为了克服现有技术的不足,本发明提出了一种应用程序多开的实现方法及装置, 解决现有的应用多开方法不能实现不同的手机生产厂商、手机系统版本的手机应用多开技 术相通,且一般应用多开只限定于某一个特定的机型,或者特定的系统版本,不能真正做到 普遍适用、覆盖广,且稳定性不高的问题。
本发明为实现上述目的,采用以下技术方案实现:
一种应用程序多开的实现方法,包括以下步骤:
共享进程,为安卓系统提供一个进程运行多个apk的机制;
提前申请注册权限,通过预先占坑的方式提前向安卓系统申请权限;
Hook机制,通过API欺骗机制瞒过系统;
插件启动,开启两个及两个以上的相同应用程序。
进一步地,作为优选技术方案,所述共享进程的具体过程为:
分叉请求,安卓系统向虚拟引擎发送分叉命令以及相关参数;
分叉执行,虚拟引擎分叉出一个新的进程。
进一步地,作为优选技术方案,所述提前申请注册权限的具体过程为:
根预注册,预注册一堆根活动、根内容提供者以及根服务;
进程预注册,预注册一堆进程;
动态分配,用于实现进程、根活动、根内容提供者以及根服务的动态分配。
进一步地,作为优选技术方案,所述Hook机制的具体过程为:
动态代理,用于JAVA虚拟机在运行时动态生成一系列的代理类;
代理绑定,进程创建后对进程进行绑定;
进程修改,改变进程的名字;
进一步地,作为优选技术方案,还包括适配操作,具体如下:
API适配,为每个安卓系统版本的API进行参数配置;
AppOps适配:为4.3以上系统AppOps检测包名;
插件适配:IO重定向。
一种应用程序多开的实现装置,包括:
共享进程模块,用于为安卓系统提供一个进程运行多个apk的机制;
提前申请注册权限模块,用于通过预先占坑的方式提前向安卓系统申请权限;
Hook机制模块,用于通过API欺骗机制瞒过系统;
插件启动模块,用于开启两个及两个以上的相同应用程序。
进一步地,作为优选技术方案,所述共享进程模块具体包括:
分叉请求模块,用于使安卓系统向虚拟引擎发送分叉命令以及相关参数;
分叉执行模块,用于使虚拟引擎分叉出一个新的进程。
进一步地,作为优选技术方案,所述提前申请注册权限模块具体包括:
根预注册模块,用于预注册一堆根活动、根内容提供者以及根服务;
进程预注册模块,用于预注册一堆进程;
动态分配模块,用于实现进程、根活动、根内容提供者以及根服务的动态分配。
进一步地,作为优选技术方案,所述Hook机制模块具体包括:
动态代理模块,用于JAVA虚拟机在运行时动态生成一系列的代理类;
代理绑定模块,用于进程创建后对进程进行绑定;
进程修改模块,用于改变进程的名字;
进一步地,作为优选技术方案,还包括适配操作模块,具体包括:
API适配模块,用于为每个安卓系统版本的API进行参数配置;
AppOps适配模块:用于为4.3以上系统AppOps检测包名;
插件适配模块:用于IO重定向。
本发明与现有技术相比,具有以下优点及有益效果:
(1)本发明提供一种应用程序多开的实现方法及装置,通过进程共享、预先占坑的 方式,不用在manifest.xml注册申请权限,通过调用安卓系统原生的底层接口,并在其基础 上做一定的封装和定制,实现了安卓应用之间的相互调用,真正做到了跨平台和跨版本,做 到了普遍适用,覆盖广且稳定性高。
(2)本发明摒弃了传统的静态代理,采用动态代理,JAVA虚拟机在运行时动态生成 一系列的代理类,节省了大量的时间,提高了多开效率。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例:
本实施例所述的一种应用程序多开的实现方法,包括以下步骤:
共享进程,为安卓系统提供一个进程运行多个apk的机制;
提前申请注册权限,通过预先占坑的方式提前向安卓系统申请权限;
Hook机制,通过API欺骗机制瞒过系统;
插件启动,开启两个及两个以上的相同应用程序。
优选的,本实施例的共享进程的具体过程为:
分叉请求,安卓系统向虚拟引擎发送分叉命令以及相关参数;
分叉执行,虚拟引擎分叉出一个新的进程。
优选的,本实施例的提前申请注册权限的具体过程为:
根预注册,预注册一堆根活动、根内容提供者以及根服务;
进程预注册,预注册一堆进程;
动态分配,用于实现进程、根活动、根内容提供者以及根服务的动态分配。
优选的,本实施例的Hook机制的具体过程为:
动态代理,用于JAVA虚拟机在运行时动态生成一系列的代理类;
代理绑定,进程创建后对进程进行绑定;
进程修改,改变进程的名字;
优选的,本实施例还包括适配操作,具体如下:
API适配,为每个安卓系统版本的API进行参数配置;
AppOps适配:为4.3以上系统AppOps检测包名;
插件适配:IO重定向。
一种应用程序多开的实现装置,包括:
共享进程模块,用于为安卓系统提供一个进程运行多个apk的机制;
提前申请注册权限模块,用于通过预先占坑的方式提前向安卓系统申请权限;
Hook机制模块,用于通过API欺骗机制瞒过系统;
插件启动模块,用于开启两个及两个以上的相同应用程序。
优选的,本实施例的共享进程模块具体包括:
分叉请求模块,用于使安卓系统向虚拟引擎发送分叉命令以及相关参数;
分叉执行模块,用于使虚拟引擎分叉出一个新的进程。
优选的,本实施例的提前申请注册权限模块具体包括:
根预注册模块,用于预注册一堆根活动、根内容提供者以及根服务;
进程预注册模块,用于预注册一堆进程;
动态分配模块,用于实现进程、根活动、根内容提供者以及根服务的动态分配。
优选的,本实施例的Hook机制模块具体包括:
动态代理模块,用于JAVA虚拟机在运行时动态生成一系列的代理类;
代理绑定模块,用于进程创建后对进程进行绑定;
进程修改模块,用于改变进程的名字;
优选的,本实施例还包括适配操作模块,具体包括:
API适配模块,用于为每个安卓系统版本的API进行参数配置;
AppOps适配模块:用于为4.3以上系统AppOps检测包名;
插件适配模块:用于IO重定向。
在本实施例中,HOOK机制即通过API欺骗瞒过系统,具体是通过更改系统的调用 API名称来实现瞒过系统。API即Application Interface,系统和应用(APP)之间的沟通基 础就是通过调用API来实现。
在本实施例中,还包括进程管理,如进程分配、根组件分配以及进程回收,进程分 配用于分配插件进程,根组件分配用于分配服务(Service)和活动(Activity),这是保证安 卓系统正常运行的基本组件;进程回收用于实现空进程回收。内存处理器是编程人员容易 出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃。Java语 言提供的GC功能可以自动的检测对象是否超过作用域,从而达到自动回收内存的目的, java语言没有提供释放已分配内存的显示操作方法,资源回收工作全部交由GC来完成,程 序员不能精确的控制垃圾回收的时机。
在本实施例中,还包括包管理服务:
插件管理,用于实现包的安装、卸载以及更新;
安卓意图解析匹配,用于将包解析为相应的服务、活动;
包解析:解析出应用程序的一些信息,用来描述作者、使用场景等技术信息。
另外,本实施例的包解析还可用于每个进程启动时注册静态广播。
本实施例中,API为安卓应用之间相互调用的一个接口,而AppOps为应用程序的操 作(权限)管理,AppOps是谷歌原生安卓包含的功能,但是谷歌在每次版本更新时都会隐藏 掉AppOps的入口;IO重定向是将原输入输出更换到另外的地方,即是改变输入输出方向。基 于此,本实施例通过调用安卓原生的底层接口,并在其基础之上做一定的封装和定制,用来 实现跨平台和跨版本,使应用多开并不限定于某一个特定的机型,或者特定的系统版本,真 正做到普遍适用、覆盖广,且稳定性高。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依 据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护 范围之内。
本文发布于:2023-04-15 03:14:18,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/3/87015.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |