当前位置:   article > 正文

鸿蒙——应用沙箱_沙箱路径

沙箱路径

沙箱文件:

        通常指的是应用文件,包括应用安装文件、应用资源文件、应用缓存文件等。这些文件被保存在应用的沙箱目录中,这个目录是应用在系统内部存储空间中的专属区域。沙箱目录的设计旨在提供一种安全的隔离机制,防止数据受到恶意访问或路径穿越攻击。

沙箱文件的类型和作用

  • 应用安装文件:应用安装后的App的HAP资源包所在目录,随应用卸载而清理。
  • 应用资源文件:可以用于存储应用的代码资源数据,主要包括应用安装的HAP资源包、可重复使用的库文件以及插件资源等。
  • 应用缓存文件:用于保存应用的缓存数据,主要包括离线数据、图片缓存、数据库备份以及临时文件等。

沙箱文件的存储路径

沙箱文件的存储路径与物理路径之间存在对应关系。例如,应用的通用文件路径(filesDir)可能对应的物理路径是 /data/storage/el2/base/haps/entry/files,而应用的缓存文件路径(cacheDir)可能对应的物理路径是 /data/storage/el2/base/haps/entry/cache

沙箱文件的操作

在鸿蒙系统中,可以通过编程接口对沙箱文件进行各种操作,包括创建和删除目录、检查文件是否存在、查看文件属性、打开和关闭文件、读写文件、文件拷贝以及列出文件列表等。这些操作通常涉及到同步和异步的API,开发者需要根据具体的应用需求和性能考虑选择合适的操作方式。

注意事项

在处理沙箱文件时,开发者需要注意以下几点:

  • 确保遵守系统的文件访问控制和权限设置,以免造成不必要的安全风险。
  • 对于重要数据,应该谨慎处理,避免将其存储在可能被系统自动清理的缓存目录中。
  • 在进行文件操作时,特别是在主进程中,应避免长时间占用系统资源,以免影响系统的稳定性和响应速度。

应用沙箱目录:

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

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

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

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

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

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

“应用沙箱目录”内分为两类:应用文件目录和系统文件目录。

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

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

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

    • el1,设备级加密区:设备开机后即可访问的数据区。
    • el2,用户级加密区:设备开机后,需要至少一次解锁对应用户的锁屏界面(密码、指纹、人脸等方式或无密码状态)后,才能够访问的加密数据区。
  4. 四级、五级目录: 通过ApplicationContext可以获取distributedfiles目录或base下的files、cache、preferences、temp等目录的应用文件路径,应用全局信息可以存放在这些目录下。

    通过UIAbilityContext、AbilityStageContext、ExtensionContext可以获取HAP级别应用文件路径。HAP信息可以存放在这些目录下,存放在此目录的文件会跟随HAP的卸载而删除,不会影响App级别目录下的文件。在开发态,一个应用包含一个或者多个HAP,详见Stage模型应用程序包结构

    目录名Context属性名称类型说明
    bundlebundleCodeDir安装文件路径应用安装后的App的HAP资源包所在目录;随应用卸载而清理。
    不能拼接路径访问资源文件,请使用资源管理接口访问资源。
    可以用于存储应用的代码资源数据,主要包括应用安装的HAP资源包、可重复使用的库文件以及插件资源等。此路径下存储的代码资源数据可以被用于动态加载。
    baseNA本设备文件路径应用在本设备上存放持久化数据的目录,子目录包含files/、cache/、temp/和haps/;随应用卸载而清理。
    databasedatabaseDir数据库路径应用在el2加密条件下存放通过分布式数据库服务操作的文件目录;随应用卸载而清理。
    仅用于保存应用的私有数据库数据,主要包括数据库文件等。此路径下仅适用于存储分布式数据库相关文件数据。
    distributedfilesdistributedFilesDir分布式文件路径应用在el2加密条件下存放分布式文件的目录,应用将文件放入该目录可分布式跨设备直接访问;随应用卸载而清理。
    可以用于保存应用分布式场景下的数据,主要包括应用多设备共享文件、应用多设备备份文件、应用多设备群组协助文件。此路径下存储这些数据,使得应用更加适合多设备使用场景。
    filesfilesDir应用通用文件路径应用在本设备内部存储上通用的存放默认长期保存的文件路径;随应用卸载而清理。
    可以用于保存应用的任何私有数据,主要包括用户持久性文件、图片、媒体文件以及日志文件等。此路径下存储这些数据,使得数据保持私有、安全且持久有效。
    cachecacheDir应用缓存文件路径应用在本设备内部存储上用于缓存下载的文件或可重新生成的缓存文件的路径,应用cache目录大小超过配额或者系统空间达到一定条件,自动触发清理该目录下文件;用户通过系统空间管理类应用也可能触发清理该目录。应用需判断文件是否仍存在,决策是否需重新缓存该文件。
    可以用于保存应用的缓存数据,主要包括离线数据、图片缓存、数据库备份以及临时文件等。此路径下存储的数据可能会被系统自动清理,因此不要存储重要数据。
    preferencespreferencesDir应用首选项文件路径应用在本设备内部存储上通过数据库API存储配置类或首选项的目录;应用在本设备内部存储上通过数据库API存储配置类或首选项的目录;随应用卸载而清理。详见通过用户首选项实现数据持久化
    可以用于保存应用的首选项数据,主要包括应用首选项文件以及配置文件等。此路径下仅适用于存储小量数据。
    temptempDir应用临时文件路径应用在本设备内部存储上仅在应用运行期间产生和需要的文件,应用退出后即清理。
    可以用于保存应用的临时生成的数据,主要包括数据库缓存、图片缓存、临时日志文件、以及下载的应用安装包文件等。此路径下存储使用后即可删除的数据。

应用沙箱路径和真实物理路径的对应关系

其中<USERID>当前固定为100。

应用沙箱路径物理路径说明
/data/storage/el1/bundle/data/app/el1/bundle/public/<PACKAGENAME>应用安装包目录
/data/storage/el1/base/data/app/el1/<USERID>/base/<PACKAGENAME>应用el1级别加密数据目录
/data/storage/el2/base/data/app/el2/<USERID>/base/<PACKAGENAME>应用el2级别加密数据目录
/data/storage/el1/database/data/app/el1/<USERID>/database/<PACKAGENAME>应用el1级别加密数据库目录
/data/storage/el2/database/data/app/el2/<USERID>/database/<PACKAGENAME>应用el2级别加密数据库目录
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/943395
推荐阅读
相关标签
  

闽ICP备14008679号