问题

在amlogic中,实现将apk安装在sd卡中,出现了当安装完成后,拔出被安装的u盘后出现已拔出的u盘路径未释放问题。

解决过程

人工手动拔出

通过adb命令测试如下:

$adb shell
#umount /storage/external_storage/sda1

命令成功,成功撤销u盘,但挂载点任存在

查看u盘拔插前后的设备mount情况:

#mount


注:与u盘挂载有关的设备挂载信息

tmpfs /mnt/asec tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
/dev/block/vold/8:1 /storage/external_storage/sda1 fuseblk rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096 0 0
/dev/block/vold/8:1 /mnt/secure/asec fuseblk rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096 0 0

首先,看先未将apk安装到sd卡中的挂载设备信息:
插入u盘的mount信息:

拔出u盘后的mount信息:

这两种状态相比较的差别:

/dev/block/vold/8:1 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1015,gid=1015,fmask=0002,dmask=0002,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0

当拔出u盘后这两个dev消失,
tmpfs /mnt/asec tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0 这个dev一直均存在

将apk安装到U盘后查看其mount信息:
U盘未拔出的mount信息

U盘拔出后的mount信息

经查看发现,/mnt/secure/asec 和/storage/external_storage/sda1 两个设备任然存在,然后我通过remount对dev进行卸载命令,结果如下:

由此可见,umount /mnt/secure/asec成功,umount /storage/external_storage/sda1失败,报错:Device or resource busy

猜想

可能是安装在u盘上的apk正在运行,会对u盘的apk数据进行访问占有访问资源。
测试:
– 关闭当前安装在u盘上的apk,然后再进入mount查看设备信息,结果发现,/storage/external_storage/sda1任存在,猜想不成立。

这样,我们通过lsof 查看u盘路径所占有的进程情况:

#lsof |grep /storage/external_storage/sda1


由上可知,当前文件系统还存在未结束的进程。
结束当前进程:

#kill -9 1946


然后umount

#umount /storage/external_storage/sda1


卸载成功。
然而,/storage/external_storage/sda1文件夹任然存在。

尝试在u盘拔出前对/storage/external_storage/sda1进行umount操作

首先需要对/mnt/secure/asec进行移除操作,发现无法移除,然后拔出u盘后移除asec,发现成功移除

移除sd卡后对其操作如下可实现移除操作.
  • 将apk安装到u盘;
  • 将u盘拔出,这时会发现fileBrowers中会存在一个对已拔出U盘 的持有,且打开后无文件
  • 通过adb或者串口连接device,并进入Android的文件系统(我这使用的是adb方式)
$adb shell
$mount 或者是#df   #查看当前已挂载设备

发现我们的u盘还在挂载。
“`shell
#umount /mnt/secure/asec
#umount /storage/external_storage/sda1
#rm -rf /storage/external_storage/sda1
#df
““

然后重新打开Filebowers即可发现已成功移除u盘,且在此插入u盘时加载地址为起始加载地址/storage/external_storage/sda1.操作成功,下一遍我将会介绍如何在android代码实现整个过程,并给出实例代码。。

anyShare分享到:
打赏一下,鼓励Ta创作更多好内容
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

avatar
  订阅  
提醒
普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress