我正在将新的 Android4.2 移植到我们自己的硬件上。我们使用vold将mmc的一个分区挂载到/mnt/sdcard并关闭多用户功能。在终端中,我们可以找到具有 0777 权限的 sdcard。但是当我们使用诸如“es文件管理器”之类的android应用程序浏览/mnt/sdcard时,它会提示“未安装sdcard”
然后,我尝试测试它,并编写一个小程序。当我尝试访问该文件时,它返回权限 0000 ,这是在我们挂载分区之前由 init.rc 定义的。
在 vol.fstab 中
dev_mount sdcard /mnt/sdcard 1 /devices/platform/ns115-sdmmc.0/mmc_host/mmc1
在 init.xxx.rc
export EXTERNAL_STORAGE /mnt/sdcard
mkdir /mnt/sdcard 0000 system system
symlink /mnt/sdcard /sdcard
在 vold 中,我们使用 fstype vfat 将 mmc 磁盘安装在 /mnt/sdcard 并授予权限 0777 和 uid=system gid=sdcard_rw
看看坐骑:
rootfs / rootfs rw 0 0
/dev/root / ext3 rw,relatime,errors=continue,barrier=0,data=writeback 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0000,dmask=0000,allow_ut0
/dev/block/vold/179:1 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0000,dmask=0000,al0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
我尝试这些测试:
- 使用应用程序访问 /mnt/sdcard 失败,权限被拒绝 0000
- 使用本机服务与 0777 做同样的测试成功
- 在终端中使用 0777 检查 /mnt/sdcard 是否成功
所以我想知道它是否与应用程序的标志有关?