VirtualApp 应用多开完整指南三步配置并跑通 Android 沙盒【免费下载链接】VirtualAppVirtual Engine for Android(Support 14.0 in business version)项目地址: https://gitcode.com/GitHub_Trending/vi/VirtualAppVirtualApp简称 VA是一个开源的 Android 沙盒引擎可以理解为运行在手机上的轻量级 Android 虚拟机它实现了应用多开把一个应用装进沙盒里再跑出一份与系统环境在数据、进程、文件上互相独立。本文先讲清它的三层架构再带你从零跑通示例工程读完后你可以自己实现双开、数据隔离和位置伪装这几类功能。VirtualApp 应用多开解决什么问题以前想在同一部手机上同时登录个人和工作两个账号只能再买一台设备因为系统只允许一个应用装一份同一应用没法双开。VirtualApp 让第二个账号跑在沙盒里两份实例各自读写自己的数据互不干扰。另一个常见场景你要让某个第三方应用读取位置、通讯录或设备信息但又不想把真实数据交给它设备也没有条件 Root。沙盒里可以给它虚拟数据——它看到的是你构造的位置和联系人真实隐私留在沙盒外面。如果你是开发者想把几个小游戏或工具收进自己的产品里逐个上架成本高重打包又会触发应用的防篡改检测。VirtualApp 可以把 APK 直接装进自己的空间系统完全无感知做到静默分发。这三件事的共同点是都需要一个隔离环境来跑应用。VA 凭什么能做这件事答案在它的架构里。 VirtualApp 多开如何做到原理速览图VirtualApp 应用多开的三层结构——VA Space、VA Framework、VA NativeVA 的核心思路是让系统误以为应用已经安装。沙盒里的应用并没有真正装进系统于是 VA 把它发出的每一条系统服务请求都拦截下来把与它身份相关的参数替换成宿主应用的参数再交给真正的 Android Framework 处理返回结果回来时再把参数还原回去。整体分三层VA Space 是虚拟应用的隔离安装空间VA Framework 夹在虚拟应用与系统之间负责代理并改写系统服务调用是整套方案的核心VA Native 处理 Java 层拦不住的部分比如文件 I/O 重定向和 native 函数的 Hook。想通这一点就能理解多开只是它的副产品既然所有请求都能拦截数据隔离、行为监控和信息构造也就顺带成立了。 VirtualApp 示例工程如何从零跑起来原理清楚后下面用工程里的 app 模块走一遍最小流程。克隆仓库到本地git clone https://gitcode.com/GitHub_Trending/vi/VirtualApp用 Android Studio 导入 VirtualApp 目录等待 Gradle 同步完成示例宿主应用在app模块里。打开根目录的VAConfig.gradle把PACKAGE_NAME改成你要用的宿主包名并填写签名信息。这个文件是集成时的总配置主包 32 位还是 64 位也在这里切换。图VAConfig.gradle 是 VirtualApp 沙盒集成的总配置宿主应用的 Application 需要继承 VA 的代理类DelegateApplication把生命周期回调转发给虚拟应用。这样系统以为前台是宿主实际执行的是沙盒里应用的代码。图宿主 Application 向沙盒内虚拟应用转发生命周期回调进程起来后按顺序调用三个接口完成启动引擎 → 安装应用 → 启动应用VirtualCore.get().startup(); VirtualCore.get().installPackageAsUser(0, com.example.demo); VActivityManager.get().launchApp(0, com.example.demo);运行期间 VA 会拆成多类进程宿主主进程、64 位插件进程、虚拟应用进程和 server 进程。32 位应用跑在主包、64 位应用跑在插件包两个包通过 server 进程协调。图VirtualApp 应用多开运行时的进程划分与通信关系 VirtualApp 应用多开的典型用法如何配置应用双开与多账号个人用户最常用的场景微信、QQ 或游戏同时登录两个账号。installPackageAsUser的第一个参数是用户编号换用其他编号即可让同一应用开多个实例。想结束某个实例VActivityManager.get().killAppByPkg(com.example.demo, 0);如何用沙盒做企业数据隔离公司希望同一台设备上工作数据和个人数据互不混用时把办公应用放进沙盒运行相当于一部虚拟手机。文件可以加密封装行为可以记录审计全程不需要改动目标应用的源码。如何免 Root 做位置伪装位置类应用在沙盒里读到的是你构造的位置数据而不是真实 GPS。示例工程的 app 模块里home/location目录下就有位置设置的界面适合做测试或隐藏真实位置的演示。如何实现 APK 静默安装应用商店、游戏合集、小程序容器可以用installPackage接口把 APK 文件直接装进沙盒用户不用走系统安装确认页下载完点开就能用。VirtualApp 踩坑与常见问题问某个应用装进沙盒后打不开答部分应用有反虚拟化检测完整性校验、环境探测。开源代码自 2017 年起停更较新应用和系统版本的兼容性有限打不开时优先考虑商业版代码。问虚拟应用的数据存在哪里答宿主私有目录内默认/data/data/宿主包名/virtual/data/user/0/应用包名/在这里可以直接清除或备份数据。问为什么有主包和插件包两个包答一个应用进程只能是 32 位或 64 位。VA 用主包跑 32 位应用、插件包跑 64 位应用哪个做主包可以在配置里切换。问开源代码能直接用吗答仓库代码 2017 年 12 月后停止更新适合学习原理和小型试验。商业使用与最新系统兼容需要获取商业版授权。继续深入文档与模块位置开发文档中文doc/VADev.md开发文档英文doc/VADev_eng.md示例宿主应用源码框架核心库hook 与服务实现上面介绍的三个接口只覆盖了基础用法Hook 点、服务拦截和隔离机制的完整能力都在这几个模块里。建议你先按第五节的步骤把双开跑通再对照开发文档逐层读源码如果今天就想动手克隆仓库后走完这四步就是最短路径。【免费下载链接】VirtualAppVirtual Engine for Android(Support 14.0 in business version)项目地址: https://gitcode.com/GitHub_Trending/vi/VirtualApp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考