以下是VirtualAPP的执行流程图:

image-20250418190817332.png (137.5 KB, 下载次数: 0)
下载附件
2025-4-18 19:08 上传
我们通过这样的一个开源的virtualApp来了解一下,一个应用程序是怎么去实现在虚拟机里面运行的。
Virtual space
首先是应用程序的下载安装。实际上,在虚拟机中运行的应用程序是下载到的虚拟机空间(virtual space)中的。
Virtual Framework
虚拟机中的 App(比如 App1、App2)原本会直接调用系统 Framework,但是在虚拟机中的APP需要的就不同
Android Framework
Android Framework 是 Android 系统提供的一整套 API,它是 系统级服务(如 AMS、PMS、LocationService) 的接口,比如:
这些都属于 系统原生的 Android Framework,运行在系统进程(如 system_server)中,不是用户 App 能随意改动的。而在虚拟机中的Framework,则是自开发的可改动的Framework。
而在Virtual Framework中,需要做的事情就是让APP觉得自己是在原生系统下执行的,根据Android Frameword中的应用程序的执行流程,我们可以知道的是
一个应用程序的执行流程大体是这样的:
应用的真正启动是 ActivityThread 执行的,但整个过程是由 AMS 控制调度的,双方通过 Binder 建立通信桥梁。
虚拟 App vs 原生安装 App
[table]
[tr]
[td]方面[/td]
[td]虚拟机中的 App(VA App)[/td]
[td]系统安装的 App(原生 App)[/td]
[/tr]
[tr]
[td]安装方式