CN112379968B - 应用多开的方法、装置、设备及存储介质 - Google Patents
应用多开的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112379968B CN112379968B CN202011268838.0A CN202011268838A CN112379968B CN 112379968 B CN112379968 B CN 112379968B CN 202011268838 A CN202011268838 A CN 202011268838A CN 112379968 B CN112379968 B CN 112379968B
- Authority
- CN
- China
- Prior art keywords
- file
- file system
- simulator instance
- simulator
- instance
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 230000008569 process Effects 0.000 claims description 22
- 230000004048 modification Effects 0.000 claims description 18
- 238000012986 modification Methods 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 10
- 241000475481 Nebula Species 0.000 description 13
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 241000544061 Cuculus canorus Species 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008447 perception Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种应用多开的方法、装置、设备及存储介质。本发明的方法,通过响应于对原始模拟器实例中应用的多开操作,创建新的模拟器实例;为每个模拟器实例创建对应的上层文件系统,原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统,每个模拟器实例的文件系统由其对应的上层文件系统和下层文件系统构成,从而通过overlayfs来实现服务器引擎上的应用多开,不需要修改Android系统的系统代码,可以应用于不同的Android版本,多开速度非常快;并且在不影响文件系统的完整性的前提下,可以做到高效的磁盘文件系统共享,用户不需要重复下载应用资源文件,大大减少了磁盘空间的占用。
Description
技术领域
本发明涉及移动终端技术领域,尤其涉及一种应用多开的方法、装置、设备及存储介质。
背景技术
应用多开是指一个应用在同一个终端上用多个用户登录,应用多开一直是Android生态中很有特色的一个功能,它能实现一台Android机器上多个账号同时登录使用而互不影响。例如游戏大小号多开、社交账号多开等。通过应用多开,无需账号切换即可实现多用户登录,即可同时使用同一应用,省去重复登录的操作,深受用户喜爱。
目前,多开的实现有很多种方案,一种最常用也最简单的实现方式是:通过反编译Android应用程序包(Android application package,简称apk),修改用户ID等相关信息,然后重新安装应用,让系统误以为是两个不同的apk。这种情况多开出来的实例的包名和原来的包名发生了变化,相当于是另外一个应用。这种方式对于不同的Android版本需要重新适配,并且除了修改包名,还需要修改与之对应的大量类名和结构,工作量大,并且需要重新下载应用,占用磁盘空间比较大。另一种实现方式是:通过修改framework代码来实现多开,这种方式也可能跟Android版本强相关,如果换了另外的Android版本,多开实现需要重新适配,工作量大。另一种实现方式是:使用Android本身的多用户概念,通过将一个应用安装在不同的用户名,通过不同用户启动的应用实例也不同,来实现多开的目的;或者通过Android虚拟化技术来实现,通过沙箱技术虚拟化一个系统,应用跑在虚拟化出来的系统中,达到应用多开的目的。但是,应用的磁盘空间的占用比较大,在多开前后的应用内资源需要重复下载。
现有的应用多开的实现方案,需要修改Android系统的系统代码,实现复杂,可能需要针对不同的Android版本进行适配,多开的效率很低;并且需要重复下载应用资源,多开应用占用磁盘空间大。
发明内容
本发明提供一种应用多开的方法、装置、设备及存储介质,用以解决现有的应用多开的实现方案,需要修改Android系统的系统代码,实现复杂,可能需要针对不同的Android版本进行适配,多开的效率很低;并且需要重复下载应用资源,多开应用占用磁盘空间大的问题。
本发明的一个方面是提供一种应用多开的方法,包括:
响应于对原始模拟器实例中应用的多开操作,创建新的模拟器实例;
为每个模拟器实例创建对应的上层文件系统,所述原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统,每个模拟器实例的文件系统由其对应的上层文件系统和所述下层文件系统构成。
本发明的另一个方面是提供一种应用多开的装置,包括:
实例创建模块,用于响应于对原始模拟器实例中应用的多开操作,创建新的模拟器实例;
文件系统管理模块,用于为每个模拟器实例创建对应的上层文件系统,所述原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统,每个模拟器实例的文件系统由其对应的上层文件系统和所述下层文件系统构成。
本发明的另一个方面是提供一种应用多开的设备,包括:
处理器,存储器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序;
其中,所述处理器运行所述计算机程序时实现上述所述的应用多开的方法。
本发明的另一个方面是提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的应用多开的方法。
本发明提供的应用多开的方法、装置、设备及存储介质,通过响应于对原始模拟器实例中应用的多开操作,创建新的模拟器实例;为每个模拟器实例创建对应的上层文件系统,所述原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统,每个模拟器实例的文件系统由其对应的上层文件系统和所述下层文件系统构成,从而通过overlayfs来实现服务器引擎上的应用多开,不需要修改Android系统的系统代码,可以应用于不同的Android版本,多开速度非常快;并且在不影响文件系统的完整性的前提下,可以做到高效的磁盘文件系统共享,用户不需要重复下载应用资源文件,大大减少了磁盘空间的占用。
附图说明
图1为本发明实施例一提供的应用多开的方法流程图;
图2为本发明实施例二提供的应用多开的方法流程图;
图3为本发明实施例三提供的应用多开的装置的结构示意图;
图4为本发明实施例五提供的应用多开的设备的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
首先对本发明所涉及的名词进行解释:
星云引擎:也称为Nebula,指用于搭载手游等应用(例如,MuMu手游助手等)的一款引擎。
Cuckoo:布谷鸟哈希,本发明实施例中用于记录所有磁盘文件的权限信息和文件状态的配置文件。
Nebula进程:指Android系统进程(包括游戏进程等应用进程)在星云引擎上的体现。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
本发明具体可以应用于搭载手游等应用的服务器引擎,例如星云引擎等。服务器引擎上可以搭载多个应用。应用在服务器引擎上运行时,每个应用对应一个模拟器实例,并对应一个数据路径作为该应用的文件系统。本发明实施例通过使用堆叠式文件系统(Overlay filesystem,简称overlayfs)实现应用多开。在Nebula的实现框架下,在内核层实现overlayfs文件系统的语义,将文件系统分为下层文件系统(lower层)和上层文件系统(upper层),lower层包含多开前的文件系统,upper层包含多开后新创建或发生写操作的文件系统。一旦多开发生,lower层将不再允许任何写入操作(可以允许读取操作),所有的创建文件或写入操作都将重定向到upper层中。所以在多开发生后,整个文件系统其实是lower和upper的合并。这样,通过overlayfs来实现服务器引擎上的应用多开,多开速度非常快,可以做到用户无感知,即点即得;并且可以做到高效的磁盘文件系统共享,也即用户不需要重复下载应用资源文件,大大减少了磁盘空间的占用,并且又不影响文件系统的完整性。
本发明实施例的一个典型应用场景为:通过Overlayfs的语义,实现星云引擎上游戏应用的多开。
下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
实施例一
图1为本发明实施例一提供的应用多开的方法流程图。本发明实施例针对现有的应用多开的实现方案,需要修改Android系统的系统代码,实现复杂,可能需要针对不同的Android版本进行适配,多开的效率很低;并且需要重复下载应用资源,多开应用占用磁盘空间大的问题,提供了应用多开的方法。如图1所示,该方法具体步骤如下:
步骤S101、响应于对原始模拟器实例中应用的多开操作,创建新的模拟器实例。
本实施例中,应用在服务器引擎上运行时,每个应用对应一个模拟器实例,并对应一个数据路径作为该应用的文件系统。
示例性地,原始模拟器实例中可以提供多开操作区域,当用户执行对多开操作区域的触发操作时,则触发对原始模拟器实例中应用的多开操作。
例如,原始模拟器实例中可以提供多开按钮,用户点击多开按钮时,即进行了对原始模拟器实例中应用的多开操作。
响应于对原始模拟器实例中应用的多开操作,服务器引擎创建新的模拟器实例,新创建的模拟器实例用于运行多开的应用。
步骤S102、为每个模拟器实例创建对应的上层文件系统,原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统,每个模拟器实例的文件系统由其对应的上层文件系统和下层文件系统构成。
本实施例中,通过使用overlayfs的语义实现应用多开。
具体地,为每个模拟器实例(包括原始模拟器实例和新创建的模拟器实例)均创建一个对应的上层文件系统,并将原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统。这样,对于任意一个模拟器实例来说,其对应的上层文件系统和共用的下层文件系统构成该模拟器实例完整的overlayfs文件系统。
进一步地,应用多开操作发生后,每个模拟器实例的文件系统是一个overlayfs文件系统,分为上层文件系统(upper层)和下层文件系统(lower层),lower层包含多开前的文件系统,upper层包含多开后新创建或发生写操作的文件。一旦多开发生,lower层将不再允许任何写入操作(读取操作允许),所有的创建文件或写入操作都将重定向到upper层中。在多开发生后,模拟器实例的整个文件系统其实是lower层和upper层的合并。
本发明实施例通过响应于对原始模拟器实例中应用的多开操作,创建新的模拟器实例;为每个模拟器实例创建对应的上层文件系统,原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统,每个模拟器实例的文件系统由其对应的上层文件系统和下层文件系统构成,从而通过overlayfs来实现服务器引擎上的应用多开,不需要修改Android系统的系统代码,可以应用于不同的Android版本,多开速度非常快;并且在不影响文件系统的完整性的前提下,可以做到高效的磁盘文件系统共享,用户不需要重复下载应用资源文件,大大减少了磁盘空间的占用。
实施例二
图2为本发明实施例二提供的应用多开的方法流程图。在上述实施例一的基础上,本实施例中,以星云引擎上的应用多开为例,对应用多开的方法进行详细地说明。如图2所示,该方法具体步骤如下:
步骤S101、响应于对原始模拟器实例中应用的多开操作,创建新的模拟器实例。
本实施例中,应用在星云引擎上运行时,每个应用对应一个模拟器实例,并对应一个数据路径作为该应用的文件系统。
示例性地,原始模拟器实例中可以提供多开操作区域,当用户执行对多开操作区域的触发操作时,则触发对原始模拟器实例中应用的多开操作。
例如,原始模拟器实例中可以提供多开按钮,用户点击多开按钮时,即进行了对原始模拟器实例中应用的多开操作。
响应于对原始模拟器实例中应用的多开操作,服务器引擎创建新的模拟器实例,新创建的模拟器实例用于运行多开的应用。
步骤S102、为每个模拟器实例创建对应的上层文件系统,原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统,每个模拟器实例的文件系统由其对应的上层文件系统和下层文件系统构成。
本实施例中,通过使用overlayfs的语义实现应用多开。
具体地,为每个模拟器实例(包括原始模拟器实例和新创建的模拟器实例)均创建一个对应的上层文件系统,并将原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统。这样,对于任意一个模拟器实例来说,其对应的上层文件系统和共用的下层文件系统构成该模拟器实例完整的overlayfs文件系统。
进一步地,应用多开操作发生后,每个模拟器实例的文件系统是一个overlayfs文件系统,分为上层文件系统(upper层)和下层文件系统(lower层),lower层包含多开前的文件系统,upper层包含多开后新创建或发生写操作的文件。在多开发生后,模拟器实例的整个文件系统其实是lower层和upper层的合并。
示例性地,在用户第一次多开应用时,创建一个新的模拟器实例,原模拟器实例继续运行,并新建第一目录(例如00.nebula)和第二目录(例如,01.nebula),分别作为原模拟器实例和新的模拟器实例的upper层,原模拟器实例文件系统的数据路径(例如dir)变成了这两个实例的公共lower层。00.nebula和dir组成前原模拟器实例的完整文件系统,01.nebula和dir组成新的模拟器实例的完整文件系统。原模拟器实例在多开操作发生后新产生的文件将写入00.nebula,新的模拟器实例新产生的文件将写入到01.nebula中。对于dir,在多开操作发生后,只有读取权限,任何一个实例的新文件将不能再写入dir。
示例性地,在完成一次应用多开之后,用户还可以再次执行对原模拟器实例中应用的多开操作,当再次发生多开操作时,由于原模拟器实例的文件系统以及包括了lower层和upper层,因此星云引擎只需为新创建的模拟器实例创建一个upper层即可。例如,可以新建第三目录(例如02.nebula)作为新的模拟器实例的upper层,新的模拟器实例与其他模拟器实例共用lower层。
步骤S103、将下层文件系统中的配置文件复制到新的模拟器实例对应的上层文件系统中。
其中,配置文件用于记录所有磁盘文件的权限信息和文件状态(例如,文件处于删除状态,文件的修改操作状态等等)。
本实施例中,配置文件可以复用星云引擎中的Cuckoo文件,或者还可以使用星云引擎中其他配置文件实现,本实施例此处不做具体限定。
在为每个模拟器实例创建对应的上层文件系统,将下层文件系统中的配置文件复制到每个模拟器实例的上层文件系统中。
另外,本实施例另一实施方式中,配置文件还可以是应用多开时新创建的文件。
为不影响原始模拟器实例中应用的正常运行,通过步骤S104-S107,在对原始模拟器实例中应用的多开操作发生时,使原始模拟器实例中所有进程进入暂停状态,对于多开操作发生之前打开的文件,可以原子地关闭已打开的文件句柄,并打开指向多开后的文件系统的文件句柄,以此来代替之前的文件句柄,以保证后续的操作可以安全正常地进行。
步骤S104、响应于对原始模拟器实例中应用的多开操作,将原始模拟器实例中的所有进程暂停。
本实施例中,在用户执行对原始模拟器实例中应用的多开操作的一瞬间,通过所有Nebula进程去顺序的拿所有代码模块的锁,来保证所有Nebula进程处于暂停状态。
步骤S105、关闭已打开的第四文件的文件句柄。
本实施例中,第四文件指代多开操作发生之前打开的文件。
在确保所有Nebula进程处于暂停状态之后,对于多开操作发生前打开的第四文件,可以原子地关闭之前已打开的第四文件的文件句柄。
步骤S106、打开新的文件句柄,新的文件句柄指向原始模拟器实例对应的上层文件系统中第四文件的同名文件。
在关闭之前已打开的第四文件的文件句柄之后,打开指向多开后的文件系统的文件句柄,以此来代替之前的文件句柄,以保证后续的操作可以安全正常地进行。
具体地,根据多开操作之前已打开的第四文件的文件名,打开指向原始模拟器实例对应的上层文件系统中第四文件的同名文件,后续对这些文件的操作都将在原始模拟器实例对应的上层文件系统中进行。
步骤S107、启动所有暂停的进程。
在打开新的文件句柄之后,启动原始模拟器实例中处于暂停状态的Nebula进程,Nebula进程可以继续运行,从而确保原应用可以正常运行。
本实施例中,应用多开操作发生后,lower层将不再允许任何写入操作(读取操作允许),所有的创建文件或写入操作都将重定向到upper层中。本实施例中,通过步骤S108-S113对应用多开操作发生后的文件读、写、删除、修改等操作的实现方式进行详细地说明。
步骤S108、响应于第一模拟器实例中对第一文件的读操作,若确定第一文件只存在于下层文件系统中,则根据第一文件的文件名称,读取下层文件系统中的同名文件。
其中,第一模拟器实例可以是任意一个模拟器实例,第一文件可以是lower层中的任意一个文件。
本实施例中,多开操作发生后,通过在内核文件系统层对模拟器实例中所有进程(也即Android系统的应用,包括游戏应用的进程和系统进程)的文件读写操作进行捕获,如果发现是对第一文件的读操作,且第一文件只在lower层中存在,实际读取的文件从lower层中读取。
步骤S109、响应于第一模拟器实例中对第一文件的写操作,根据第一文件的文件名称,将下层文件系统中的同名文件复制到第一模拟器实例对应的上层文件系统中,并将写操作重定向到第一模拟器实例对应的上层文件系统中的同名文件。
本实施例中,如果捕获到第一模拟器实例中对第一文件的写操作,则首先将在lower层中的同名文件复制到upper层中,然后将写操作重定向到upper层中的同名文件,之后对该文件的操作,都反应在upper中,包括读和写。
步骤S110、响应于第一模拟器实例中对第一文件的读/写操作,将读/写操作重定向到第一模拟器实例对应的上层文件系统中的同名文件。
在第一文件被复制到了第一模拟器实例中的upper层之后,若再次捕获到同一模拟器实例中对同一文件的读操作(或者写操作),则直接将对应操作重定向到第一模拟器实例对应的上层文件系统中的同名文件,直接在第一模拟器实例对应的上层文件系统中进行对应操作。
步骤S111、响应于第二模拟器实例的新建文件操作,在第二模拟器实例对应的上层文件系统中新建文件。
其中,第二模拟器实例用于与第一模拟器实例进行区分,第二模拟器实例可以是任意一个模拟器实例,当然也可以与第一模拟器实例为同一实例。
本实施例中,在应用多开操作发生后,对于任一模拟器实例中的新建文件操作,都在该模拟器实例对应的上层文件系统(也即upper层)中新建文件。
步骤S112、响应于第三模拟器实例中对第二文件的删除操作,若下层文件系统中存在第二文件的同名文件,则在配置文件中记录第二文件在第三模拟器实例中处于删除状态,将第三模拟器实例对应的上层文件系统中第二文件的同名文件删除。
其中,第三模拟器实例用于与第一模拟器实例和第二模拟器实例进行区分,第三模拟器实例可以是任意一个模拟器实例,当然也可以是第一模拟器实例或者第二模拟器实例。第二文件可以是任意一个文件。
本实施例中,由于必须保证lower层的不可修改性,所以,如果要删除一个只位于lower层的文件时,不能删除文件实体,只在配置文件中记录该文件是处于删除状态;而对于删除一个同时位于lower层和upper层中的文件,则只删除upper层中的文件,而lower层中的文件保留,并在配置文件中记录该文件处于删除状态;对于删除只位于upper层中的文件,直接从upper层中删除文件,并在配置文件中记录删除状态。
步骤S113、响应于第四模拟器实例中对第三文件的修改操作,若下层文件系统中存在第三文件的同名文件,则在配置文件中记录第四模拟器实例中对第三文件的修改操作,对第四模拟器实例对应的上层文件系统中第三文件的同名文件进行修改。
其中,第四模拟器实例用于与第一模拟器实例,第二模拟器实例和第三模拟器实例进行区分,第四模拟器实例可以是任意一个模拟器实例,当然也可以是第一模拟器实例或者第二模拟器实例或者第三模拟器实例。第三文件可以是任意一个文件。
本实施例中,由于必须保证lower层的不可修改性,所以,如果要修改一个只位于lower层的第三文件时,不能修改lower层中的第三文件,则需要将第三文件复制到第四模拟器实例对应upper层中,然后修改upper层中的同名文件,在配置文件中记录第四模拟器实例中对第三文件的修改操作。
如果要修改的第三文件同时存在于lower层和第四模拟器实例对应upper层,则修改upper层中的同名文件,在配置文件中记录第四模拟器实例中对第三文件的修改操作。
如果要修改的第三文件在lower层中不存在,只存在于第四模拟器实例对应upper层,则修改upper层中的同名文件,在配置文件中记录第四模拟器实例中对第三文件的修改操作。
本实施例中,对文件的修改操作可以是重命名等需要对文件本身做修改的操作。对文件的任意类型的修改操作,都需要秉持一个原则:就是lower层中的文件不能做任何修改,包括写、删除和重命名等。所有的修改操作要么全部发生在upper层中,要么先将文件从lower层中拷贝到upper层中,然后在upper层中进行修改。
另外,对于文件的修改权限的操作,由于文件的权限信息记录在配置文件中,因此对文件权限的修改,实质上是对配置文件中文件权限信息的修改。
本发明实施例通过overlayfs来实现服务器引擎上的应用多开,不需要修改Android系统的系统代码,可以应用于不同的Android版本,多开速度非常快;进一步地,通过在多开操作发生时,确保所有进程处于暂停状态,对于多开操作发生之前打开的文件,可以原子地关闭已打开的文件句柄,并打开指向多开后的文件系统的文件句柄,以此来代替之前的文件句柄,可以保证原应用安全正常地进行可以做到用户无感知,即点即得。进一步地,在不影响文件系统的完整性的前提下,可以做到高效的磁盘文件系统共享,用户不需要重复下载应用资源文件,大大减少了磁盘空间的占用。
实施例三
图3为本发明实施例三提供的应用多开的装置的结构示意图。本发明实施例提供的应用多开的装置可以执行应用多开的方法实施例提供的处理流程。如图3所示,该应用多开的装置30包括:多开模块301和文件系统管理模块302。
具体地,多开模块301用于响应于对原始模拟器实例中应用的多开操作,创建新的模拟器实例。
文件系统管理模块302用于为每个模拟器实例创建对应的上层文件系统,原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统,每个模拟器实例的文件系统由其对应的上层文件系统和下层文件系统构成。
本发明实施例提供的装置可以具体用于执行上述实施例一所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过响应于对原始模拟器实例中应用的多开操作,创建新的模拟器实例;为每个模拟器实例创建对应的上层文件系统,原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统,每个模拟器实例的文件系统由其对应的上层文件系统和下层文件系统构成,从而通过overlayfs来实现服务器引擎上的应用多开,不需要修改Android系统的系统代码,可以应用于不同的Android版本,多开速度非常快;并且在不影响文件系统的完整性的前提下,可以做到高效的磁盘文件系统共享,用户不需要重复下载应用资源文件,大大减少了磁盘空间的占用。
实施例四
在上述实施例三的基础上,本实施例中,文件系统管理模块还用于:
响应于第一模拟器实例中对第一文件的写操作,根据第一文件的文件名称,将下层文件系统中的同名文件复制到第一模拟器实例对应的上层文件系统中;将写操作重定向到第一模拟器实例对应的上层文件系统中的同名文件。
在一种可选地实施方式中,文件系统管理模块还用于:
响应于第一模拟器实例中对第一文件的读/写操作,将读/写操作重定向到第一模拟器实例对应的上层文件系统中的同名文件。
在一种可选地实施方式中,文件系统管理模块还用于:
响应于第一模拟器实例中对第一文件的读操作,若第一文件只存在于下层文件系统中,则根据第一文件的文件名称,读取下层文件系统中的同名文件。
在一种可选地实施方式中,文件系统管理模块还用于:
响应于第二模拟器实例的新建文件操作,在第二模拟器实例对应的上层文件系统中新建文件。
在一种可选地实施方式中,文件系统管理模块还用于:
响应于第三模拟器实例中对第二文件的删除操作,若下层文件系统中存在第二文件的同名文件,则在配置文件中记录第二文件在第三模拟器实例中处于删除状态;将第三模拟器实例对应的上层文件系统中第二文件的同名文件删除。
在一种可选地实施方式中,文件系统管理模块还用于:
响应于第四模拟器实例中对第三文件的修改操作,若下层文件系统中存在第三文件的同名文件,则在配置文件中记录第四模拟器实例中对第三文件的修改操作;对第四模拟器实例对应的上层文件系统中第三文件的同名文件进行修改。
在一种可选地实施方式中,多开模块还用于:
响应于对原始模拟器实例中应用的多开操作,将原始模拟器实例中的所有进程暂停;关闭已打开的第四文件的文件句柄;打开新的文件句柄,新的文件句柄指向原始模拟器实例对应的上层文件系统中第四文件的同名文件;启动所有暂停的进程。
在一种可选地实施方式中,文件系统管理模块还用于:
将下层文件系统中的配置文件复制到新的模拟器实例对应的上层文件系统中。
本发明实施例提供的装置可以具体用于执行上述实施例二所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过overlayfs来实现服务器引擎上的应用多开,不需要修改Android系统的系统代码,可以应用于不同的Android版本,多开速度非常快;进一步地,通过在多开操作发生时,确保所有进程处于暂停状态,对于多开操作发生之前打开的文件,可以原子地关闭已打开的文件句柄,并打开指向多开后的文件系统的文件句柄,以此来代替之前的文件句柄,可以保证原应用安全正常地进行可以做到用户无感知,即点即得。进一步地,在不影响文件系统的完整性的前提下,可以做到高效的磁盘文件系统共享,用户不需要重复下载应用资源文件,大大减少了磁盘空间的占用。
实施例五
图4为本发明实施例五提供的应用多开的设备的结构示意图。如图4所示,该应用多开的设备100包括:处理器1001,存储器1002,以及存储在存储器1002上并可在处理器1001上运行的计算机程序。
其中,处理器1001运行计算机程序时实现上述任一方法实施例提供的应用多开的方法。
本发明实施例通过响应于对原始模拟器实例中应用的多开操作,创建新的模拟器实例;为每个模拟器实例创建对应的上层文件系统,原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统,每个模拟器实例的文件系统由其对应的上层文件系统和下层文件系统构成,从而通过overlayfs来实现服务器引擎上的应用多开,不需要修改Android系统的系统代码,可以应用于不同的Android版本,多开速度非常快;并且在不影响文件系统的完整性的前提下,可以做到高效的磁盘文件系统共享,用户不需要重复下载应用资源文件,大大减少了磁盘空间的占用。
另外,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现上述任一方法实施例提供的应用多开的方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求书指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求书来限制。
Claims (12)
1.一种应用多开的方法,其特征在于,包括:
响应于对原始模拟器实例中应用的多开操作,服务器引擎创建新的模拟器实例,所述新的模拟器实例用于运行多开的应用;
所述应用在所述服务器引擎上运行时,每个应用对应一个模拟器实例,通过堆叠式文件系统实现服务器引擎上的应用多开,所述堆叠式文件系统分为下层文件系统和上层文件系统,所述下层文件系统包含多开前的文件系统,所述上层文件系统包含多开后新创建或发生写操作的文件系统;
为原始模拟器实例和新创建的模拟器实例均创建对应的上层文件系统,所述原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统,每个模拟器实例的文件系统由其对应的上层文件系统和所述共用的下层文件系统构成。
2.根据权利要求1所述的方法,其特征在于,为每个模拟器实例创建对应的上层文件系统之后,还包括:
响应于第一模拟器实例中对第一文件的写操作,根据所述第一文件的文件名称,将所述下层文件系统中的同名文件复制到所述第一模拟器实例对应的上层文件系统中;
将所述写操作重定向到所述第一模拟器实例对应的上层文件系统中的同名文件。
3.根据权利要求2所述的方法,其特征在于,响应于第一模拟器实例中对第一文件的写操作,根据所述第一文件的文件名称,将所述下层文件系统中的同名文件复制到所述第一模拟器实例对应的上层文件系统中之后,还包括:
响应于所述第一模拟器实例中对所述第一文件的读/写操作,将所述读/写操作重定向到所述第一模拟器实例对应的上层文件系统中的同名文件。
4.根据权利要求2所述的方法,其特征在于,响应于第一模拟器实例中对第一文件的写操作,根据所述第一文件的文件名称,将所述下层文件系统中的同名文件复制到所述第一模拟器实例对应的上层文件系统中之前,还包括:
响应于所述第一模拟器实例中对所述第一文件的读操作,若所述第一文件只存在于所述下层文件系统中,则根据所述第一文件的文件名称,读取所述下层文件系统中的同名文件。
5.根据权利要求1所述的方法,其特征在于,为每个模拟器实例创建对应的上层文件系统之后,还包括:
响应于第二模拟器实例的新建文件操作,在所述第二模拟器实例对应的上层文件系统中新建文件。
6.根据权利要求1所述的方法,其特征在于,为每个模拟器实例创建对应的上层文件系统之后,还包括:
响应于第三模拟器实例中对第二文件的删除操作,若所述下层文件系统中存在所述第二文件的同名文件,则在配置文件中记录所述第二文件在所述第三模拟器实例中处于删除状态;
将所述第三模拟器实例对应的上层文件系统中所述第二文件的同名文件删除。
7.根据权利要求1所述的方法,其特征在于,为每个模拟器实例创建对应的上层文件系统之后,还包括:
响应于第四模拟器实例中对第三文件的修改操作,若所述下层文件系统中存在所述第三文件的同名文件,则在配置文件中记录所述第四模拟器实例中对所述第三文件的修改操作;
对所述第四模拟器实例对应的上层文件系统中所述第三文件的同名文件进行修改。
8.根据权利要求1-7中任一项所述的方法,其特征在于,还包括:
响应于对原始模拟器实例中应用的多开操作,将所述原始模拟器实例中的所有进程暂停;
关闭已打开的第四文件的文件句柄;
打开新的文件句柄,所述新的文件句柄指向所述原始模拟器实例对应的上层文件系统中所述第四文件的同名文件;
启动所有暂停的进程。
9.根据权利要求6或7所述的方法,其特征在于,为每个模拟器实例创建对应的上层文件系统之后,还包括:
将所述下层文件系统中的所述配置文件复制到所述新的模拟器实例对应的上层文件系统中。
10.一种应用多开的装置,其特征在于,包括:
多开模块,用于响应于对原始模拟器实例中应用的多开操作,服务器引擎创建新的模拟器实例,所述新的模拟器实例用于运行多开的应用;所述应用在所述服务器引擎上运行时,每个应用对应一个模拟器实例,通过堆叠式文件系统实现服务器引擎上的应用多开,所述堆叠式文件系统分为下层文件系统和上层文件系统,所述下层文件系统包含多开前的文件系统,所述上层文件系统包含多开后新创建或发生写操作的文件系统;
文件系统管理模块,用于为原始模拟器实例和新创建的模拟器实例均创建对应的上层文件系统,所述原始模拟器实例的原文件系统作为各个模拟器实例共用的下层文件系统,每个模拟器实例的文件系统由其对应的上层文件系统和所述下层文件系统构成。
11.一种应用多开的设备,其特征在于,包括:
处理器,存储器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序;
其中,所述处理器运行所述计算机程序时实现如权利要求1至9中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011268838.0A CN112379968B (zh) | 2020-11-13 | 2020-11-13 | 应用多开的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011268838.0A CN112379968B (zh) | 2020-11-13 | 2020-11-13 | 应用多开的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112379968A CN112379968A (zh) | 2021-02-19 |
CN112379968B true CN112379968B (zh) | 2024-07-23 |
Family
ID=74582110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011268838.0A Active CN112379968B (zh) | 2020-11-13 | 2020-11-13 | 应用多开的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112379968B (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1813253A (zh) * | 2003-05-07 | 2006-08-02 | 莱万塔公司 | 对共享的只读文件系统中的病毒的检测和报警 |
EP2467778A4 (en) * | 2009-08-17 | 2013-01-16 | Virtual Computer Inc | LAYERED VIRTUAL FILES SYSTEM |
CN105653349A (zh) * | 2015-12-30 | 2016-06-08 | 深圳市创想天空科技股份有限公司 | 应用多开的管道通信控制方法及系统 |
CN105589747B (zh) * | 2016-02-25 | 2018-10-23 | 深圳市创想天空科技股份有限公司 | 应用程序多开的控制方法及系统 |
US10235222B2 (en) * | 2017-01-05 | 2019-03-19 | Portworx, Inc. | Containerized application system graph driver |
CN109388435A (zh) * | 2017-08-04 | 2019-02-26 | 北京多点在线科技有限公司 | 实现app同时多次开启操作的方法和装置 |
CN107665302B (zh) * | 2017-09-26 | 2022-01-11 | 惠州Tcl移动通信有限公司 | 一种Android应用多开实现方法、移动终端及存储介质 |
CN110688198B (zh) * | 2019-09-24 | 2021-03-02 | 网易(杭州)网络有限公司 | 系统调用方法、装置和电子设备 |
US10654166B1 (en) * | 2020-02-18 | 2020-05-19 | UiPath, Inc. | Automation windows for robotic process automation |
-
2020
- 2020-11-13 CN CN202011268838.0A patent/CN112379968B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112379968A (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11675774B2 (en) | Remote policy validation for managing distributed system resources | |
KR102255767B1 (ko) | 가상 머신 감사를 위한 시스템 및 방법들 | |
CN110035079B (zh) | 一种蜜罐生成方法、装置及设备 | |
EP3355226B1 (en) | System call policies for containers | |
US9471802B2 (en) | Hybrid file systems | |
US20190294778A1 (en) | Method and system to securely run applications using containers | |
US7584228B1 (en) | System and method for duplication of virtual private server files | |
EP1526429A2 (en) | Operating system resource protection | |
US10574524B2 (en) | Increasing reusability of and reducing storage resources required for virtual machine images | |
JP7016964B2 (ja) | マルチテナントコンテナプラットフォーム上でアプリケーションを実行するためのシステム及び方法 | |
US7770202B2 (en) | Cross assembly call interception | |
US20090248699A1 (en) | System to delegate virtual storage access method related file operations to a storage server using an in-band rpc mechanism | |
CN112805708A (zh) | 保护计算机系统上的选定磁盘 | |
CN115374481B (zh) | 数据脱敏处理的方法、装置、存储介质及电子设备 | |
KR20120037381A (ko) | 소프트웨어 컴포넌트 상태에 대한 접근 제어 | |
CN115186269A (zh) | 一种漏洞挖掘方法、装置、存储介质及电子设备 | |
CN113296891B (zh) | 基于平台的多场景知识图谱处理方法及装置 | |
Ruggia et al. | Android, notify me when it is time to go phishing | |
CN112379968B (zh) | 应用多开的方法、装置、设备及存储介质 | |
CN116467704A (zh) | 资源的调用方法及装置 | |
CN113986858B (zh) | Linux兼容安卓系统的共享文件操作方法和装置 | |
CN115357762A (zh) | 一种数据校验方法、装置、存储介质及电子设备 | |
CN115659340A (zh) | 一种仿冒小程序识别方法、装置、存储介质及电子设备 | |
CN115617471A (zh) | 一种业务调用的方法、装置、存储介质及电子设备 | |
CN116521306A (zh) | 一种容器使能selinux的方法和计算机设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |