【发布时间】:2012-06-12 20:45:09
【问题描述】:
我正在为商业市场开发一个在 Play 上不可用的应用程序,并且我有一个定制的特定目标设备,但不是由我自己构建的。某些 3rd 方 SDK 资源需要安装在 SDCard 目录中。仅此一项就很简单了。
我面临的问题是 sdcard 目录已以只读方式挂载。请注意,实际上并不是 sdcard,它是内部驱动器上的一个分区。它实际上是 mount rw,有些地方发生了变化,现在我被只读 sdcard 目录困住了。
到目前为止我所尝试的:
-
尝试重新挂载 sdcard 挂载点。没有奏效。即使我以 root 身份登录。未提供任何错误。
mount -o remount,rw /dev/block/mmcblk1p4 /mnt/sdcard
-
已检查 /proc/mounts。我可以在 /proc/mounts 中看到 sdcard 已安装 ro。我不知道Android中是否有等效的fstab,所以我更改了选项。有人告诉我,vold.fstab 是我应该去的地方,但是......
/dev/block/mmcblk1p4 /mnt/sdcard vfat ro,relatime,uid=1000,gid=1015,fmask=0202,dmask=0202,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=混合,utf8,errors=remount-ro 0 0
-
检查了vold.fstab。这与 /proc/mount 中显示的设备不同。
dev_mount sdcard /mnt/sdcard 4 /devices/platform/mmci-omap-hs.1/mmc_host/mmc1 dev_mount usbdisk /mnt/sdcard/usbdisk auto /devices/platform/ehci-omap.0 dev_mount extsd /mnt/sdcard/extsd auto /devices/platform/mmci-omap-hs.0/mmc_host/mmc0
从引导检查 logcat 输出。没有任何迹象表明安装有错误,但是我什至不确定 mount/vold 是否会向 logcat 报告。然而,有一些错误表明启动应用程序无法写入 sdcard。
此时我非常困惑。有谁知道解决这个问题的可靠方法吗?
编辑:
这次我尝试了不同的挂载选项
mount -w -o remount /dev/block/mmcblk1p4 /mnt/sdcard
这工作了一段时间,我可以进行一些文件操作,但它最终会在几分钟内恢复到 RO。
【问题讨论】:
-
如果文件系统突然变为只读,这通常是对检测到的损坏的保护性响应。您可能应该备份内容并重新创建文件系统。 “自定义设备”也可能存在硬件不可靠性。
-
宾果游戏克里斯。实际上我昨天这样做是为了解决问题,然后今天看到你的评论,你是对的。至少对于此设备,默认行为是将文件系统重新挂载为只读。幸运的是 sdcard 目录上没有任何有价值的东西,所以我只是重新创建了 fs 就可以了。
标签: android