一种应用程序多开的实现方法及装置

阅读: 评论:0

著录项
  • CN201710397545.4
  • 20170531
  • CN107273118A
  • 20171020
  • 湖南机友科技有限公司
  • 阳纯正
  • G06F9/44
  • G06F9/44 G06F9/445

  • 湖南省长沙市岳麓区麓谷企业广场F4栋1801室
  • 湖南(43)
  • 北京和信华成知识产权代理事务所(普通合伙)
  • 胡剑辉
摘要
本发明公开了一种应用程序多开的实现方法及装置,包括:共享进程,为安卓系统提供一个进程运行多个apk的机制;提前申请注册权限,通过预先占坑的方式提前向安卓系统申请权限;Hook机制,通过API欺骗机制瞒过系统;插件启动,开启两个及两个以上的相同应用程序。本发明实现了跨平台和跨版本,使应用多开并不限定于某一个特定的机型,或者特定的系统版本,真正做到了普遍适用、覆盖广,且稳定性高。
权利要求

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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图