Android 17 在 AI 方面是一次重大架构升级,引入了 4 个全新系统服务、1 个新 HAL、1 个新系统应用,形成从硬件到应用的完整 AI 技术栈。本文基于 AOSP 源码进行梳理。
架构分层总览
| 层级 | 组件 | 说明 |
|---|
| 应用层 | PersonalContext、OnDeviceAppPrediction、第三方 AI 应用 | 面向用户和系统智能的 AI 应用 |
| Framework API | OnDeviceIntelligenceManager、PersonalContextManager、AiSealManager、PccSandboxManager、NpuManager | 面向开发者的系统 API(@SystemApi / @hide) |
| 系统服务 | ODI 推理服务、PersonalContext 上下文流水线、PCC 隐私沙箱、AiSeal 保护型 VM、NpuManager NPU 调度 | SystemServer 中运行的核心服务 |
| HAL 层 | NPU HAL (android.hardware.npu)、NeuralNetworks HAL | 硬件抽象层,VINTF 稳定接口 |
| 硬件层 | NPU / GPU / DSP / CPU | 物理 AI 加速器 |
一、OnDeviceIntelligence (ODI) —— 端侧 AI 推理引擎
ODI 是 Android 17 的旗舰 AI 推理服务,提供 LLM 推理、文本 Embedding、图像描述、Token 计算等能力,所有推理在隔离进程中运行,保障安全性和稳定性。
| 维度 | 详情 |
|---|
| 源码路径 | frameworks/base/packages/NeuralNetworks/ |
| 系统服务 | OnDeviceIntelligenceManagerService.java,在 SystemServer 第 3666 行启动 |
| 对外 API | OnDeviceIntelligenceManager (@SystemApi) |
| 所需权限 | USE_ON_DEVICE_INTELLIGENCE |
| 服务常量 | Context.ON_DEVICE_INTELLIGENCE_SERVICE = "on_device_intelligence" |
双服务架构
ODI 采用两个远端服务分离关注点:
- OnDeviceIntelligenceService(普通进程):负责模型管理、文件访问、Feature 发现、模型下载
- OnDeviceSandboxedInferenceService(隔离进程):执行实际推理,支持流式和非流式两种模式
核心 API 类
app/ondeviceintelligence/
├── OnDeviceIntelligenceManager -- 主入口
├── Feature / FeatureDetails -- AI 能力发现
├── OnDeviceModel -- 模型管理
├── InferenceInfo / TokenInfo -- 推理元数据
├── Content / Part -- 多模态内容结构
├── ProcessingCallback -- 非流式回调
├── StreamingProcessingCallback -- 流式回调
├── embedding/ -- Embedding 子 API
│ ├── EmbeddingModel
│ ├── EmbeddingRequest/Response
│ └── EmbeddingVector
└── imagedescription/ -- 图像描述子 API
├── ImageDescriptionModel
├── ImageDescriptionRequest/Response
└── ImageDescriptionCallback
二、PersonalContext —— 个人上下文感知系统
PersonalContext 通过三阶段流水线,将设备端的屏幕内容、通知、通话等信号转化为个性化的洞察和可操作建议。
| 维度 | 详情 |
|---|
| 系统服务路径 | frameworks/base/services/core/java/com/android/server/personalcontext/ |
| 系统应用路径 | packages/apps/PersonalContext/ |
| Framework API | frameworks/base/core/java/android/service/personalcontext/ |
| 服务启动 | SystemServer 第 2680–2682 行,由 config_enablePersonalContextManagerService 控制 |
三阶段流水线
Hints(输入) → Refiner(提炼) → Understander(理解) → Renderer(呈现) → Insights(输出)
Hint 类型(输入信号)
| Hint | 来源 |
|---|
NotificationHint | 通知栏消息 |
CallHint | 来电/通话 |
MessagesHint | SMS/即时消息 |
UserInputHint | 用户输入事件 |
RecentViewHint | 近期浏览内容 |
ContentCaptureConversationHint | Content Capture 对话 |
TextClassificationHint | 文本分类结果 |
AutofillInlineRequestHint | 自动填充请求 |
PersonalContext 系统应用内部模块
| 模块 | 功能 |
|---|
aicore/ | 直接调用 AI 模型:contextclassification、infoextraction、intentextraction、keywordextraction、textembedding 等 |
model/inference/ | 推理引擎:actionclassifier、intentclassifier、embedding、memorygeneration、textclassifier 等 |
model/architecture/bert/ | BERT 模型架构及其 DateTime 算法实现 |
common/rag/ | RAG 流水线:Retrieve Agent → AppSearch 存储 → Document 处理 |
search/magicaction/ | Magic Action 上下文动作搜索 |
search/magicrecall/ | Magic Recall 记忆召回搜索 |
understander/ | ChatUnderstander、NotificationUnderstander、ContextMenuUnderstander 服务实现 |
三、Private Compute Core (PCC) —— 隐私计算沙箱
PCC 是 Android 17 AI 安全的核心边界层。它确保敏感数据只能流入 PCC 沙箱,流出时强制经过脱敏和聚合处理,并提供完整的审计日志。
| 维度 | 详情 |
|---|
| 路径 | frameworks/base/services/core/java/com/android/server/privatecompute/ |
| 主服务 | PccSandboxManagerService |
| 权限 | PROVIDE_PRIVATE_COMPUTE_SERVICES |
8 种 PCC 受信角色
| 角色常量 | 用途 |
|---|
ASSISTANT | 数字助理 |
SYSTEM_NOTIFICATION_INTELLIGENCE | 通知智能 |
SYSTEM_TEXT_INTELLIGENCE | 文本智能 |
SYSTEM_VISUAL_INTELLIGENCE | 视觉智能 |
SYSTEM_AUDIO_INTELLIGENCE | 音频智能 |
SYSTEM_UI_INTELLIGENCE | UI 智能 |
SYSTEM_VENDOR_INTELLIGENCE | 厂商智能 |
SYSTEM_APP_PROTECTION_SERVICE | 应用保护服务 |
核心安全机制
- Bundle 脱敏:
PccBundleSanitizationUtil 确保跨边界数据安全
- 审计日志:
AuditLogFileManager + AuditLogFileWriter + AuditLogInMemoryBuffer 全链路记录
- 代理包装:对不受信客户端的 Binder 进行代理包装,拦截和脱敏
四、AiSeal —— AI 保护型虚拟机
AiSeal 是 Android 17 最硬核的安全组件——将最敏感的 AI 负载(个人数据推理、AI Agent)放在硬件隔离的虚拟机中运行。主机端守护进程使用 Rust 编写。
| 维度 | 详情 |
|---|
| Java 服务 | frameworks/base/services/aiseal/java/ |
| Native 守护进程 | frameworks/native/services/aisealhostservice/(Rust) |
| 通信方式 | vsock + Binder RPC |
| 权限 | MANAGE_AISEAL_VIRTUAL_MACHINE |
关键设计
- Rust 原生守护进程,通过
service.aiseal.enable 系统属性控制
- 管理 CE(凭据加密)存储生命周期
AiSealManager.connectService(name) 通过 vsock Binder 连接 VM 内部服务
AppSearchAiSealConfig 配置 AppSearch 在 VM 内运行
- 集成 SELinux 和 vsock 上下文控制
五、NPU HAL + NpuManager —— NPU 硬件调度
这是 Android 17 全新引入的 VINTF 稳定 HAL。与 NNAPI(负责 ML 算子执行)不同,NPU HAL 专注于优先级调度和资源管理。
| 维度 | 详情 |
|---|
| HAL 接口 | android.hardware.npu (AIDL v1) |
| HAL 路径 | hardware/interfaces/npu/aidl/ |
| NpuManager | packages/modules/NpuManager/(APEX 模块) |
| NDK 支持 | Rust + C FFI,__INTRODUCED_IN(37) |
核心 AIDL 接口
| 接口 | 功能 |
|---|
IScheduling | 系统设置每 UID 优先级(0–1000,数值越低优先级越高),获取工作状态回调 |
ISchedulingCallback | onWorkRequested / onWorkStarted / onWorkEnded(50ms 去抖动) |
SchedulingConfig | 包含 UID、优先级(0–1000)、directAccess 标志 |
WorkInfo | 包含 UID、优先级、时间戳、设备号、工作 ID |
三种模型加载策略
| 策略 | 说明 |
|---|
StatusQuoModelLoadingPolicy | 维持现状,不做调度干预 |
TurnTakingModelLoadingPolicy | 轮流加载,公平分配 |
BudgetModelLoadingPolicy | 基于预算,按配额分配 NPU 资源 |
六、其他 AI 相关组件
| 组件 | 路径 | 功能 |
|---|
| NNAPI | packages/modules/NeuralNetworks/
hardware/interfaces/neuralnetworks/ | 底层 ML 算子加速(TFLite 等),HIDL 1.0–1.3 + AIDL v1–v4 |
| OnDevicePersonalization | packages/modules/OnDevicePersonalization/ | 设备端个性化 + 联邦学习(FederatedComputeManager) |
| OnDeviceAppPrediction | packages/apps/OnDeviceAppPrediction/ | 应用预测服务 |
| odsign | system/security/ondevice-signing/ | AI 模型和设备数据的加签/验证(C++ 实现,集成 Keystore) |
| AppSearch | packages/modules/AppSearch/ | 设备端搜索索引引擎,支撑 PersonalContext 的存储和检索 |
| FederatedCompute | external/federated-compute/fcp/ | 完整的联邦计算协议实现(聚合、客户端、引擎) |
七、权限体系汇总
| 权限 | 归属组件 | 用途 |
|---|
USE_ON_DEVICE_INTELLIGENCE | ODI | 使用端侧推理能力 |
BIND_ON_DEVICE_INTELLIGENCE_SERVICE | ODI | 绑定 ODI 管理服务 |
BIND_ON_DEVICE_SANDBOXED_INFERENCE_SERVICE | ODI | 绑定沙箱推理服务 |
PERSONAL_CONTEXT_PUBLISH_HINTS | PersonalContext | 发布上下文提示 |
PERSONAL_CONTEXT_PUBLISH_INSIGHTS | PersonalContext | 发布上下文洞察 |
PERSONAL_CONTEXT_RECEIVE_HINTS | PersonalContext | 接收上下文提示 |
PERSONAL_CONTEXT_RECEIVE_INSIGHTS | PersonalContext | 接收上下文洞察 |
PERSONAL_CONTEXT_HOST_INSIGHT_SURFACE | PersonalContext | 托管洞察展示界面 |
CHANGE_PERSONAL_CONTEXT_MODE | PersonalContext | 切换上下文模式 |
PROVIDE_PRIVATE_COMPUTE_SERVICES | PCC | 提供隐私计算服务 |
MANAGE_AISEAL_VIRTUAL_MACHINE | AiSeal | 管理 AiSeal 虚拟机 |
八、SystemServer 启动链路
所有 AI 服务在 SystemServer.java 中的启动位置和顺序:
| 行号 | 代码 | 说明 |
|---|
| 424 | ON_DEVICE_INTELLIGENCE_MANAGER_SERVICE_CLASS | ODI 服务类常量定义 |
| 1964 | enablePccFrameworkSupport() | PCC 框架开关检查 |
| 2124 | startOnDeviceIntelligenceService(t) | ODI 服务启动 |
| 2680-2682 | startService(PersonalContextManagerService.class) | PersonalContext 服务启动(受 config flag 控制) |
| 3021-3026 | startService(AiSealSystemService.class) | AiSeal 服务启动 |
九、核心源码速查
| 关键文件 | 作用 |
|---|
frameworks/base/services/java/com/android/server/SystemServer.java | 所有 AI 服务的注册和启动 |
frameworks/base/core/java/android/content/Context.java:7102 | ON_DEVICE_INTELLIGENCE_SERVICE |
frameworks/base/core/java/android/content/Context.java:6896 | PCC_SANDBOX_SERVICE |
frameworks/base/core/java/android/content/Context.java:7376 | AISEAL_HOST_SERVICE |
frameworks/base/core/res/AndroidManifest.xml:9823-9842 | ODI 权限定义 |
frameworks/base/core/res/AndroidManifest.xml:3140-3218 | PersonalContext 权限定义 |
frameworks/base/core/res/AndroidManifest.xml:10347 | AiSeal 权限定义 |
frameworks/base/core/res/res/values/config.xml:5250-5263 | ODI 默认服务配置 |
十、总结
Android 17 的 AI 架构可以归纳为「三引擎 + 两安全边界 + 一调度层」:
- 推理引擎(ODI):对应用层暴露 LLM 推理、Embedding、图像描述等生成式 AI 能力
- 上下文引擎(PersonalContext):Hint → Refiner → Understander → Renderer 流水线,将设备信号转化为智能洞察
- 联邦引擎(OnDevicePersonalization + FederatedCompute):隐私保护下的设备端个性化与联邦学习
- PCC 沙箱:软件级安全边界,数据单向流入,脱敏输出,全链路审计
- AiSeal 虚拟机:硬件级安全边界,Rust 守护进程管理,vsock RPC 通信
- NPU 调度层(NPU HAL + NpuManager):优先级感知的 NPU 资源分配,三种加载策略
整个架构从底层的 NPU 硬件调度,到中层的推理引擎和上下文理解,再到上层的隐私沙箱和虚拟机隔离,形成了一套完整的、安全优先的端侧 AI 技术栈。
本文基于 AOSP android17 分支源码分析,版权归属 Android Open Source Project。