返回首页>电脑技术

各个版本的Android系统的app2sd教程

关注+2012/3/28 13:17:46

 本帖介绍各个版本的Android系统的app2sd方法

app2sd,就是把程序装到内存卡里,app2sdext就是内存卡分割EXT区 有EXT2,EXT3,或者EXT4区,这样2.2系统以上手机上也能显示安装在内存卡EXT区的插件(小部件)。


第一部分,为什么要app2sd以及app2sd原理


1、安装的程序占用哪些空间

    我们用户安装的程序,占用三部分空间:主程序在/data/app,缓存文件在/data/dalvik-cache,辅助程序和存档文件在/data/data
    系统自带的程序,同样占用/data/data作为存档,例如通讯录和短信就存在这里

2、app2sd的必要性

    小5的/data分区只有138M,非常不耐用。系统装好差不多用掉40M,而装个大点的程序例如愤怒的小鸟,就用掉20M+,而系统还要留20M保证运行正常。这样算来,我们就没有多少程序可以装了。当然,这也不只是小5的问题,就连HTC的G7也只有147M的/data分区,同样很不耐用

3、app2sd的原理

    所谓的民间a2sd的主要原理,是利用linux系统的路径映射,在SD卡上建立Ext分区后,将Ext映射到Data分区下。系统以为自己访问的是/data,而实际上是sd卡。路径映射,或者叫虚拟路径功能,在Linux系统和网站、FTP等领域内是广泛使用的,并不存在稳定性和兼容性问题



第二部分,1.6-2.1的a2sd详解

   2.1之前的Android系统,使用的是1.x版本的vold。vold是专门管理USB存储设备,也就是SD卡的系统进程,其主程序在/system/bin/vold。这个大家可以去百度文库搜,有资料的。
这个系统,在开机的时候会自动读取/system/etc/vold.sh,进行初始化。于是,想怎么骗系统,就看你怎么改动这个文件了。

1.6-2.1的a2sd教程,在本版和GW620版上都有,我就不重复了。其主要步骤为:

1.替换/system/bin/vold (原版的vold不支持多分区sd),替换busybox(原版的Busybox不够强大,批量复制不好用
2.将SD卡EXT分区映射到/System/sdcard,或者其他路径名称,将/data/app和/data/dalvik-cache复制到这里
3.更改vold.sh,将sd卡上的内容,映射到/data/app和/data/dalvik-cache。

这个步骤有个问题,就是,/data/app和/data/dalvik-cache的内容是复制过去的,而第3步的时候,SD卡路径将data下的原本路径覆盖掉了。也就是说,在进行a2sd之前所安装的程序占用的/data空间,没有过被释放。这也是为什么教程上要求大家刷完机接着搞a2sd。这个问题的解决方案为

0.先按照教程完成a2sd并成功。(这是前提条件)
1.在/system/路径下建立/datax路径(其实名字随便取)
2.在/system/etc/vold.sh中,mount -o bind /system/sdcard/app /data/app这一行前面,插入如下一行6
    mount -t yaffs2 /dev/block/mtdblock6 /system/datax1
3.重启手机后,利用RE管理器进入/system/datax中,你就会发现,这里有个app目录和dalvik-cache目录,保留着你a2sd之前最后的样子。好,删光。问题解决。回去看看,/data是不是又大了一些呢

下一个问题是,/data/data并没有被移动到sd卡上。这个目录也挺大,例如愤怒的小鸟,玩过几次后,就在这里占用3M+的空间。
如果你对自己的内存卡速度很有信心,是高速卡,或者对系统流畅度要求不是非常高,那么你可以按照如下步骤操作

1.将/data/data复制到/system/sdcard/下面
2.删光/data/data目录下的东西,保留一个空壳文件夹
3.在/system/etc/vold.sh最后加上这样一行:mount -o bind /system/sdcard/data /data/data
4.重启(一般要重启两次或三次),搞定

这样做,会使得接电话或者收短信的时候有点卡,因为通讯录和短息从SD卡上读,不如从手机内存读取快。不过这样你只要SD卡够大,装几百上千个程序没问题,我是KST C4的卡,觉得嘛,有点卡。
如果你对系统流畅度要求很高,那就只把/data/data下比较大的文件夹移动到SD卡上就好啦,例如移动愤怒的小鸟,需要做的是:
1.将/data/data/com.rovio.angrybirds 复制到/system/sdcard/data下面(如果没有这个目录,就建立它
2.将/data/data/com.rovio.angrybirds 的内容删除,只剩下空壳一个&
3.在vold.sh中加入这样一行:mount -o bind /system/sdcard/data/com.rovio.angrybirds /data/data/com.rovio.angrybirds) T
4.重启两次,搞定

上面的步骤,你不用一个一个程序移动,把/data/data下比较大的文件夹都挑出来,一次多移动、删除几个,在vold.sh上一次增加多行即可
问题:vold.sh行数多了会慢么?回答:只有开机会慢,每行占用开机时间不足0.1秒。
注意,这里如果你对自己的存储卡没信心,com.android开头,和com.google开头的东西(这些东西很多,但总大小不大),就就不要移动了,移动了系统会卡。



第三部分,2.2以上系统的a2sd+问题

2.2以上的系统,官方提供了app2sd,就是民间叫做的app2fat。这个东西,不实用。为什么呢

1.只移动了/data/app下的文件,另外的/data/dalvik-cache和/data/data没有移动。
2.移动到SD卡的程序,不能有桌面小工具。很多程序不支持此移动
3.一旦连接大容量存储,移动到SD卡上的程序就不能用了

以上三点导致官方App2sd,效果差,很鸡肋民间的App2sd呢?这时候被叫做a2sd+,或者app2ext,以区分于官方

这个原理与之前版本相同,但是做法不一样了。为什么呢?这是由于2.2之后的系统使用了vold2.0,和之前的vold结构不一样
那,怎么办呢?必须用recovery安装a2sd包,才行。相信已经装了2.2以上系统的机油对Recovery一定不陌生



放入SD卡根目录。进入recovery,选择 install ZIP from sdcard -- choose zip from sdcard -- 刚刚下载的文件
如果你的SD卡是已经分区好的(分区方法见1.6-2.1App2sd教程,或者用PQmagic9等软件分区,电脑懂的多的都会的。)那么重启后/data/app就被移动到SD卡的Ext分区了
然后进入超级终端,或者终端模拟器等终端软件,输入su,获得Root权限,然后输入 a2sd cachesd 回车,然后重启。这样,/data/dalvik-cache也被移动到SD卡的Ext分区了
如果你安装a2sd的时候没有给SD卡分区,是后来分区的,那么你就要在终端模拟器上输入su,然后 a2sd reinstall 不过运行完了可能终端模拟器会跳出,重启就好。重启后再输入a2sd cachesd 再重启。不过我不推荐这种,可能会失败,最好先分区

最后,说一下2.2以后的系统将/data/data移动到SD卡的方法
首先确认你的SD卡EXT分区在哪里,在RE管理器里,看看/sd-ext/或者/system/sd是否存在,进入后是不是Ext分区的东西(应该只有三四个目录,data app-private 和 dalvik-cache等
然后运行如下代码,在超级终端里。以你的sd卡EXT分区挂载到了/sd-ext为例
su(获得root)
cp -a /data/data /sd-ext
rm -r /data/data
ln -s /sd-ext/data /data/data
reboot
这样就好啦。这是上面讲的“对自己的卡速度有信心或对流畅度要求不高的”可以用的方法
如果要只移动某几个程序,那么还是以愤怒的小鸟为例
su(获得root)
cp -a /data/data/com.rovio.angrybirds /sd-ext/data
rm -r /data/data/com.rovio.angrybirds
ln -s /sd-ext/data/com.rovio.angrybirds /data/data/com.rovio.angrybirds
reboot
移动多个程序目录,只要把中间三行变成三n行就可以了,最初su,最后reboot

第四部分,不识别卡的解决办法

有些童鞋把卡分区了,结果手机不认了。怎么办呢

第一种,每次把卡放上去,都显示 已移除。这个嘛,重启或者
设置
存储 安装SD卡就好了

第二种,把卡放上去,显示空白卡,没有文件系统或者文件系统不支持。如果是分区后的卡变成这样了,只有一个原因,就是你的vold是原版的!原版不支持多分区卡(2.3版的SwiftDroid v1.4b就是这个问题
怎么办?把支持多分区的vold放到/system/bin就可以了。1.6-2.1的支持多分区vold就是app2sd教程附件中的vold文件
2.2以后的支持多分区

    相关下载
    合集推荐
    • 最新排行
    • 最热排行
    • 评分最高
    排行榜

      点击查看更多

        点击查看更多

          点击查看更多

          我要吐槽
          返回顶部