当前位置: 首页 > news >正文

高通vendor app访问文件

一、什么是vendor app?

Vendor App‌:通常指设备制造商(OEM)预装在系统中的应用程序或服务,可能与硬件功能(如芯片组、传感器等)深度集成。

在设备中,显著特征是安装在 /vendor/app下的应用。

1.1 vendor app与普通应用和系统应用区别

一句话总结:

  • 普通应用: 第三方 APK,装在 /data/app,域 untrusted_app_*,无特权。
  • 系统应用: 预置在 system/product/system_ext,分为普通系统应用与特权系统应用(在 priv-app 且允许清单放行)。
  • Vendor 应用: 预置在 vendor 分区,域通常为 vendor_app;放到 vendor/priv-app 并被放行后才具备特权。

1.2 关键差异维度

  • 安装位置
    • 普通应用: /data/app
    • 系统应用: /system/app/product/app/system_ext/app(或对应 priv-app
    • Vendor 应用: /vendor/app(或 /vendor/priv-app
  • 签名与权限
    • 普通应用: 只能拿普通/危险权限;signature 权限需与定义方同签名。
    • 系统应用(非特权): 预置但无特权;若与平台同签可拿 signature(平台定义的)。
    • 特权应用(任一分区的 priv-app): 可获标记为 privileged 的权限,但必须在对应分区的 privapp-permissions-*.xml 白名单中显式放行。
  • SELinux 域(示意,随版本可能有细微差异)
    • 普通应用: untrusted_app/untrusted_app_*
    • 系统应用(非特权): 常见为 platform_app/system_app
    • 特权应用: priv_app
    • Vendor 应用(非特权): vendor_app
  • 接口可达性
    • 普通/非特权系统/vendor 应用: 受隐藏 API 限制,不能访问私有/灰名单 API。
    • 特权/平台应用: 可通过白名单获得少量豁免(需系统侧配置,强约束)。
  • 数据与沙箱
    • 三者均为独立应用沙箱,默认不能访问他人 /data/data/<pkg>;即便文件 777 或属主为 system,也会被父目录与 SELinux 拦截。
  • 硬件与服务访问
    • Vendor 应用可按设备 sepolicy 授权访问特定 vendor 服务/HAL;普通应用一般不行。
  • 可更新性
    • 预置(系统/vendor)应用可被 /data/app 的同包名更高版本“覆盖更新”;特权资格取决于安装位与白名单,而非是否被后续更新覆盖。

1.3 判断你手头 APK 属于哪类(开发机上)

  • adb shell pm path <pkg> 看安装路径是否在 /data/app/system*/product/system_ext/vendor
  • adb shell dumpsys package <pkg> | grep -i 'isSystem\|isPrivileged'
  • adb shell ps -A -o label,user,name | grep <pkg> 看 SELinux 域(如 u:r:vendor_app:s0u:r:priv_app:s0)。

二、vendor app访问文件系统

2.1 私有应用目录

vendor app可直接访问私有应用目录。

把文件放到 /data/user/0/<package>/files,应用可直接读写。

或者 /data/data/<package>/files

应用可直接访问。文件权限可以设置777.

2.1.1 是否私有目录的读写不受限制呢?

vendor app 访问应用私有目录 /data/data/<package>/files/ark_000008_20250725_8850,发现模型ark_000008_20250725_8850访问失败。ark_000008_20250725_8850所有者 system:system, 读写权限777。

  • 目录遍历被挡住:/data/data/<package> 目录本身通常是 0700 u0_aXXX:u0_aXXX,外部进程无法通过父目录,即使子文件是 777 也无效。
  • SELinux 强制访问控制:私有目录和其中文件标记为 u:object_r:app_data_file:s0:cNNN,cMMM(带 category),进程域(如 u:r:priv_app:s0/u:r:untrusted_app_*:s0/u:r:vendor_app:s0)不匹配会被拒绝。DAC 放行也会被 MAC 拦截。

可用命令验证(需 root/userdebug):

adb shell ls -ld /data/data/<package>
adb shell ls -lZ /data/data/<package>/files/ark_000008_20250725_8850

如果用户权限 root:root,读写权限777, vendor app可以访问。

2.2 shell工作区间

/data/local/tmp 仅 shell/root 可访问,目录权限与 SELinux(shell_data_file 类型)会阻止普通 APP,包括 vendor/system/priv-app。

2.2.1 例外(仅限开发/自编 ROM/Root 环境)

  • 设备是 userdebug/eng,或已 root:可通过调整策略或权限后访问(例如 setenforce 0、改目录权限、或为应用添加 SELinux allow 规则)。量产 user 设备不可行。
  • 让应用以 shell UID 运行(平台签名 + sharedUserId="android.uid.shell"):强烈不推荐,新版 Android 限制多且有合规风险。

2.2.2 推荐替代方案

  • 应用私有目录:把文件放到 /data/user/0/<package>/files,应用可直接读写。

    • 调试场景(需 debuggable 包)可用:
      adb push foo /data/local/tmp/
      adb shell run-as <package> cp /data/local/tmp/foo /data/user/0/<package>/files/
      
  • 外部存储/SAF:把文件放到 Download,用存储访问框架读取(Android 10+ 遵循分区存储与 READ_MEDIA_* 权限)。

  • 通过服务/Provider:用自定义 ContentProvider、Binder 服务、或本地 HTTP/Socket 把数据送入应用沙箱。

  • 内置资源:将测试数据打包进 assets/ 或 res/raw/

  • 调试专用接口:若是自研系统,可在自编 ROM 的 sepolicy 中为特定 vendor_app 放行访问(仅限内部测试)。

  • 结论:在标准量产设备上,vendor app 不能访问 /data/local/tmp;请改用应用沙箱或上述替代路径。

http://www.dtcms.com/a/333796.html

相关文章:

  • 【使用三化总结大模型基础概念】
  • 淘宝/天猫店铺商品搜索利器:taobao.item_search_shop API返回值详解
  • 【秋招笔试】2025.08.15饿了么秋招机考-第一题
  • 嵌入式linux学习 -- 进程和线程
  • CIAIE 2025上海汽车内外饰展观察:从美学到功能的产业跃迁
  • Redis 启动时出现 “Bad file format reading the append only file“ 错误
  • 【万字精讲】 左枝清减·右枝丰盈:C++构筑的二叉搜索森林
  • office2016常见故障解决方法
  • 第七十一章:AI的“个性定制服务”:微调 LLM vs 微调 Diffusion 模型——谁是“魔改之王”?
  • 展览讯息易天邀您共赴第26届中国国际光电博览会
  • AI创业公司分析:Paloma
  • 网络通讯核心知识
  • AI的拜师学艺,模型蒸馏技术
  • 标注工具label-studio保姆级配置教程
  • MySQL主从集群
  • 软件开发过程中的维护活动
  • Effective C++ 条款42:了解 typename 的双重含义
  • 大模型幻觉涉及的违约责任探讨
  • Chrome插件开发全指南
  • K 近邻算法(KNN)及其应用解析
  • strings命令和findstr命令验证iso文件中ntkrnlmp.exe系统版本
  • 昇腾AI自学Day1-- 深度学习基础工具与数学
  • Lecture 9: Concurrency 2
  • AAAI爆款:目标检测新范式,模块化设计封神之作
  • fs模块_写入文件
  • 高可用双向存储服务GlusterFS
  • 【SpringBoot】SpringBoot 整合JDBC、Mybatis、Druid
  • PCA降维理论详解
  • Spring Boot 拦截器详解
  • 固定资产管理系统 OCR 识别功能技术解析