Android 不分区使用link2sd(app2ext APP2SD)
来源:互联网 发布:fedora和ubuntu 编辑:程序博客网 时间:2024/05/17 07:04
KEYWORDS: SD卡上创建创建ext2、ext3、ext4文件 挂载SD卡上的EXT分区文件
最近换了张SD卡,由于某些原因不能分区,老卡用了link2sd,很多程序装在了ext分区里,为了在新卡中继续使用link2sd,于是有了这篇文章。
一开始想的很简单,在SD卡中建立一个sdext文件用loop挂载到/data/sdext就行了,后来发现这种做法因为绕过了Android的vold导致Framework上层无法识别SD卡,最直接的影响就是相机提示未插入SD卡。于是对脚本改进等待vold挂载sd后再挂载loop,发现此时已经太晚,已经错过了Framework识别apk的过程,虽然sdext挂载上了,程序依然无法运行,一个临时的解决办法是使用link2sd的快速重启功能(即只重启UI),这样程序和SD卡都可以正常使用了,美中不足的是安到ext分区程序的桌面widget就显示不正常了。几经周折,查阅android源码,终于弄明白了SD卡的挂载流程,于是有了以下的完美解决方案:
/etc/init.d 中建立启动脚本20sdext
#!/system/bin/sh#init.d中的脚本是在vold启动之前执行的(参见init.rc、/system/bin/sysinit),所以要nohupnohup /data/sdsh/sd.sh > /data/sdsh/sd.log
/data/sdsh/sd.sh
#!/system/bin/shwhile [ true ] ;do #挂载参数是严格从源码里抄的,有出入的话可能产生权限问题,上层依旧无法读写SD卡,挂载点自己新建了个文件夹,不影响vold的挂载流程 mount -t vfat -o nodev,nosuid,dirsync,noexec,utf8,uid=1000,gid=1015,fmask=0602,dmask=0602,shortname=mixed /dev/block/mmcblk0p1 /data/sdsh/sdcard mount -t ext3 /data/sdsh/sdcard/sdext /data/sdext2 if [ $? -eq 0 ];then break fisleep 1donemount echo "$(date) mount finished"
至此,挂载SD卡上的EXT分区文件完美解决!
这就是为什么我喜欢开源,有问题你总是可以找到解决的办法。只有想不到,没有做不到。
Ps:参考文章:
在线Vold源码:source-android.frandroid.com/system/vold/
Android挂载SD卡的流程:http://blog.csdn.net/gzshun/article/category/958018
- Android 不分区使用link2sd(app2ext APP2SD)
- link2sd或者app2sd前的分区——SD卡分区教程 link2sd教程 app2sd教程
- APP2SD图文储存卡分区教程
- Android打开App2SD
- app2sd使用教程
- Android下APP2SD后如何删除EXT分区,使整个SD卡恢复FAT格式
- Link2SD无法挂载SD卡第二分区解决方案
- Windows不重装系统,使用分区助手分区
- Linux不使用交换分区
- 下一代Android或官方支持“App2sd”
- 轻松开启android 2.2 官方的app2sd
- Android 2.2手动开启APP2SD方法
- android app2sd+无法安装应用的解决办法。
- Android 将程序设置为app2sd
- 将软件安装到SD卡丨丨完整详细Link2SD教程(包括SD分区教程)
- Link2SD原理
- android系统支持app2sd(修改boot.img)
- Android 2.2开始支持安装APP2SD卡上
- 工作经验
- 流缓冲类fstream()
- 在项目中用java处理json格式的数据
- linux下的常用I/O模型
- struts2为action设置静态参数
- Android 不分区使用link2sd(app2ext APP2SD)
- 【素材分享】分享35套很不错的抽象纹理背景素材 !
- 搜索比赛A 走迷宫
- Enable3dControls警告
- PPPoE与802.1X在校园网中的应用分析
- C++下的XML分析工具CMarkup的常用函数详解
- Java中int、String相互转换
- vs2010常用快捷键
- 电子工业出版社30周年活动