Android 虚拟化框架(AVF)指南
Android 虚拟化框架(AVF)指南
- 一、项目介绍
- 二、项目特色
- 三、如何使用AVF
- 四、总结
随着移动设备的普及和应用场景的多样化,安全性和隐私保护成为了移动操作系统的重要课题。Android作为全球最广泛使用的移动操作系统之一,一直在不断提升其安全性和功能性。Android虚拟化框架(AVF)作为一种新兴的技术,提供了一个安全且私密的执行环境,能够满足高安全性需求的应用场景。
文档:https://source.android.com/docs/core/virtualization?hl=zh-cn
一、项目介绍
Android虚拟化框架(AVF)是一个由Google开发的开源项目,旨在为Android设备提供一个安全的虚拟化环境。AVF利用虚拟化技术,将应用程序和系统服务隔离在独立的虚拟机中运行,从而提高系统的安全性和稳定性。AVF特别适用于需要高安全性和隐私保护的应用场景,例如金融应用、企业应用和敏感数据处理等。
AVF的核心组件包括基于内核的受保护虚拟机(pKVM)、Microdroid(一个精简版的Android操作系统)以及VirtualizationService(虚拟化服务)。这些组件共同构建了一个安全、灵活且高效的虚拟化环境。

二、项目特色
- 高安全性
AVF通过虚拟化技术提供了比传统Android应用沙盒更高的安全性。受保护的虚拟机(pVM)能够确保应用程序在一个隔离的环境中运行,即使主机系统遭到入侵,虚拟机中的数据和代码也能保持安全。
- 灵活性
AVF支持多种应用场景,开发者可以根据需求选择不同的虚拟化配置。通过Microdroid,开发者可以在虚拟机中运行精简版的Android操作系统,从而减少资源消耗并提高性能。
- 易于集成
AVF提供了丰富的API和工具,开发者可以轻松地将虚拟化功能集成到现有的应用程序中。VirtualizationService管理虚拟机的生命周期,并提供了便捷的接口用于创建和管理虚拟机。
- 社区支持
作为一个开源项目,AVF拥有活跃的社区支持。开发者可以获取帮助、分享经验,并参与项目的开发和改进。
三、如何使用AVF
与 AVF 兼容的应用包含两个部分:在主机 Android OS 上运行的应用部分,以及在 pVM 内的 Microdroid 上运行的应用部分。
-
在 Android 上运行的应用部分会实现界面、非机密业务逻辑,并创建和管理 pVM 的生命周期。
-
在 pVM 内的 Microdroid 上运行的应用部分负责执行任何需要安全执行的任务。
为了启动应用的 pVM 部分并与其通信,您的主机应用会创建一个 pVM,并在该 pVM 内运行原生共享库。此库实现 Binder 服务,应用的主机部分使用该服务与应用在 pVM 内的部分进行通信。

- 环境准备
首先,需要确保开发环境支持AVF。目前,AVF仅支持ARM64架构的设备。开发者需要安装最新版本的Android Studio,并确保设备运行支持AVF的Android版本。
- 配置虚拟机
开发者需要创建一个配置文件来定义虚拟机的操作系统和任务。以下是一个示例配置文件vm_config.json:
{"os": {"name": "microdroid"},"task": {"type": "microdroid_launcher","command": "MicrodroidTestNativeLib.so"}
}
- 实现Binder服务
在虚拟机中运行的应用部分需要实现一个Binder服务,用于与主机应用进行通信。以下是一个示例代码:
extern "C"
int android_native_main(int, char**) {// 实现Binder服务return 0;
}
- 创建和运行虚拟机
在主机应用中,开发者需要编写代码来创建和管理虚拟机。以下是一个示例代码:
// 准备配置文件
VirtualMachineConfig config = new VirtualMachineConfig.Builder(getApplication(), "assets/vm_config.json").build();// 创建或加载虚拟机
VirtualMachine vm = VirtualMachineManager.getInstance(getApplication()).getOrCreate("my_vm", config);// 运行虚拟机
vm.run();
- 与虚拟机通信
主机应用可以通过注册回调函数来与虚拟机中的Binder服务进行通信。以下是一个示例代码:
// 注册回调函数
vm.setCallback(Executors.newSingleThreadExecutor(),new VirtualMachineCallback() {@Overridepublic void onPayloadReady(VirtualMachine vm) {// 连接到Binder服务IBinder binder = vm.connectToVsockServer(PORT).get();IMyService svc = IMyService.Stub.asInterface(binder);// 使用自定义AIDL接口与服务通信Result res = svc.doSomething();}
}); // 异常处理和线程管理省略
vm.run();
四、总结
Android虚拟化框架(AVF)为开发者提供了一个安全、灵活且高效的虚拟化解决方案。通过AVF,开发者可以在Android设备上创建隔离的虚拟机环境,从而提高应用程序的安全性和隐私保护。AVF的高安全性、灵活性和易于集成的特点,使其成为需要高安全性应用场景的理想选择。通过本文的介绍和示例代码,希望能够帮助开发者更好地理解和使用AVF,开发出更加安全和稳定的应用程序。
相关文章:
Android 虚拟化框架(AVF)指南
Android 虚拟化框架(AVF)指南 一、项目介绍二、项目特色三、如何使用AVF四、总结 随着移动设备的普及和应用场景的多样化,安全性和隐私保护成为了移动操作系统的重要课题。Android作为全球最广泛使用的移动操作系统之一,一直在不断…...
day-77 超级饮料的最大强化能量
思路 动态规划:因为每一步要么选A,要么选B,所以问题可以转换为求最后一步从A选或从B选中的较大值 解题过程 定义而二维数组dp,dp[i][0]表示最后一步从A取能获得的最大能量,dp[i][1]表示最后一步从B取能获得的最大能量状态转换方程…...
有道小P 1.0.8 | 完全免费的AI全科学习助手,家长的好帮手
有道小P是一款由网易有道出品的完全免费的AI全科学习助手,专为中小学生设计。它支持多种输入方式,包括文字、语音和拍照识别,能够覆盖十个科目的所有题型,提供详细的解析和逐步解答,帮助孩子们理解和吸收知识。此外&am…...
vue项目中如何在路由变化时增加一个进度条
在 Vue.js 项目中,使用路由(如 Vue Router)时,为了提升用户体验,你可能会想要在路由变化时显示一个进度条。这可以通过多种方式实现,其中一种流行的做法是使用第三方库,如 vue-loading-bar 或 n…...
如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令以及Vscode中的环境路径配置中找不到gcc
配置环境变量教程很多,就不多说,说下耗费一小时解决的问题:mingw64安装后配置完环境变量仍然执行不了gcc命令 配置 了N次了,都还是在终端找不到指令,然后,将路径放到第一个,然后再看下…...
3-petalinux2018.3 摸索记录 - 命令驱动 _ 交叉编译链
一、命令行控制GPIO 对于ps端设备,在板卡的linux系统中,切换到/sys/class/gpio路径下可以看到目前挂载的gpio设备。 export: 导入用户空间 gpiochip: 系统中gpio寄存器信息 unexport: 移除用户空间 以MIO40和MIO42…...
【二分查找】——模板
二分查找模板题 一、题目要求 给定一个长度为n的非递减数组和一个数字target,要求找到数组中第一个大于等于target的位置pos,数组下标从 0 开始。如果不存在大于等于target的数字,则输出 -1。 二、输入格式 第一行:为两个正整…...
从可逆计算看DSL的设计要点
低代码平台的可视化设计器本质上是DSL(Domain Specific Language)的结构化编辑器。可视化设计器将编辑的结果序列化成文本格式时所采用的规范就是一种DSL语法定义。 Nop平台基于可逆计算原理,提出了一整套系统化的构建机制来简化DSL的设计和…...
axios竟态问题
竟态问题 在我们日常开发经常遇到一些竟态问题 例子1 现象1 表格分页,如果设置请求loading, 先切换到分页第99页,迅速在又切换到第1页,最后列表显示的是第99页数据。 原因 由于第99页请求数据花费时间可能500ms,第1页数据只需要100ms,第1页…...
如何批量注册多个Outlook邮箱账号并避免关联
批量注册多个Outlook邮箱账号时,如何避免账号之间的关联性是一个重要的考量因素。会在此文一起探讨如何高效且安全地批量注册多个Outlook邮箱账号,并提供一些实用的建议来确保这些账号不会被关联。 一、Outlook邮箱批量注册机制 在深入注册流程之前&…...
如何在安卓設備上設置全局代理?
對於安卓用戶來說,設置全局代理是維護網路隱私一種有效的方法,可以幫助在所有應用中使用同一個代理伺服器。本文將詳細介紹如何在安卓設備上進行全局代理設置。全局代理指的是通過一個代理伺服器來轉發設備上所有應用程式的網路請求。這樣,所…...
操作系统实验记录
实验零:虚拟机安装 一、安装vmware虚拟机 与vmware匹配搜索结果 - 考拉软件 (rjctx.com),下载17.5.1版本即可下载后对照教程安装 二、下载iso虚拟驱动 搜索清华大学镜像网站,点击再搜ubuntu,下载这个4.1GB的iso文件安装后打开vmware虚拟机 三、配置vmware虚拟机 右键管…...
FastAPI 路径参数详解:动态路径与数据校验的灵活实现
FastAPI 路径参数详解:动态路径与数据校验的灵活实现 本文全面介绍了在 FastAPI 中使用路径参数的技巧和实现方式。路径参数允许 API 动态响应不同路径中的请求信息,结合 URL(Uniform Resource Locator)和 URI(Unifor…...
【STM32】SD卡
(一)常用卡的认识 在学习这个内容之前,作为生活小白的我对于SD卡、TF卡、SIM卡毫无了解,晕头转向。 SD卡:Secure Digital Card的英文缩写,直译就是“安全数字卡”。一般用于大一些的电子设备比如:电脑、数码相机、AV…...
我一口气记录下整个接口自动化测试过程!
一、为什么选用postman postman调试工具无论对于开发和测试小白,还是技术大牛来说应该都耳熟能详,在过去的几年里大家对这款工具应用最广的用途是把当作接口调试的测试工具,它能发送几乎所有类型的HTTP请求,操作界面非常简洁美观…...
【VS中Git同步提交 报错:访问.vs/FileContentIndex/xxx.vsidx权限不允许】
参考: Git commit vsidx file access denied in Visual Studio 一劳永逸的方法: 在VSCode里,Git->设置->选项:编辑.gitignore文件,如下图: 忽略整个.vs文件夹,再重新提交就不会有涉及…...
Linux下Nginx的安装与使用
Linux下Nginx的安装与使用 博客: www.lstar.icu 开源地址 Gitee 地址: https://gitee.com/lxwise/iris-blog_parent Github 地址: https://github.com/lxwise/iris-blog_parent 序言 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子…...
飞机布雷盖航程公式
飞机布雷盖航程公式 1. 喷气式飞机布雷盖航程公式推导2. 螺旋桨飞机布雷盖航程公式推导3. 喷气式飞机与螺旋桨飞机的差异分析3.1 喷气式飞机的推力产生机制3.2 螺旋桨推进推力产生机制 布雷盖航程公式(Breguet Range Equation)是描述飞行器巡航飞行阶段航…...
在K8s平台部署个人博客
在K8s平台部署个人博客 实验步骤查看wordpress前端的service浏览器访问http://node_ip:30090 实验步骤 kubectl create secret generic mysql-pass --from-literalpasswordYOUR_PASSWORD把mysql.tar.gz和wordpress.tar.gz上传到K8s工作节点,手动解压即可࿱…...
git入门教程10:git性能优化
一、配置优化 使用SSH协议: 相比HTTP/HTTPS协议,SSH协议在网络传输中更高效,且支持更安全的认证方式。确保你的远程仓库URL使用的是SSH协议,例如:git clone gitgithub.com:username/repo.git。 调整Git缓冲区大小&…...
实战演练:在快马平台标准化java环境中构建并部署一个留言板应用
实战演练:在快马平台标准化Java环境中构建并部署一个留言板应用 最近在做一个Java Web项目的原型开发时,发现环境配置总是最耗时的环节。特别是团队协作时,每个人的JDK版本、依赖管理工具都可能不同,导致"在我机器上能跑&qu…...
LFM2.5-1.2B-Thinking-GGUF压力测试与性能调优:寻找最佳并发参数
LFM2.5-1.2B-Thinking-GGUF压力测试与性能调优:寻找最佳并发参数 1. 为什么需要压力测试 当你把LFM2.5-1.2B-Thinking-GGUF模型部署上线后,最担心的问题可能就是:这个服务能承受多少用户同时访问?会不会在高并发时崩溃ÿ…...
Seed-Coder-8B-Base功能体验:支持多种主流编程语言补全
Seed-Coder-8B-Base功能体验:支持多种主流编程语言补全 你有没有过这样的时刻——写代码时,思路清晰,但手指却卡在重复的语法结构上?或者,面对一个熟悉的编程模式,却要手动敲出几十行几乎相同的代码&#…...
PvZ Toolkit完整指南:植物大战僵尸修改器的终极解决方案
PvZ Toolkit完整指南:植物大战僵尸修改器的终极解决方案 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 你是否厌倦了在植物大战僵尸中重复刷资源?是否想体验游戏的全部乐趣…...
OpenClaw定时任务实战:Qwen3-4B驱动每日资讯摘要生成
OpenClaw定时任务实战:Qwen3-4B驱动每日资讯摘要生成 1. 为什么需要自动化资讯摘要 每天早上打开电脑,我的浏览器标签页总是堆满了十几个未读的科技资讯网站。作为技术从业者,保持行业敏感度很重要,但手动筛选和阅读的效率实在太…...
解决TranslucentTB中文显示异常的深度指南
解决TranslucentTB中文显示异常的深度指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB是一款能让Windows任务栏实现半透…...
GLM-4.1V-9B-Base实际作品集:10张典型图片的多角度中文理解结果
GLM-4.1V-9B-Base实际作品集:10张典型图片的多角度中文理解结果 1. 模型能力概览 GLM-4.1V-9B-Base是智谱开源的视觉多模态理解模型,专为中文视觉理解任务设计。这个模型最令人印象深刻的地方在于,它能像人类一样"看"图片并回答各…...
国内顶级的SEO技术网站有哪些
国内顶级的SEO技术网站有哪些? 在当今互联网时代,搜索引擎优化(SEO)已经成为每个网站营销者不可忽视的重要环节。国内顶级的SEO技术网站不仅为业内人士提供了宝贵的技术分享和实践经验,还为企业的网站流量优化提供了有…...
Llama-3.2V-11B-cot实战教程:集成Whisper实现音视频+图像联合推理
Llama-3.2V-11B-cot实战教程:集成Whisper实现音视频图像联合推理 1. 项目概述与核心能力 Llama-3.2V-11B-cot是一个强大的视觉语言模型,它不仅能理解图像内容,还能进行系统性推理。这个模型基于LLaVA-CoT论文实现,特别适合需要结…...
中山网站建设哪家好?从AI搜索变革看网站建设的规范流程
在讨论“中山网站建设哪家好”之前,有一个更底层的问题需要先理解:👉 网站的价值,正在被AI重新定义。一、信息获取路径正在发生根本变化过去二十年,用户获取信息的方式大致是:用户提出问题 → 打开搜索引擎…...
