Android 不分区使用link2sd(app2ext APP2SD)

本文介绍了如何在未分区的SD卡上使用link2sd,通过创建EXT分区并挂载到/data/sdext,解决Android程序安装到SD卡的问题。在遇到相机应用提示未插入SD卡的错误后,通过改进脚本并在系统启动时挂载EXT分区,实现了在不重启整个系统的情况下,使程序和SD卡正常工作,但桌面小部件可能出现显示异常。最终,通过深入研究Vold源码和Android挂载流程,找到了完美的解决方案。
摘要由CSDN通过智能技术生成

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),所以要nohup
nohup /data/sdsh/sd.sh > /data/sdsh/sd.log
 

/data/sdsh/sd.sh

 

 

#!/system/bin/sh
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值