2.5.1 需求

需求1. 建立统一的目录结构:

将android和linux的目录按照volumes融合后进行显示。大致目录结构如下所示:

目录结构

volumes/ └── 8860b8fe-c24e-4df1-bf41-1b54ab2ce18e     ├── backup     ├── bin -> usr/bin     ├── boot     ├── cdrom     ├── dev     ├── etc     ├── home     ├── lib -> usr/lib     ├── lost+found     ├── media     ├── mnt     ├── opt     ├── proc     ├── root     ├── run     ├── sbin -> usr/sbin     ├── snap     ├── srv     ├── sys     ├── tmp     ├── usr     ├── var     └── volumes

其中8860b8fe-c24e-4df1-bf41-1b54ab2ce18e是挂载在根目录下的设备(或分区)的uuid。通过该结构,可以浏览到该设备下的所有文件。目前简单的做法是将根通过--bind的方式直接绑定到/volumes。

  • 要注意的问题:

volumes下又存在volumes,这样实际上形成了目录循环。如果有文件搜索程序搜索该目录,会导致死循环。

  • 解决方法:

要解决该问题的话,只能将目录独立的挨个挂载。屏蔽不需要的目录,如volumes。

需求2: linux角度看android app产生的文件,属主都是linux用户的uid

将android/data目录在linux这边用fuse重新挂载一次,将文件id都设置为linux用户的uid

需求3: 编写文件浏览器,拷贝linux文件到android目录(同时更改文件uid?)

android app不要求直接访问/volumes ,借助拷贝的形式来访问文件。此时文件的属组id要修改?

android角度

1)android下的目录结构

android下也创建/volumes,然后简单的将linux下的volumes映射到android容器的volumes。

2)android下的目录权限

android下每个应用都有一个用户id,如果希望所有应用能访问该用户home目录下的文件。目前的想法是,在android授权应用访问存储权限时,读取该用户的组id,将应用的id,追加到这个组id中。