新闻详情

新闻详情

首页 / 资讯中心 / 详情

VirtualApp 沙盒多开全景图:五类进程 + 一套配置的最短跑通路径

发布时间:2026/9/15 13:00:55来源:尧图网络
VirtualApp 沙盒多开全景图:五类进程 + 一套配置的最短跑通路径
VirtualApp 沙盒多开全景图五类进程 一套配置的最短跑通路径【免费下载链接】VirtualAppVirtual Engine for Android(Support 14.0 in business version)项目地址: https://gitcode.com/GitHub_Trending/vi/VirtualAppVirtualApp 是一个 Android 沙盒 / 应用多开框架它把宿主 App 变成虚拟机在内部安装、运行、多开第三方应用同时隔离数据、重定向文件 IO、接管系统服务。本文按「先懂进程模型 → 最短路径跑通 → 读懂配置 → 排错自查 → 进阶」的顺序帮你从零把功能跑起来。一、先建立运行时心智模型看懂 VirtualApp 进程模型在写任何集成代码之前先搞清楚一个事实VirtualApp 双开一个应用时系统里实际跑着不止一个进程。整个 VirtualApp 进程模型由五类进程组成各司其职进程职责你什么时候会碰到它主进程宿主 UI默认 32 位写宿主界面、调用 install/launch API插件进程承载 64 位目标应用的加载跑 64 位 App 时自动拉起虚拟应用进程真正运行被沙盒化的目标 App执行 Hook 与文件重定向调试目标 App 崩溃时服务端进程处理安装请求、管理虚拟应用、代理系统服务排查安装失败、Provider 异常其他子进程保活、推送等辅助任务一般无需关心初始化只发生在两个时机记住这个时序就不会把代码放错位置startup()必须在attachBaseContext阶段调用它负责启动引擎、初始化 IPC 总线、注入全部 Hook、修复 Contextinitialize()放在onCreate引擎会识别当前进程类型回调对应的初始化钩子。二、最短路径跑通从加依赖到启动虚拟应用下面六步是最小集成路径每步一句白话加一段最小代码照抄即可验证。第 1 步引入 lib 模块。沙盒能力全部在lib模块里app只是宿主示例。dependencies { implementation project(:lib) implementation com.android.support:appcompat-v7:25.4.0 }第 2 步写清身份与架构参数。这组 ext 参数是整个 VAConfig 配置的地基集中放在根工程或独立配置脚本里写法参考 doc/VADev.md。ext { PACKAGE_NAME com.yourcorp.sandbox EXT_PACKAGE_NAME com.yourcorp.sandbox.ext VA_MAIN_PACKAGE_32BIT true VA_ACCESS_PERMISSION_NAME com.yourcorp.sandbox.permission.GATE VA_AUTHORITY_PREFIX com.yourcorp.sandbox VA_EXT_AUTHORITY_PREFIX com.yourcorp.sandbox.ext VA_VERSION 1.0.0 }第 3 步声明保护权限并保持两侧一致。manifest 里用占位符引用${VA_ACCESS_PERMISSION_NAME}同时用manifestPlaceholders把第 2 步的值注入进来两边永远只改一处android { manifestPlaceholders [ VA_ACCESS_PERMISSION_NAME: rootProject.ext.VA_ACCESS_PERMISSION_NAME ] }第 4 步在 Application 里接住引擎。参考仓库自带的宿主实现 VApp.javaOverride protected void attachBaseContext(Context base) { super.attachBaseContext(base); VirtualCore.get().startup(base); // 引擎启动 Hook 注入 } Override public void onCreate() { super.onCreate(); VirtualCore.get().initialize(new VirtualCore.VirtualInitializer() { public void onMainProcess() { /* 仅主进程的初始化 */ } public void onVirtualProcess() { /* 沙盒应用进程初始化 */ } public void onServerProcess() { /* 服务端进程初始化 */ } }); }第 5 步安装一个目标应用。安装协议有两种package:走系统里已安装的目标 AppVirtualApp 双开模式file:直接吃 APK 文件独立安装模式目标设备没装过也能开。// 双开目标应用已装在设备上 VirtualCore.get().installPackage(Uri.parse(package: targetPkg), params); // 独立安装从文件直接装载 APK VirtualCore.get().installPackage(Uri.fromFile(apkPath), params); // 启动装好的虚拟应用第一个参数是 userId VActivityManager.get().launchApp(0, targetPkg);第 6 步验证。宿主启动 → 安装回调返回成功 → 目标 App 出现在你的应用列表里 → 点图标能进目标 App 首页。跑到这里最小闭环已经通了。三、读懂 VAConfig 配置按身份、架构、行为三组过一遍把所有参数按用途分成三组每个参数一行说清管什么 / 怎么填 / 填错会怎样。身份组决定你是谁PACKAGE_NAME宿主的包名必须全局唯一填了已存在的包名会被系统判为安装冲突。EXT_PACKAGE_NAME插件包身份约定在主包名后加.ext与主包脱钩会导致 64 位应用的加载链路找不到宿主。VA_AUTHORITY_PREFIX/VA_EXT_AUTHORITY_PREFIX主包与插件包 ContentProvider 的 authority 前缀必须全局唯一冲突的典型症状是Failed to find provider info。VA_ACCESS_PERMISSION_NAME组件间访问保护权限名必须与 manifest 声明逐字符一致靠第 3 步的占位符保证。架构组决定跑在哪VA_MAIN_PACKAGE_32BITtrue表示主包 32 位、插件包 64 位默认你的主包是 64 位就改成false否则 64 位目标应用起不来。VA_VERSION/VA_VERSION_CODE库内部版本管理一般不动。行为组SettingConfig里的运行时开关挑高频的isEnableIORedirect()默认true虚拟文件系统总闸关掉后沙盒应用会直接读写真实目录隔离形同虚设。isUseRealDataDir(pkg)默认false控制数据目录是否模拟真实路径格式。isAllowCreateShortcut()默认false是否允许为虚拟应用建桌面快捷方式。isEnableVirtualSdcardAndroidData()Android 11 及以上默认true外置存储重定向开关。onHandleLauncherIntent(intent)拦截桌面拉起的 Intent可重定向到你自己的首页。isDisableDrawOverlays(pkg)按包名禁用虚拟应用的悬浮窗权限做敏感应用管控时用它。参数之间的关联约束一张表看全参数关联约束填错后果PACKAGE_NAMEVA_AUTHORITY_PREFIX通常与其一致authority 与他人冲突Provider 查找失败EXT_PACKAGE_NAME跟随主包名加.ext插件进程与主进程身份错位VA_ACCESS_PERMISSION_NAME与 manifest 占位符严格一致组件互调被系统拒绝VA_MAIN_PACKAGE_32BIT必须与真实主包架构相符64 位应用无法加载四、踩坑与自查三类典型故障的定位方法先给一张 ⚠️ 排错表覆盖 90% 的集成期问题现象原因处理编译通过但运行时找不到 ProviderVA_AUTHORITY_PREFIX与他人重复或前缀不匹配改唯一前缀并同步 manifest 占位符权限拒绝 / 组件无法互调权限名在 gradle 与 manifest 两处不一致只保留占位符单一来源删掉硬编码64 位目标应用闪退或装不上VA_MAIN_PACKAGE_32BIT与实际架构不符主包为 64 位时改为false重新打包安装回调一直不返回目标包名写错或该进程没走服务端初始化核对包名检查onServerProcess是否执行场景要点企业多开。主包建议 64 位VA_MAIN_PACKAGE_32BIT false包名前缀按部门/产品线规划避免日后改名isAllowCreateShortcut按 IT 规范开关isDisableDrawOverlays对高敏应用统一禁用悬浮窗。场景要点游戏兼容。主包保持 32 位以覆盖更多老游戏优先保证isEnableIORedirect为true游戏存档多落在外置存储isEnableVirtualSdcardAndroidData不要关。场景要点发布到 Google Play。64 位主包 独立前缀全套自查一遍重点回归64 位应用闪退这一行。五、进阶方向从能跑到能控IO 重定向定制默认已开启若要对特定包放行真实路径在 SettingConfig 的目录类钩子里按包名分流实现见 VASettings。桌面快捷方式放开isAllowCreateShortcut后配合onHandleLauncherIntent重写跳转目标让用户从桌面直达你的宿主页面。悬浮窗与组件管控isDisableDrawOverlays之外onVirtualProcess回调里的 ComponentDelegate 还能伪造 IMEI、MAC 等设备信息宿主侧示例见 VApp.java。引擎级排障Hook 注入与进程分发的核心逻辑都在 VirtualCore 源码startup/initialize两阶段的内部动作可在这里逐行确认。下一步把第二节的六步贴进你的宿主工程装一个测试 APK 跑通 install 回调再对照第四节排错表逐项核对包名、authority 与权限名。【免费下载链接】VirtualAppVirtual Engine for Android(Support 14.0 in business version)项目地址: https://gitcode.com/GitHub_Trending/vi/VirtualApp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

开题报告深度解析|Paperxie 八大模块一键成型,告别开题被打回的崩溃 2026/9/15 13:43:02

开题报告深度解析|Paperxie 八大模块一键成型,告别开题被打回的崩溃

毕业论文的第一道坎,不是写正文,而是开题报告。很多同学开题就被卡住:选题定不下来、研究思路混乱、文献综述写得像流水账、研究内容太空、研究方法不会写、创新点找不到,被导师反复打回,改了三四遍还过不了&#xff0…

阅读更多 →
git-bug 桥接(Bridge)实战指南:通过 GitHub、GitLab、Jira、Launchpad 同步分布式 Bug 追踪 2026/9/15 13:43:02

git-bug 桥接(Bridge)实战指南:通过 GitHub、GitLab、Jira、Launchpad 同步分布式 Bug 追踪

git-bug 桥接(Bridge)实战指南:通过 GitHub、GitLab、Jira、Launchpad 同步分布式 Bug 追踪 【免费下载链接】git-bug Distributed, offline-first bug tracker embedded in git 项目地址: https://gitcode.com/GitHub_Trending/gi/git-bug…

阅读更多 →
Unity MCP 连接与配置速查:3 个卡点 5 步逐个排掉 2026/9/15 13:43:02

Unity MCP 连接与配置速查:3 个卡点 5 步逐个排掉

Unity MCP 连接与配置速查:3 个卡点 5 步逐个排掉 【免费下载链接】unity-mcp Unity MCP acts as a bridge between AI assistants and your Unity Editor. Give your LLM tools to manage assets, control scenes, edit scripts, and automate tasks within Unity.…

阅读更多 →
51单片机步进电机控制系统:从驱动电路到梯形加减速全解析 2026/9/15 13:43:02

51单片机步进电机控制系统:从驱动电路到梯形加减速全解析

简介:基于AT89C52RC的步进电机控制系统设计与仿真资料,面向单片机初学者及嵌入式自动化开发者,可帮助理解步进电机驱动原理、蓝牙远程控制、手动与自动模式切换等常见项目需求。系统通过ULN2003驱动芯片带动电机,使用三个按键完成…

阅读更多 →
传闻成真!苹果为 iPhone 开发游戏手柄,或借 Beats 品牌低价竞争 2026/9/15 13:43:02

传闻成真!苹果为 iPhone 开发游戏手柄,或借 Beats 品牌低价竞争

苹果游戏手柄:借 Beats 之名入局据彭博社马克古尔曼消息,苹果正在为 iPhone 开发两款游戏手柄,且可能以 Beats 品牌销售。此前,苹果进军游戏手柄市场的传闻已久,上周 MacRumors 就在 macOS 26.7 代码中发现两处提及苹果…

阅读更多 →
ScyllaDB Nodetool statusbackup 详解:增量备份状态查询命令的用法与底层原理 2026/9/15 13:40:02

ScyllaDB Nodetool statusbackup 详解:增量备份状态查询命令的用法与底层原理

ScyllaDB Nodetool statusbackup 详解:增量备份状态查询命令的用法与底层原理 【免费下载链接】scylladb NoSQL data store using the Seastar framework, compatible with Apache Cassandra and Amazon DynamoDB 项目地址: https://gitcode.com/GitHub_Trending/…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞