`
javaz
  • 浏览: 32538 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

安卓外置sdcard-翻译

阅读更多

看了很多sdcard的文章,为方便自己查看,特把自己看的有些英文翻译记录一下。翻到最后,翻不下去了。

有翻译不对的地方,请指出。

原文:https://source.android.com/devices/storage/#multiple-external-storage-devices

开篇文 Android supports devices with external storage, which is defined to be a case-insensitive filesystem with immutable POSIX permission classes and modes. External storage can be provided by physical media (such as an SD card), or by exposing a portion of internal storage through an emulation layer. Devices may contain multiple instances of external storage.

翻译:

安卓支持设备携带外置存储,这些外部存储被定义为区分大小写的文件系统,
并且这些文件系统有不可变的系统权限级别和模式。物理媒体(例如一个sd card)可以作为
外部存储,或者通过模拟平台暴露一个内部存储作为一个外部存储。设备能包含多种
外部存储实例。
访问外部由多种安卓权限保护。有android1.0 开始,写权限保护是WRITE_EXTERNAL_STORAGE权限,
从android4.1开始,读权限保护是READ_EXTERNAL_STORAGE权限。
从android4.4开始,外部存储设备文件的所有者,组和模式现在是基于目录结构合成的。这
能是应用他们在外置卡上管理自己特定的包的目录不再需要保持WRITE_EXTERNAL_STORAGE
权限。例如,应用的包名为com.example.foo可以自由的访问外置存储设备上的
Android/data/com.example.foo/ 目录,而不再需要权限。合并权限是通过在虚拟FUSE中
包装raw存储设备完成的。
因为外部存储提供最低限度的存储数据保护,所以系统编码不应该在外部存储上存储敏感数据。
特别说明,配置文件和日志文件应该只存储在内部存储能获得有效的保护。

多样的外部存储设备。
从android4.4以后,多样的外部存储设备通过Context.getExternalFilesDirs(),
Context.getExternalCacheDirs(), 和 Context.getObbDirs()提供给开发者。
外部存储设备通过使用这些apis必须是设备的半永久式的部分(例如一个在电池部位
的一个sd card 卡槽)。开发者期待数据存储在这些位置的数据是在很长一段时间内
是可获得的。基于这个原因,临时的存储设备(例如usb 大容量存储设备)不应该
是使用这些apis。
WRITE_EXTERNAL_STORAGE 权限必须只有授权写访问到设备的的主外部存储。应用不能被
允许写入第二个外部存储设备。除非在他们的由合并权限的允许的特定的包目录下。通过
这种方式闲着写能确保系统能够在应用卸载的时候彻底清除文件。

多用户外部存储
从android4.2开始,设备支持多用户,外部存储必须满足下面的约束
1.每个用户必须有他们自己独立的主外部存储,决定没有权限访问其他用户的主外部存储。
2./sdcard 路径必须制定到正确的特定用户的主外部存储,基于一个正在运行的用户进程。
3.一个优化,在Android/obb文件见下存储大的OBB文件可以被不同的用户分享。
4.二级外部存储不能被应用写操作,除非在是由合并权限允许的特定包的路径。

实现这种特征的默认平台利用linux核心命名空间来为每一个Zygote-forked process创建
独立的挂载表,然后使用绑定挂载,提供正确的特定用户的主外部存储到私人命名空间。
启动的时候,系统挂载一个单独的虚拟外部存储FUSE守护进程EMULATED_STORAGE_SOURCE
这是隐藏的应用。在Zygote-forked之后,他绑定挂载到适当的特定用户子目录从FUSE守护进程
下面到EMULATED_STORAGE_TARGET,因此能为应用正确获得外部存储路径。因为一个应用缺少
其他用户存储的可访问的挂载点,他们只能访问开启它的用户的存储。
为了传播挂载事件从默认的root命名空间到应用命名空间,实现也使用共享子树kernel特征。
他能确保像ASEC容器和OBB能够持续正确工作的特性。
在每次Zygote命名空间创建后,它通过共享挂载rootfs,然后作为slave卸载来达成。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics