CN116992434A - 一种以独立应用运行在沙盒环境中的方法 - Google Patents

一种以独立应用运行在沙盒环境中的方法 Download PDF

Info

Publication number
CN116992434A
CN116992434A CN202310932402.4A CN202310932402A CN116992434A CN 116992434 A CN116992434 A CN 116992434A CN 202310932402 A CN202310932402 A CN 202310932402A CN 116992434 A CN116992434 A CN 116992434A
Authority
CN
China
Prior art keywords
application
zhuosha
environment
container
container application
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.)
Pending
Application number
CN202310932402.4A
Other languages
English (en)
Inventor
张杏
孙大林
邓语涵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan Xiaosuan Technology Information Co ltd
Original Assignee
Hunan Xiaosuan Technology Information Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hunan Xiaosuan Technology Information Co ltd filed Critical Hunan Xiaosuan Technology Information Co ltd
Priority to CN202310932402.4A priority Critical patent/CN116992434A/zh
Publication of CN116992434A publication Critical patent/CN116992434A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种以独立应用运行在沙盒环境中的方法,包括如下步骤:S1,在安卓系统中创建安卓沙盒环境;S2,创建容器应用,将目标应用的底包放置在所述容器应用中,然后整体打包作为独立应用,其中,所述容器应用用于与安卓系统进行交互,同时通过安卓沙盒环境管理和运行目标应用;S3,将独立应用安装至安卓系统中;S4,在安卓系统中运行独立应用,通过容器应用启动安卓沙盒环境,安卓沙盒环境准备完毕后,容器应用将目标应用的底包安装在容器应用的目录下,并调用安卓沙盒环境的能力启动运行目标应用。本发明通过将客户端与服务端进行分离,可以克服传统虚拟化和沙盒技术的缺点,实现高效、安全、兼容性好的应用多开功能。

Description

一种以独立应用运行在沙盒环境中的方法
技术领域
本发明属于通信技术领域,具体涉及一种以独立应用运行在沙盒环境中的方法。
背景技术
目前,Android系统中广泛采用的应用多开技术主要包括沙盒和虚拟化技术。虚拟化技术在Android设备上模拟出一个完整的Android系统环境,用户可在此虚拟环境中安装和运行应用。然而,虚拟化一个完整的Android系统会带来一系列问题,如消耗大量的设备资源、管理复杂性增加、可能影响设备性能,以及可能出现安全和兼容性问题。
沙盒技术则在主设备系统中创建一个隔离的虚拟环境,让运行在该环境中的应用程序以为自己正在运行在一台独立的物理设备上。实则,这些应用程序运行在一个由主设备系统管理的软件模拟的环境中,该环境模拟了Android操作系统的所有关键组件和服务。这样,虚拟环境中安装运行的应用程序与Android系统环境隔离,实现了应用多开功能。
然而,沙盒技术也存在一些局限性。由于所有应用和服务都集中在一个环境中,可能导致资源消耗过大,从而影响设备性能。此外,为了兼容不同应用,主设备中的软件需要申请运行在其内所有应用的权限。如果手机系统对该虚拟环境应用有限制,那么这个环境中的所有应用都会受到限制。最后,安装在虚拟环境中的应用与安装在真机上的应用仍存在差异,对于真机来说,这些并非真正独立的应用,而是依赖于虚拟环境的存在。
因此,当前的应用多开技术仍存在诸多问题,如性能下降、安全风险、兼容性问题等,这就需要一种新的多开技术来解决这些问题。
综上所述,亟需提供一种资源消耗小、兼容性高、高效、安全的以独立应用运行在沙盒环境中的方法。
发明内容
本发明的目的是提供一种资源消耗小、兼容性高、高效、安全的以独立应用运行在沙盒环境中的方法。
上述目的是通过如下技术方案实现:一种以独立应用运行在沙盒环境中的方法,包括如下步骤:
S1,在安卓系统中创建安卓沙盒环境;
S2,创建容器应用,将目标应用的底包放置在所述容器应用中,然后整体打包作为独立应用,其中,所述容器应用用于与安卓系统进行交互,同时通过安卓沙盒环境管理和运行目标应用;
S3,将步骤S2中的独立应用安装至安卓系统中;
S4,在安卓系统中运行独立应用,通过容器应用启动安卓沙盒环境,安卓沙盒环境准备完毕后,容器应用将目标应用的底包安装在容器应用的目录下,并调用安卓沙盒环境的能力启动运行目标应用,使目标应用运行在沙盒环境中。
本领域技术人员应当了解,创建的安卓沙盒环境模拟了Android操作系统所有关键组件和服务。
本发明将安卓沙盒环境功能作为服务端安装在安卓系统中,而每个需要多开的应用,各自放到容器应用中,容器应用作为独立的应用安装在安卓系统中,应用启动过程中,对于安卓系统而言,它启动的是容器应用,但是通过容器应用中的转换,实际启动的是容器应用中的底包应用,将目标应用作为独立应用在沙盒环境中运行,从而实现了应用多开的功能。
如此,本发明改变了现有技术中直接在虚拟的沙盒环境中安装运行应用程序,所有应用和服务都集中在一个沙盒环境中的方式,通过将客户端(目标应用)与服务端(沙盒环境)进行分离,可以克服传统虚拟化和沙盒技术的缺点,实现高效、安全、兼容性好的应用多开功能。
进一步的技术方案是,所述步骤S2中的具体步骤如下:
S2.1,创建容器应用并命名;
S2.2,容器应用中预先注册多个安卓应用中的核心组件;
S2.3,将目标应用的底包放到容器应用的预定文件夹下;
S2.4,将容器应用代码中设置服务端的包名命名为安卓沙盒环境的包名;
S2.5,编写容器应用代码,使得容器应用具备初始化沙盒环境,安装目标应用的底包至容器应用中、启动目标应用的底包应用以及调用安卓沙盒环境的能力的功能;
S2.6,编译打包生成独立应用;
具体应用过程中,容器应用的包名根据需要目标应用的包名进行变化。步骤S2实际就是开发生成容器应用,并将目标应用的底包放到容器应用的预定文件夹下生成独立应用的过程,S2.1~S2.5的顺序可以变化;需要说明的是,本领域技术人员应当清楚在编写容器应用程序代码的过程中可根据所要实现的功能与步骤开发生成这样一个容器应用程序。
进一步的技术方案是,所述步骤S2.2中预先注册的安卓应用中的核心组件至少包括Activity、Service和Provider。实际应用过程中,在容器应用中,需要注册足够多的占位用Activity,Service,Provider,因为目标应用的底包中的四大组件没有注册到安卓系统中,需要在容器应用预先注册,在实际运行的时候,安卓沙盒环境启动底包时会替换为底包中要运行的四大组件。
进一步的技术方案是,所述步骤S2.3中将目标应用的底包放到容器应用的assets文件夹下。如此,底包被嵌入到容器应用的assets文件夹中,随着容器应用安装到安卓系统中。当容器应用在安卓系统运行时,它会从自己的资源文件夹中获取这个底包,然后安装到容器应用中,容器应用调用安卓沙盒环境的API来运行这个底包。
进一步的技术方案是,所述步骤S2中创建的容器应用sharedUserId设置与安卓沙盒环境的sharedUserId设置相同。容器应用的sharedUserId设置为与安卓沙盒环境相同,这样两个应用能够访问彼此的文件和数据,沙盒环境能顺利安装和运行在容器应用中的底包。
进一步的技术方案是,所述步骤S4中的具体步骤如下:
S4.1,在安卓系统中启动容器应用;
S4.2,容器应用初始化安卓沙盒环境,拉起服务端进程,然后启动安卓沙盒环境的环境检测;
S4.3,安卓沙盒环境准备完毕,容器应用准备安装目标应用的底包;
S4.4,容器应用调用服务端能力将目标应用的底包安装在容器应用的目录下,再次调用服务端能力启动运行目标应用,使目标应用运行在安卓沙盒环境中。
由于容器应用中设置服务端的包名为安卓沙盒环境的包名,S4.4中调用服务端能力时,实际就是调用的安卓沙盒环境能力,实现将目标应用的底包安装在容器应用的目录下,以及启动运行目标应用。本发明中,所有的独立应用使用的都是同一个服务端。具体在实现将目标应用的底包安装在容器应用的目录下的过程时,这里调用服务端能力的时候给服务端传入容器应用的包名,表示需要安装在容器应用中。
进一步的技术方案是,所述步骤S4.2后在启动安卓沙盒环境启动过程中,启动一个用于异常退出时自动重启的服务,同时注册服务的生命周期回调。
具体应用过程中用于异常退出时自动重启的服务为START_STICK服务,避免服务进程被kill后功能异常,保证服务功能正常运行。同注册服务的生命周期回调,在服务的连接和断开时,就会回调服务状态,避免后面重复初始化。
进一步的技术方案是,所述步骤S4.3中准备安卓沙盒环境的过程中包括设置设备信息和配置信息的步骤,使得安卓沙盒环境能得到所述的信息设备信息和配置信息,用于模拟系统服务和组件,同时安卓沙盒环境会启动用于保证具备特定服务的目标应用在虚拟的安卓沙盒环境中能够正常运行的依赖进程。
应用过程中,设置的设备信息包括device Id、Android Id、Mac、Serial No等,以及设置一些配置信息,如设置APK安装黑名单、设置application的方法回调、设置intent的拦截、通知拦截等,使安卓沙盒环境能得到这些信息,在模拟系统服务和组件中需要用到;需要时,启动依赖进程,保证虚拟安卓沙盒环境中也有相应的服务运行,保证在虚拟环境中能够正常运行需要特定的服务的应用。
进一步的技术方案是,所述步骤S4.2中先检测是否安装了步骤S1中安卓沙盒环境,若未安装,则先下载并安装所述安卓沙盒环境,若已经安装,则执行步骤S4.2中的后续步骤。
进一步的技术方案是,所述步骤S4.3中当安卓沙盒环境准备完毕后,容器应用收到准备成功消息后先检测是否已经安装目标应用的底包,若未安装,则执行步骤S4.4;若已经安装,则在步骤S4.4中跳过安装步骤直接调用服务端能力启动运行目标应用。
相比于现有技术,本发明具备如下优势:
1、资源消耗最小化:通过分离服务端虚拟环境和客户端应用,能够极大地减小资源消耗。每个目标应用都作为独立的客户端运行,只在需要时启动对应的服务端环境,可以更有效地管理和节省系统资源,实现资源消耗最小化。
2、提高兼容性:由于每个目标应用都作为独立的客户端运行,可以适应更多种类的应用,不需要担心应用间相互影响和冲突。
3、灵活性增强:本发明设计思路使得开发者可以根据需要为不同的应用提供定制的服务端环境,以满足特定的需求。
4、用户体验提升:用户进行双开应用时,应用程序产生的通知会以独立应用的身份显示,而非原先的沙盒环境应用;同样,在安卓系统中每个独立应用都会以独立应用的图标显示;在系统应用管理界面上,每个独立应用的显示也与原生应用一致;系统任务管理界面上,也能看到独立应用的运行情况。
5、优化管理对应用的管理和控制:传统沙盒环境中,所有应用共享同一个运行环境,当这个环境被关闭或终止时,运行在其中的所有应用都将被关闭或终止。然而,本发明通过将每个应用作为独立应用在沙盒环境中运行,系统可以对每个应用程序进行单独的管理和控制,当某个特定应用需要被关闭或终止时,系统可以只关闭该应用。
具体实施方式
以下结合具体实施例对本发明作进一步描述,以助于更好地理解本发明,但本发明的保护范围并不仅限于这些实施例。
本发明实施例如下,一种以独立应用运行在沙盒环境中的方法,包括如下步骤:
S1,在安卓系统中创建安卓沙盒环境;
S2,创建容器应用,将目标应用的底包放置在所述容器应用中,然后整体打包作为独立应用,其中,所述容器应用用于与安卓系统进行交互,同时通过安卓沙盒环境管理和运行目标应用;
S3,将步骤S2中的独立应用安装至安卓系统中;
S4,在安卓系统中运行独立应用,通过容器应用启动安卓沙盒环境,安卓沙盒环境准备完毕后,容器应用将目标应用的底包安装在容器应用的目录下,并调用安卓沙盒环境的能力启动运行目标应用,使目标应用运行在安卓沙盒环境中。
本领域技术人员应当了解,创建的安卓沙盒环境模拟了Android操作系统所有关键组件和服务。
本发明将安卓沙盒环境功能作为服务端安装在安卓系统中,而每个需要多开的应用,各自放到容器应用中,容器应用作为独立的应用安装在安卓系统中,应用启动过程中,对于安卓系统而言,它启动的是容器应用,但是通过容器应用中的转换,实际启动的是容器应用中的底包应用,将目标应用作为独立应用在沙盒环境中运行,从而实现了应用多开的功能。
如此,本发明改变了现有技术中直接在虚拟的沙盒环境中安装运行应用程序,所有应用和服务都集中在一个沙盒环境中的方式,通过将客户端(目标应用)与服务端(沙盒环境)进行分离,可以克服传统虚拟化和沙盒技术的缺点,实现高效、安全、兼容性好的应用多开功能。
在上述实施例的基础上,本发明另一实施例中,所述步骤S2中的具体步骤如下:
S2.1,创建容器应用并命名;
S2.2,容器应用中预先注册多个安卓应用中的核心组件;
S2.3,将目标应用的底包放到容器应用的预定文件夹下;
S2.4,将容器应用代码中设置服务端的包名命名为安卓沙盒环境的包名;
S2.5,编写容器应用代码,使得容器应用具备初始化沙盒环境,安装目标应用的底包至容器应用中、启动目标应用的底包应用以及调用安卓沙盒环境的能力的功能;
S2.6,编译打包生成独立应用;
具体应用过程中,容器应用的包名根据需要目标应用的包名进行变化。步骤S2实际就是开发生成容器应用,并将目标应用的底包放到容器应用的预定文件夹下生成独立应用的过程,S2.1~S2.5的顺序可以变化;需要说明的是,本领域技术人员应当清楚在编写容器应用程序代码的过程中可根据所要实现的功能与步骤开发生成这样一个容器应用程序。
在上述实施例的基础上,本发明另一实施例中,所述步骤S2.2中预先注册的安卓应用中的核心组件至少包括Activity、Service和Provider。实际应用过程中,在容器应用中,需要注册足够多的占位用Activity,Service,Provider,因为目标应用的底包中的四大组件没有注册到安卓系统中,需要在容器应用预先注册,在实际运行的时候,安卓沙盒环境启动底包时会替换为底包中要运行的四大组件。
在上述实施例的基础上,本发明另一实施例中,所述步骤S2.3中将目标应用的底包放到容器应用的assets文件夹下。如此,底包被嵌入到容器应用的assets文件夹中,随着容器应用安装到安卓系统中。当容器应用在安卓系统运行时,它会从自己的资源文件夹中获取这个底包,然后安装到容器应用中,容器应用调用安卓沙盒环境的API来运行这个底包。
在上述实施例的基础上,本发明另一实施例中,所述步骤S2中创建的容器应用sharedUserId设置与安卓沙盒环境的sharedUserId设置相同。容器应用的sharedUserId设置为与安卓沙盒环境相同,这样两个应用能够访问彼此的文件和数据,沙盒环境能顺利安装和运行在容器应用中的底包。
在上述实施例的基础上,本发明另一实施例中,所述步骤S4中的具体步骤如下:
S4.1,在安卓系统中启动容器应用;
S4.2,容器应用初始化安卓沙盒环境,拉起服务端进程,然后启动安卓沙盒环境的环境检测;
S4.3,安卓沙盒环境准备完毕,容器应用准备安装目标应用的底包;
S4.4,容器应用调用服务端能力将目标应用的底包安装在容器应用的目录下,再次调用服务端能力启动运行目标应用,使目标应用运行在安卓沙盒环境中。
由于容器应用中设置服务端的包名为安卓沙盒环境的包名,S4.4中调用服务端能力时,实际就是调用的安卓沙盒环境能力,实现将目标应用的底包安装在容器应用的目录下,以及启动运行目标应用。本发明中,所有的独立应用使用的都是同一个服务端。具体在实现将目标应用的底包安装在容器应用的目录下的过程时,这里调用服务端能力的时候给服务端传入容器应用的包名,表示需要安装在容器应用中。
在上述实施例的基础上,本发明另一实施例中,所述步骤S4.2后在启动安卓沙盒环境启动过程中,启动一个用于异常退出时自动重启的服务,同时注册服务的生命周期回调。具体应用过程中用于异常退出时自动重启的服务为START_STICK服务,避免服务进程被kill后功能异常,保证服务功能正常运行。同注册服务的生命周期回调,在服务的连接和断开时,就会回调服务状态,避免后面重复初始化。
在上述实施例的基础上,本发明另一实施例中,所述步骤S4.3中准备安卓沙盒环境的过程中包括设置设备信息和配置信息的步骤,使得安卓沙盒环境能得到所述的信息设备信息和配置信息,用于模拟系统服务和组件,同时安卓沙盒环境会启动用于保证具备特定服务的目标应用在虚拟的安卓沙盒环境中能够正常运行的依赖进程。应用过程中,设置的设备信息包括device Id、Android Id、Mac、Serial No等,以及设置一些配置信息,如设置APK安装黑名单、设置application的方法回调、设置intent的拦截、通知拦截等,使安卓沙盒环境能得到这些信息,在模拟系统服务和组件中需要用到;需要时,启动依赖进程,保证虚拟安卓沙盒环境中也有相应的服务运行,保证在虚拟环境中能够正常运行需要特定的服务的应用。
在上述实施例的基础上,本发明另一实施例中,所述步骤S4.2中先检测是否安装了步骤S1中安卓沙盒环境,若未安装,则先下载并安装所述安卓沙盒环境,若已经安装,则执行步骤S4.2中的后续步骤。
在上述实施例的基础上,本发明另一实施例中,所述步骤S4.3中当安卓沙盒环境准备完毕后,容器应用收到准备成功消息后先检测是否已经安装目标应用的底包,若未安装,则执行步骤S4.4;若已经安装,则在步骤S4.4中跳过安装步骤直接调用服务端能力启动运行目标应用。
为了更好的理解本发明的技术方案,提供一种具体的实施例如下:
以双开谷歌地图应用为例。核心需要准备两个关键部分:沙盒环境(即上文的安卓沙盒环境)和带有谷歌地图安装包(即上文底包)的容器应用。
沙盒环境:采用的是集成VMOS Lite SDK的APK,它能模拟Android操作系统的关键组件和服务。安装这个APK到Android系统,此时它会充当服务端。
容器应用:容器应用是为了实现多开功能特别设计的一个应用。在这个应用的assets文件夹下,放入谷歌地图应用的安装包(即底包)。
具体实施过程:
在Android系统中安装VMOS Lite SDK的APK,这个APK在Android系统和常规应用无异。
创建容器应用。容器应用的包名根据需要双开的应用(本实施例以谷歌地图)包名进行设置。容器应用的sharedUserId设置为与沙盒环境相同,这样两个应用能够访问彼此的文件和数据,沙盒环境能安装和运行在容器应用中的底包。在容器应用中,预先注册足够多的占位用Activity、Service和Provider,在实际运行的时候,服务端启动底包时会替换为底包中要运行的四大组件。然后,把谷歌地图应用的底包放到容器应用的assets文件夹下。编写容器应用代码,设置服务端的包名为沙盒环境包名,使得容器应用具备初始化沙盒环境,安装目标应用的底包至容器应用中、启动目标应用的底包应用以及调用安卓沙盒环境的能力的功能;然后整体打包生成独立应用。
将整体打包生成独立应用安装到Android系统中,这个过程同样与普通应用安装无异。
在容器应用安装好后,Android系统运行容器应用,在容器应用中首先会初始化VMOS Lite SDK,在这个过程中,会拉起服务端进程,然后启动服务端应用(沙盒环境)的环境检测。
在服务端应用启动过程中,启动可以自启动的START_STICK服务,以确保服务在被杀死后能自启动,保证功能正常运行。同时,注册服务的生命周期回调,服务的连接和断开时,就会回调服务状态,避免后面重复初始化;
设置设备信息和配置信息,设备信息如device Id、Android Id、Mac、Serial No等,配置信息如设置APK安装黑名单、设置application的方法回调、设置intent的拦截、通知拦截等,使沙盒环境能得到这些信息,在模拟系统服务和组件中需要用到;
由于谷歌地图需要GMS服务,此时服务端应用(沙盒环境)还会启动依赖进程,保证在虚拟环境中能够正常运行需要GMS服务的应用。
当服务端(沙盒环境)环境准备完毕后,容器应用收到环境准备成功消息,开始调用VMOS Lite SDK中的API安装目标应用的底包,容器应用会将底包安装在自己的应用目录下,安装成功后,再调用API启动底包应用,使其运行在沙盒环境中。
经过上述步骤,谷歌地图应用就成功地运行起来了,此时,对于Android系统而言,它启动的是容器应用,但是通过容器应用中的转换,实际启动的是容器应用中的底包应用,从而实现了应用多开的功能。
本发明所使用的术语如下:
Android:中文名称为安卓,是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能终端和平板电脑,由Google公司和开放终端联盟领导及开发。
容器应用:容器应用是一个为某个目标应用(如Google Map)定制的特殊应用。这个容器应用主要职责是与安卓系统进行交互,同时通过服务端虚拟环境管理和运行目标应用。
底包:在本发明中,底包是指需要在虚拟环境中运行的目标应用(需要被多开的应用)的原始安装包。这个原始安装包会被嵌入到容器应用的assets文件夹中,随着容器应用安装到安卓系统中。当容器应用在安卓系统运行时,它会从自己的资源文件夹中获取这个底包,然后安装到容器应用中,容器应用调用服务端的API来运行这个底包。
"Activity","Service"和"Provider":这是Android应用中的三个核心组件。Activity提供了用户界面,让用户可以执行如点击、输入等动作。一个Android应用通常由多个Activity组成,它们是用户与应用交互的主要方式。Service用于在后台执行长时间运行的操作,或者为远程进程提供功能。Service没有用户界面,即使应用被切换到后台,或者用户正在与另一个Activity交互,Service依然可以持续运行。Provider(内容提供者)是用于管理应用之间的数据共享的组件。通过Provider,一个应用可以向其他应用提供其数据库中的数据,或者允许其他应用修改其数据库。要使用这些组件,需要在Android APK安装包的AndroidManifest.xml文件中声明这些组件。
SharedUserId:在Android系统中,每个应用在其清单文件(AndroidManifest.xml)中都有一个“android:sharedUserId”属性,这个属性允许开发者为应用指定一个共享的用户ID。如果多个应用具有相同的sharedUserId,它们将运行在相同的Linux用户ID下。这样,这些应用就可以访问彼此的文件和数据。
沙盒环境:Android设备上安装一个应用时,系统会为该应用创建一个专属的“沙盒”。这个沙盒实际上是一个特定的储存空间,该应用只能在其沙盒内部执行操作。这个沙盒环境中模拟了Android操作系统所有关键组件和服务,可以在这个环境中安装应用。
沙盒应用:本发明中说的沙盒应用指的是安装在沙盒环境中的应用。
独立应用:安装在Android真机系统中,又依赖沙盒环境的应用。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (10)

1.一种以独立应用运行在沙盒环境中的方法,其特征在于,包括如下步骤:
S1,在安卓系统中创建安卓沙盒环境;
S2,创建容器应用,将目标应用的底包放置在所述容器应用中,然后整体打包作为独立应用,其中,所述容器应用用于与安卓系统进行交互,同时通过安卓沙盒环境管理和运行目标应用;
S3,将步骤S2中的独立应用安装至安卓系统中;
S4,在安卓系统中运行独立应用,通过容器应用启动安卓沙盒环境,安卓沙盒环境准备完毕后,容器应用将目标应用的底包安装在容器应用的目录下,并调用安卓沙盒环境的能力启动运行目标应用,使目标应用运行在安卓沙盒环境中。
2.根据权利要求1所述的以独立应用运行在沙盒环境中的方法,其特征在于,所述步骤S2中的具体步骤如下:
S2.1,创建容器应用并命名;
S2.2,容器应用中预先注册多个安卓应用中的核心组件;
S2.3,将目标应用的底包放到容器应用的预定文件夹下;
S2.4,将容器应用代码中设置服务端的包名命名为安卓沙盒环境的包名;
S2.5,编写容器应用代码,使得容器应用具备初始化沙盒环境,安装目标应用的底包至容器应用中、启动目标应用的底包应用以及调用安卓沙盒环境的能力的功能;
S2.6,编译打包生成独立应用。
3.根据权利要求2所述的以独立应用运行在沙盒环境中的方法,其特征在于,所述步骤S2.2中预先注册的安卓应用中的核心组件至少包括Activity、Service和Provider。
4.根据权利要求3所述的以独立应用运行在沙盒环境中的方法,其特征在于,所述步骤S2.3中将目标应用的底包放到容器应用的assets文件夹下。
5.根据权利要求2所述的以独立应用运行在沙盒环境中的方法,其特征在于,所述步骤S2中创建的容器应用sharedUserId设置与安卓沙盒环境的sharedUserId设置相同。
6.根据权利要求1~5任意一项所述的以独立应用运行在沙盒环境中的方法,其特征在于,所述步骤S4中的具体步骤如下:
S4.1,在安卓系统中启动容器应用;
S4.2,容器应用初始化安卓沙盒环境,拉起服务端进程,然后启动安卓沙盒环境的环境检测;
S4.3,安卓沙盒环境准备完毕,容器应用准备安装目标应用的底包;
S4.4,容器应用调用服务端能力将目标应用的底包安装在容器应用的目录下,再次调用服务端能力启动运行目标应用,使目标应用运行在安卓沙盒环境中。
7.根据权利要求6中所述的以独立应用运行在沙盒环境中的方法,其特征在于,所述步骤S4.2后在启动安卓沙盒环境启动过程中,启动一个用于异常退出时自动重启的服务,同时注册服务的生命周期回调。
8.根据权利要求7中所述的以独立应用运行在沙盒环境中的方法,其特征在于,所述步骤S4.3中准备安卓沙盒环境的过程中包括设置设备信息和配置信息的步骤,使得安卓沙盒环境能得到所述的信息设备信息和配置信息,用于模拟系统服务和组件,同时安卓沙盒环境会启动用于保证具备特定服务的目标应用在虚拟的安卓沙盒环境中能够正常运行的依赖进程。
9.根据权利要求6中所述的以独立应用运行在沙盒环境中的方法,其特征在于,所述步骤S4.2中先检测是否安装了步骤S1中安卓沙盒环境,若未安装,则先下载并安装所述安卓沙盒环境,若已经安装,则执行步骤S4.2中的后续步骤。
10.根据权利要求6中所述的以独立应用运行在沙盒环境中的方法,其特征在于,所述步骤S4.3中当安卓沙盒环境准备完毕后,容器应用收到准备成功消息后先检测是否已经安装目标应用的底包,若未安装,则执行步骤S4.4;若已经安装,则在步骤S4.4中跳过安装步骤直接调用服务端能力启动运行目标应用。
CN202310932402.4A 2023-07-27 2023-07-27 一种以独立应用运行在沙盒环境中的方法 Pending CN116992434A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310932402.4A CN116992434A (zh) 2023-07-27 2023-07-27 一种以独立应用运行在沙盒环境中的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310932402.4A CN116992434A (zh) 2023-07-27 2023-07-27 一种以独立应用运行在沙盒环境中的方法

Publications (1)

Publication Number Publication Date
CN116992434A true CN116992434A (zh) 2023-11-03

Family

ID=88531445

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310932402.4A Pending CN116992434A (zh) 2023-07-27 2023-07-27 一种以独立应用运行在沙盒环境中的方法

Country Status (1)

Country Link
CN (1) CN116992434A (zh)

Similar Documents

Publication Publication Date Title
US9519472B2 (en) Automation of virtual machine installation by splitting an installation into a minimal installation and customization
CN102622241B (zh) 一种软件升级方法及装置
EP2696532A2 (en) Method, server and system for starting application
CN105955782B (zh) 应用程序运行控制的方法及装置
CN103902265B (zh) 一种应用实现方法及相关装置
CN103970563B (zh) 动态加载安卓类的方法
CN105302563B (zh) 移动应用服务的插件化方法及系统
US20120246639A1 (en) Configuration of virtual appliances
US20170192773A1 (en) Mobile applications
CN105453036A (zh) 应用安装和布局同步
EP2701059A1 (en) Method and apparatus for loading application program
CN110032376B (zh) 基于Docker的自动化软件部署方法及装置
CN106502717B (zh) 应用程序运行方法及装置
CN105516154A (zh) 应用于SEAndroid系统的安全策略配置方法及装置
WO2017059724A1 (zh) 一种操作系统的启动方法及装置
CN104750528A (zh) 一种Android程序中的组件管理方法和装置
KR20130097555A (ko) 이종의 게스트 오퍼레이팅 시스템을 지원하는 휴대용 단말을 위한 어플리케이션 관리 장치 및 방법
CN108089873A (zh) 一种应用组件即时更新的方法及终端
CN107861742A (zh) 一种程序的运行方法和终端设备
CN104765624B (zh) 虚拟机应用程序的更新处理方法和装置
CN105144085B (zh) 针对存储设备的软件框架
CN108268261B (zh) 一种智能终端的ui定制方法、存储介质及智能终端
CN113821220A (zh) 一种linux操作系统的安装方法和装置
CN116992434A (zh) 一种以独立应用运行在沙盒环境中的方法
CN110389791B (zh) 组件调度方法、装置、设备及存储介质

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