虚拟环境之间如何互相隔离:独立数据与独立进程
隔离是虚拟引擎的定义,不是附加功能
黑盒的官方介绍里,「隔离」与克隆、多开并列为核心能力:装进虚拟环境的应用彼此完全隔离、互不干扰。这句话背后是三套独立的机制,理解它们能帮你预判哪些数据会隔离、哪些不会。
第一层:数据目录隔离
每个虚拟应用的数据都存放在引擎的私有数据目录内,且按用户分开:
- 同一应用的两个分身,各自有自己的数据目录,聊天记录、登录凭证、缓存文件互不可见;
- 清掉一个分身的数据,另一个分身毫发无损;
- 这些目录都在引擎的私有空间内,系统里的其他应用(包括本体)也读不到。
第二层:进程与运行时隔离
虚拟环境内的每个应用运行在引擎托管的独立进程中,引擎负责把它们对系统接口的调用翻译到虚拟上下文:
- 分身 A 崩溃不会连带分身 B,杀进程也只影响对应实例;
- 应用以为自己在正常的安卓环境里,读到的是引擎提供的虚拟身份信息;
- 这也是「设备改机」「虚拟定位」能够生效的原因——环境信息本身就是引擎构造的,见设备改机。
第三层:权限体系隔离
虚拟应用申请的权限走引擎层的处理,与系统权限分开管理。所以你在黑盒里给应用 A 授权麦克风,不代表系统里的应用 A 拿到了这个权限,反之亦然。
什么是不隔离的
把边界也说清楚,避免误判:
- 设备硬件是共享的:网络、传感器、电池、存储介质都是同一套物理资源,虚拟环境只是逻辑隔离;
- 网络出口相同:所有分身共用设备的网络身份与 IP,这也是虚拟定位功能有 IP 定位边界的原因,详见虚拟定位的原理与边界;
- 引擎本体是单点:引擎卸载,所有用户的隔离空间一并消失,见移除虚拟应用与释放空间。
隔离带来的日常推论
- 想「重置」某个分身 = 清那个用户/那份应用的数据,不用动整机;
- 怕测试应用污染系统 = 装进黑盒,测试完整个移除;
- 换新手机 = 虚拟环境数据不随系统迁移工具搬家,需要重新搭建。