(本文独家发布在金蝶云社区上)
背景介绍
如今,Android SmartPhone的双应用解决方案的需求对于终端用户来说是非常必要的。 由于一些隐私问题,为一些通信应用程序提供多个帐户会更方便,例如WeChat,WhatsApp,Momo。 一些ODM和开发人员已实现此功能。
一些候选方案
Android Frameworks hooks. (平行空间应用)
两个相同应用的简单支持. (The Post from CSDN)
操作系统级别的仿真
硬件级的仿真(KVM and Xen)
我的建议和推荐
首先,我提出自己的看法:实施操作系统级别模拟是我们最好的解决方案。 然后我将对这些解决方案做一些简单的解释。
第一个解决方案可以由第三方应用程序实现,幸运的是,有一个非常成熟的解决方案称为“并行空间”。任何人都可以在Android平台上安装它,它的功能和性能都很棒。因此我们不需要自己实现,而且这项技术很难实现,因为开发人员需要对Android基础架构和组件有非常深刻的理解。
我上面提到的CSDN帖子对第二个解决方案有一个非常清晰和详细的描述。 它很容易实现,所以我就不赘述了。
这个方案是我强烈推荐的。该方法主要使用隔离技术来创建虚拟实例并对其进行管理。 单个虚拟实例中的进程和服务可以完全分离,因此他们不了解其他虚拟实例,也不了解其他虚拟实例中的进程。为了实现这些功能,Linux内核中有两种机制:cgroup和namespace。 他们可以隔离进程,网络和文件系统。在我之前的调查中,我找到了两个可以实现Android虚拟化的解决方案:一个叫做conDroid,由浙江大学团队实现,另一个叫做CELLs,由哥伦比亚大学团队实现。
硬件级仿真由于其强大的计算能力而在台式计算机中非常流行。此方法可以模拟其他CPU架构的指令。 不幸的是,由于移动平台的低性能,这不是我推荐的方案选择。但是,随着ARM芯片的巨大进步,我个人认为这方案在未来可能会变得成熟。其实现在已经有一些相关解决方案了,例如ARM上的KVM和ARM上的Xen。
如上所述,我推荐操作系统级虚拟化,但是有两种相关解决方案。我选择了哥伦比亚大学的CELLS解决方案。
浙江大学的ConDroid使用Linux上一个流行的开源解决方案:LXC,用于在Linux上实现容器隔离。然而,在阅读浙江大学提交的论文后,我发现他们在Android组件中有很多修改,例如WindowManagerService,SurfaceFlinger,InputManager,Binder系统。实际上,每个虚拟化解决方案都需要解决这些基本系统资源的复用问题,例如图形,输入设备,网络和文件系统。ConDroid解决方案显然在Android平台上解决了这些问题。CELLS解决方案主要修改内核驱动程序代码以复用这些资源。 在我看来,这个解决方案对一般的OEM公司来说更好。 有以下三个原因:
工业中的角色。一般情况下,是移动芯片和解决方案供应商会考虑实施操作系统的虚拟方案。因此,我们应该尽力保持Android软件栈不受影响,除了硬件相关模块,例如:HAL,设备驱动程序以及SIM卡管理,尽管这是一项不可能完成的任务。
Linux内核的兼容性和稳定性。众所周知,AOSP中的每个大版本都给Android架构带来许多巨大的修改,因此追随Google的脚步成本会很高。虽然,随着Linux版本的推进,内核中的每次变化也会很大,但是一些基础子系统相对稳定。 因此,内核中的修改是相对低成本的。
安全问题。 Container技术比直接在Android框架上修改更安全。应用程序在隔离的沙箱中运行,即使某些恶意应用程序执行了错误操作,也可以更轻松地控制它们。例如,我们可以在具有root权限的原始Android VM上安装一些财务应用程序和其他重要应用程序,然后可以在没有root权限的虚拟机实例上安装一些有趣的应用程序以及一些其他可能对设备有害的非标准应用程序 。这种方案比传统情况更安全。
Cells简介
Cells是第一个支持多个虚拟智能手机和平板电脑在同一物理设备上同时运行的开源虚拟化架构。利用在Linux容器上完成的轻量级虚拟化工作,Cells引入了一个新的设备命名空间框架,允许内核和用户空间驱动程序有效地复用对硬件的访问。与智能手机和平板电脑过重的传统虚拟机方法不同,Cells设备命名空间框架是轻量级的,在运行多个虚拟电话或平板电脑时提供本机硬件性能。这包括完全加速的3D图形,为用户期望从其移动设备获得的图形密集型应用程序提供相同的视觉用户体验。单元格以原生速度透明地运行Android应用程序,无需任何修改,因此您可以使用Google Play商店中所有您喜欢的应用程序。
Cells有很多用途。同一部手机上的多个隔离虚拟设备可以让商务人士携带包含企业和个人电话的单个电话,从而提供高效,高性能的BYOD解决方案。应用程序开发人员可以使用多个虚拟设备来测试不同的应用程Cell还为父母提供了一种在儿童友好型虚拟平板电脑中隔离应用程序和设置的方法,同时在同一物理平板电脑上运行配置有私人电子邮件地址和应用程序的全功能平板电脑。