隐私与数据边界

Android 本地 AI 个人与工作资料的模型隔离

将个人与工作资料视为各自拥有本地模型、临时文件和任务状态的应用上下文,只在用户授权且企业策略允许时才进行跨资料交接。

审核状态: 内容已校验;中文稿供用户审核 · 2026-10-08 · Fact IDs: ANDROID-PRIVACY-01, ANDROID-BG-01, COVE-DOWNLOAD-01, ANDROID-WORK-PROFILE-2026-10

直接回答

个人资料和受管理的工作资料应当视为两个独立的应用数据所有者,即使同一个应用包同时安装在两边。Android 可以把一个 APK 安装到两个资料,但会隔离它们的应用数据和存储区域;工作资料还受组织策略控制。某个模型选择、下载标记、临时路径、Worker 记录或“就绪”状态是在一个资料中创建的,并不能证明另一个资料也有该制品。增加资料间交接前,先判断产品是需要两份独立本地模型,还是需要一次经过明确授权的文件传输。 应按资料上下文分别盘点资源:当前 Android 用户/资料、模型 ID 与不可变版本、本地目标路径、临时候选文件、完整性元数据、Worker 尝试及可见就绪状态。通过当前运行资料的上下文解析文件,不要从另一资料推算路径,也不要依赖看似全局的外部存储路径。核实每份候选文件实际位于哪个卷。Cove 的 ModelDownloader 事实卡描述了一个配置存储目录和临时文件;这项源码事实不说明 Cove 构建在两个资料同时安装后如何工作,也不能证明 Cove 支持企业工作资料或已有公开 APK。 后台任务所有权也应遵守同一边界。Android 推荐在用户离开界面、应用退出或设备重启后仍需持续的工作使用 WorkManager;这不代表某个 Worker 是跨资料传输服务。可以把执行资料上下文、制品版本和尝试编号组成传输身份,并记录任务拥有的是哪个资料的应用数据库和目标路径。唯一任务名用于协调发起它的应用实例内的工作;不要把它当成另一个资料的全局互斥锁。应分别观察两个资料的真实文件和任务状态,测试重复入队、重试、取消、进程重建,以及另一资料同时启动任务的情况。 跨资料文件共享是一次明确交接,不是共享路径查询。file:// URI 带有发送资料存储中的绝对路径,不能作为另一个资料的访问方式。Android 建议使用 content:// URI,例如通过配置适当的 FileProvider 生成;只有提供者公开了文件、Intent 授予临时读取权限且资料策略允许时才可交接。接收方通过自己的 content resolver 打开 URI;若需要持久模型副本,就复制到接收资料自己的候选目录。默认只授予读取权限;只有明确的编辑功能且用户与管理员策略都允许修改时,才额外授予写权限。Context.grantUriPermission() 单独授予的权限只适用于同一资料;跨资料授权需要通过获准的 Intent 传递。content URI 不是无条件权限,这也不意味着模型文件不允许在获授权功能中编辑。 默认情况下,大多数 Intent 不会跨资料传递。管理员可以允许或阻止具体跨资料 Intent,也可以限制工作资料中可用的系统应用。Intent.resolveActivity() 可作预检查,但不永久保证启动或访问一定成功:策略、资料是否可用、处理程序状态及包可见性都可能影响路径。Android 11 或更高版本上,如果应用需要查询处理程序,必要时通过范围狭窄的 <queries> 声明可见性。仍要尝试实际操作,并对 ActivityNotFoundException、SecurityException、提供者错误和 URI 权限撤销提供恢复路径;失败时不能删除源文件,也不能显示模型已导入。 资料暂停和移除是另一类生命周期边界。不要推断工作资料暂停时本地传输已经完成或取消,也不要假定模型文件会与个人资料共享、复制过去或自动从个人资料删除。只能在一次性、可丢弃的受管资料测试环境验证暂停、恢复及(如在范围内)移除;不能操作用户真实的个人或工作资料。检查测试实例的 Worker 状态、临时文件和活动模型。按实际 Android 与企业策略处理;本文不声称应用可以控制资料生命周期或访问另一用户的私有存储。 验收记录应包含两个资料上下文、应用构建、制品版本、各上下文中实际观察到的存储路径、任务所有者、URI authority 与 grant、策略状态和结果。测试允许与阻止的跨资料 Intent,包括处理程序只安装在另一资料的情况。确认跨资料访问不使用 file URI;content URI 只在具备授权的测试路径中可读;缺失权限或管理员策略变化会显示可恢复失败。诊断日志不记录提示词、转写或模型输入。这是一套资料隔离和显式文件交接的工程方法,不证明 Cove 已实现受管资料支持,也不保证所有企业设备都允许模型共享。

用户希望个人与工作应用都能离线使用同一模型

同一个本地 AI 应用包安装在个人资料和受管工作资料中。用户在个人资料下载模型后,希望工作应用也显示就绪,但跨资料共享可能被策略阻止,两个实例也尚未一起测试。

决策

默认保持模型状态按资料独立。仅在用户意图和管理员策略都允许时交接,并在接收资料验证本地目标副本后才标记该实例就绪。

预期结果

每个资料显示自己的资源和任务状态。交接被阻止或授权撤销时,保留源文件,让接收资料保持未就绪并显示恢复操作。

需要收集的证据

只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:

  • 两个资料中的制品及临时路径清单
  • 按资料归属的 WorkManager 任务和结果
  • content URI 授权、Intent 策略和接收端校验结果

隐私声明需要数据清单和流量证据;“本地模型”标签本身不是证明。

实施流程

  1. 识别两个资料上下文. 在一次性、可丢弃的工作资料测试环境中记录 Android 用户/资料、应用包与构建、工作资料策略,以及每项操作由哪个应用实例发起。不能只凭工作徽标或应用 ID 推断上下文,也不能操作用户真实资料。
  2. 分别清点各资料的模型状态. 在每个资料记录模型版本、本地路径、临时候选、活动指针、Worker 尝试和就绪状态。只通过各自资料上下文比较真实文件;不能推断一个资料的下载标记或路径覆盖另一个资料。
  3. 将每个后台传输绑定到所有者. 定义含资料上下文、制品版本和尝试编号的操作身份。在一个资料测试入队、唯一任务替换、重试、取消与进程重建时,确认另一个资料不会认领该 Worker 或文件。
  4. 仅在获批后进行最小权限交接. 确需资料间传输时,测试获准提供者公开的 content:// URI,默认在 Intent 中只授予临时读取权限。只有明确的编辑功能且用户与管理员策略允许修改时才授予写权限。避免 file:// 路径和宽泛存储权限;管理员仍可能阻止 Intent 跨边界。
  5. 在实际启动时处理 Intent 和 URI 失败. 用 resolveActivity() 预检;需要查询处理程序时声明范围最小的包可见性。随后仍要实际启动 Intent,并处理 ActivityNotFoundException、SecurityException 和提供者故障;保留源字节,并提供重试、独立下载或取消选项。
  6. 测试资料暂停、恢复和移除. 只在一次性、可丢弃的受管资料测试环境操作,不能触碰用户真实的个人或工作资料。测试下载期间暂停、恢复,并在需要时移除测试资料;检查剩余资料中的任务状态、临时文件和活动模型,不推断系统会自动共享或删除数据。

让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。

验收标准

  • 个人与工作资料分别记录模型、临时路径、Worker 尝试和就绪状态;任一资料都不能继承另一资料的 ready 标记。
  • 跨资料不使用 file URI;content URI 默认只获最少临时读取授权,并通过接收资料测试且符合策略。仅为明确获授权的编辑功能增加写权限。
  • Intent 预检之后仍有实际启动及失败处理;策略或包可见性问题不会删除源数据,也不会把失败导入显示为就绪。
  • 资料暂停、恢复和纳入测试的移除行为只在一次性受管资料环境中观察;不触碰用户资料,也不推断 Cove 支持或普遍企业设备保证。

决策对照表

维度选择或证据解读方式
个人与工作资料各自保留模型独立资料副本和任务默认所有权最清晰;各资料分别验证和维护自身的模型就绪状态。
跨资料 Intent 携带 file:// 路径不要用作交接该路径属于发送资料的存储,在另一资料中不是有效访问方式。
授权后的 content:// 交接在获准 Intent 中授予最小临时访问仅当提供者、URI 授权、接收上下文和资料策略都允许时才可用,不等于自动共享存储。
两个资料使用同一 unique-work 名称把每个资料上下文视为不同任务所有者某个应用实例的调度记录不能证明存在跨资料全局锁或共享传输。

需要避免的失败模式

  • 假设同一个 APK 代表共享应用数据
  • 跨资料传递 file URI 或依赖全局 worker 名称
  • 把 resolveActivity 结果当作管理员策略和文件授权的永久保证

还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。

最小复现记录

层级记录内容
设备厂商、型号、芯片、内存档位、操作系统版本
软件应用版本和 Git 提交号
模型系列、变体、版本、格式、文件长度、摘要、量化方式
运行时名称、版本、请求后端及实际后端证据
工作负载样例版本、输入摘要、提示词摘要、输出策略
结果完成、失败、取消、回退及保护隐私的诊断信息

发布检查表

  • ☐ 主要搜索问题已回答,且没有未经支持的数字。
  • ☐ 所有模型文件和运行时版本均已固定。
  • ☐ 代表性任务和失败处理策略均有说明。
  • ☐ 生命周期、取消、清理和回退均已测试。
  • ☐ 用户内容与网络边界均有说明。
  • ☐ 结论只适用于被记录的配置。
  • ☐ 新增测试结果时链接到原始方法或证据。

来源与相关证据

中文部署与排错专题见。奇连 AI 端侧专题。

常见问题

同一个 APK 安装在两个资料中,就会共享已下载模型吗?

不能假设会共享。Android 按资料隔离应用数据。应在各自上下文检查制品与就绪状态;个人资料下载成功不证明工作实例可读取模型。

能把模型路径通过 file URI 发给工作资料吗?

不能。file URI 是发送资料内的路径,另一个资料无法使用。只有提供者、Intent 临时授权和管理员策略都允许访问时,才通过 content URI 交接。

content URI 一定能跨资料使用吗?

不能保证。提供者须公开文件,Intent 默认只授予临时读取,策略也须允许跨资料。只有明确的编辑功能且用户与管理员都授权时才加写权限。应在接收资料实测,并处理拒绝或撤销访问。

resolveActivity() 能保证交接之后仍可启动吗?

不能。它只是一次状态快照;策略、包可见性或资料状态可能在启动前变化。声明必要 queries,实际启动 Intent,并处理 ActivityNotFoundException 与 SecurityException。