【最新鸿蒙应开发】——HarmonyOS沙箱目录

鸿蒙应用沙箱目录

1. 应用沙箱概念

应用沙箱是一种以安全防护为目的的隔离机制,避免数据受到恶意路径穿越访问。在这种沙箱的保护机制下,应用可见的目录范围即为应用沙箱目录

  • 对于每个应用,系统会在内部存储空间映射出一个专属的应用沙箱目录,它是(“应用文件目录与应用文件路径)”与一部分系统文件(应用运行必需的少量系统文件)所在的目录组成的集合。

  • 应用沙箱限制了应用可见的数据的最小范围。在应用沙箱目录中,应用仅能看到自己的应用文件以及少量的系统文件(应用运行必需的少量系统文件)。因此,本应用的文件也不为其他应用可见,从而保护了应用文件的安全。

  • 应用可以在应用文件目录下保存和处理自己的应用文件;系统文件及其目录对于应用是只读的;而应用若需访问用户文件,则需要通过特定API同时经过用户的相应授权才能进行。

下图展示了应用沙箱下,应用可访问的文件范围和方式。应用沙箱文件访问关系图:

2. 应用沙箱目录与应用沙箱路径

在应用沙箱保护机制下,应用无法获知除自身应用文件目录之外的其他应用或用户的数据目录位置及存在。同时,所有应用的目录可见范围均经过权限隔离与文件路径挂载隔离,形成了独立的路径视图,屏蔽了实际物理路径:

  • 如下图所示,在普通应用(也称三方应用)视角下,不仅可见的目录与文件数量限制到了最小范围,并且可见的目录与文件路径也与系统进程等其他进程看到的不同。我们将普通应用视角下看到的应用沙箱目录下某个文件或某个具体目录的路径,称为应用沙箱路径

    • 从实际物理路径推物理路径沙箱路径并不是1:1的映射关系沙箱路径总是少于系统进程视角可见的物理路径。有些调试进程视角下的物理路径在对应的应用沙箱目录是无法找到的,而沙箱路径总是能够找到其对应的物理路径(不同权限与角色的进程下可见的文件路径不同)

3. 应用文件目录与应用文件路径

如前文所述,“应用沙箱目录”内分为两类:应用文件目录系统文件目录

系统文件目录对应用的可见范围由OpenHarmony系统预置,开发者无需关注。

在此主要介绍应用文件目录,如下图所示。应用文件目录下某个文件或某个具体目录的路径称为应用文件路径。应用文件目录下的各个文件路径,具备不同的属性和特征。应用文件目录结构图:

  1. 一级目录data/:代表应用文件目录

  2. 二级目录storage/:代表本应用持久化文件目录

  3. 三级目录el1/、el2/:代表不同文件加密类型

    • el1,设备级加密区:设备开机后即可访问的数据区。

    • el2,用户级加密区:设备开机后,需要至少一次解锁对应用户的锁屏界面(密码、指纹、人脸等方式或无密码状态)后,才能够访问的加密数据区。 应用如无特殊需要,应将数据存放在el2加密目录下,以尽可能保证数据安全。但是对于某些场景,一些应用文件需要在用户解锁前就可被访问,例如时钟、闹铃、壁纸等,此时应用需要将这些文件存放到设备级加密区(el1)。

    • el3:对于应用中的记录步数、文件下载、音乐播放,需要在锁屏时读写和创建新文件,放在(EL3)的加密分区比较合适。
    • el4:对于用户安全信息相关的文件,锁屏时不需要读写文件、也不能创建文件,放在(EL4)的加密分区更合适。
  4. 四级、五级目录: 通过ApplicationContext可以获取distributedfiles目录或base下的filescachepreferencestemp等目录的应用文件路径,应用全局信息可以存放在这些目录下。

    通过UIAbilityContext、AbilityStageContext、ExtensionContext可以获取HAP级别应用文件路径。HAP信息可以存放在这些目录下,存放在此目录的文件会跟随HAP的卸载而删除,不会影响App级别目录下的文件。

应用文件路径详细说明

目录名Context属性名称类型说明
bundlebundleCodeDir安装文件路径应用安装后的App的HAP资源包所在目录;随应用卸载而清理。 不能拼接路径访问资源文件,请使用资源管理接口访问资源。 可以用于存储应用的代码资源数据,主要包括应用安装的HAP资源包、可重复使用的库文件以及插件资源等。此路径下存储的代码资源数据可以被用于动态加载。
baseNA本设备文件路径应用在本设备上存放持久化数据的目录,子目录包含files/、cache/、temp/和haps/;随应用卸载而清理。
databasedatabaseDir数据库路径应用在el2加密条件下存放通过分布式数据库服务操作的文件目录;随应用卸载而清理。 仅用于保存应用的私有数据库数据,主要包括数据库文件等。此路径下仅适用于存储分布式数据库相关文件数据。
distributedfilesdistributedFilesDir分布式文件路径应用在el2加密条件下存放分布式文件的目录,应用将文件放入该目录可分布式跨设备直接访问;随应用卸载而清理。 可以用于保存应用分布式场景下的数据,主要包括应用多设备共享文件、应用多设备备份文件、应用多设备群组协助文件。此路径下存储这些数据,使得应用更加适合多设备使用场景。
filesfilesDir应用通用文件路径应用在本设备内部存储上通用的存放默认长期保存的文件路径;随应用卸载而清理。 可以用于保存应用的任何私有数据,主要包括用户持久性文件、图片、媒体文件以及日志文件等。此路径下存储这些数据,使得数据保持私有、安全且持久有效。
cachecacheDir应用缓存文件路径应用在本设备内部存储上用于缓存下载的文件或可重新生成的缓存文件的路径,应用cache目录大小超过配额或者系统空间达到一定条件,自动触发清理该目录下文件;用户通过系统空间管理类应用也可能触发清理该目录。应用需判断文件是否仍存在,决策是否需重新缓存该文件。 可以用于保存应用的缓存数据,主要包括离线数据、图片缓存、数据库备份以及临时文件等。此路径下存储的数据可能会被系统自动清理,因此不要存储重要数据
preferencespreferencesDir应用首选项文件路径应用在本设备内部存储上通过数据库API存储配置类或首选项的目录;随应用卸载而清理。详见通过用户首选项实现数据持久化。 可以用于保存应用的首选项数据,主要包括应用首选项文件以及配置文件等。此路径下仅适用于存储小量数据。
temptempDir应用临时文件路径应用在本设备内部存储上仅在应用运行期间产生和需要的文件,应用退出后即清理。 可以用于保存应用的临时生成的数据,主要包括数据库缓存、图片缓存、临时日志文件、以及下载的应用安装包文件等。此路径下存储使用后即可删除的数据。
### HarmonyOS 沙箱机制下发送图片的方法 在HarmonyOS中,应用程序运行于受保护的沙箱环境内,这使得默认情况下应用无法直接与其他应用交互或访问外部资源[^1]。然而,当涉及到如发送图片这样的跨应用操作时,可以通过特定接口实现安全的数据传输。 #### 使用Data Ability进行图片分享 对于发送图片的需求,推荐利用HarmonyOS提供的`Data Ability`特性。这是一种用于提供统一数据访问接口的能力,允许不同应用之间按照既定协议交换信息而不违反沙箱原则。具体来说: - **准备阶段** 应用A(源应用)需先准备好要发送的图片,并将其存储路径记录下来;同时定义好意图(Intent),指定目标应用B以及携带必要的参数说明即将传递的是什么类型的文件。 - **发起请求** 构建Intent对象并设置Action为`ohos.want.action.SEND`,Type设为图像MIME类型(`image/*`),并通过putParam方法附加Uri指向本地图片位置。最后调用startAbility()启动目的应用完成分享过程。 ```java // 创建Intent实例 Operation operation = new Intent.OperationBuilder() .withDeviceId("") .withBundleName("com.example.targetapp") // 目标应用包名 .withAbilityName("MainAbility") // 目标组件名称 .build(); Intent intent = new Intent(); intent.setOperation(operation); intent.setAction("ohos.want.action.SEND"); intent.setType("image/jpeg"); // 或其他支持的图片格式 intent.putParam("data", Uri.parse("file:///path/to/image.jpg")); context.startAbility(intent); // 启动目标应用执行分享动作 ``` - **接收处理** 在应用B(目标应用)接收到该Intent后,则可以从其中提取出所附带的信息,依据实际情况解析URI获取实际文件流进而展示给用户查看或者保存至本地图库等后续逻辑处理。 这种做法不仅遵循了HarmonyOS的安全策略,同时也简化了开发者的工作流程,提高了用户体验的一致性和安全性[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值