跳转到内容

应用沙箱目录

蓝河应用框架给每个应用分配了一个专属的应用目录,蓝河应用的数据访问和操作都被限制在该目录内,此目录下存放的数据可以保护数据的安全性,这个目录称为 “应用的沙箱目录”。

应用沙箱目录定义详细说明

沙箱目录名定义说明
files应用在本设备上用于存放小而重要的数据目录(如用户登录数据),安全且持久有效,随应用卸载而删除。
cache应用在本设备上用于存放缓存文件的目录(如图片、音频缓存),此目录可能会因系统空间不足而被清理,用户也可通过系统管理类应用清理该目录,此目录随应用卸载而删除,适合保存不重要的缓存数据。
mass应用在本设备上用于存放大文件的目录(如下载的音频文件),此目录随应用卸载而删除。
tmp应用在本设备上用于存放临时文件的目录(如临时日志),应用退出后就会清理该目录,此目录随应用卸载而删除,适合存放使用后即可删除的文件数据。
preferences应用在本设备上用于存放 key-val 数据的目录,有大小限制,此目录下的数据通过 storage 的 API 写入,适合保存首选项和配置文件,随应用卸载而删除。

沙箱目录是通过 URI 形式访问,每个沙箱目录都有对应的 URI 标准标识。可以使用 URI 的地方都可以访问到沙箱目录,下面表格展示了不同沙箱目录的对应的 URI 格式。

沙箱目录名URI 定义
filesinternal://files/
cacheinternal://cache/
massinternal://mass/
tmpinternal://tmp/

如需要往 files 沙箱存放一个 json 文件,则可如下操作:

file.writeText({
uri: 'internal://files/demo.json',
text: '{"name": "张三"}',
success: function () {
console.log('handling success')
},
fail: function (data, code) {
console.log(`handling fail, code = ${code}`)
},
})

沙箱目录的不同划分是为了对数据进行分类管理,将数据放在合理的目录下会让应用获得更大的收益。

对于不同沙箱目录的使用场景如下:

  • files:此目录用于存放小而重要的数据,目录长期有效,可以保存的文本文件,如 json。
  • mass:此目录用于存放大而不太重要的数据,目录长期有效,可以保存需要需要持久化的图片、音频、视频等文件。
  • cache:此目录用于存放缓存文件,适合保存不重要的缓存数据,如缓存的音频、视频等。
  • tmp:此目录用于存放临时文件,应用退出后可能被清理,适合存放日志等临时文件。
  • preferences:此目录只能通过 storage 能力访问,适合存放应用运行中的 key-val 数据。

要在 js 中使用沙箱目录,只要遵循蓝河应用框架开发即可。

  • 存放/获取 文件时,使用 blueos.storage.file 能力,并且使用 URI 拼接,避免使用绝对路径写法。
  • 存放/获取 key-val 时,使用 blueos.storage.storage 能力。
  • 存放在沙箱目录内的图片,如果要用 image 标签访问,也需要使用 URI 访问。
  • 同上,音频和视频文件如果要播放同样是需要 URI 访问。