APP2SD+开启原理及用Re管理器开启app2sd+方法

App2sd 的意思是:APK安装到内存卡,“APP”代表程序,“2 ”的意思是To(到),“sd ”即Fat32格式的内存卡。

2.2系统后开始原生支持APP2SD,所以2.2后 为了与官方原生APP2SD区别开来叫APP2SD+或app2ext

2.2系统后的手机原生 app2sd 使用方法:设置 ->应用程序 -> 管理应用程序 ->点击需要 移动到SD卡的程序 ->移至 SD卡

 

是否遇到过:存储空间不足(手机内存空间所剩不多了)!这是因为 /data 分区的空间快满了

首先要了解APK安装的占用空间的原理

例如 UC浏览器.apk,安装过程:

将UC浏览器.apk 重命名为UC浏览器.zip后用解压缩软件打开即可看到里面有 class.dex 文件 和文件夹Lib

1、首先会将 UC浏览器.apk 重命名为 com.ucmobile.apk 后复制到 /data/app 目录下,

2、将com.ucmobile.apk 包里的 class.dex 文件解压到 /data/Dalvik-Cache 目录下,

3、在/data/data 目录下创建 com.ucmobile 目录,将com.ucmobile.apk 包里的 Lib(有的APK无此文件)下对应的 .so 文件复制到 /data/data/com.ucmobile/lib 目录下,UC浏览器使用产生的缓存、书签、设置等数据都存放在/data/data/com.ucmobile 下

所以一个APK的安装= 原APK+class.dex+.so文件,而系统自带的app2sd仅能将 原APK移动到内存卡,所以/data空间还是慢慢会满的。

APP2SD+ 相对APP2SD的优点是:

1 手机作为U盘时 程序仍能使用

2 系统自带的app2sd 只将 /data/app 移动到内存卡,手机内存空间仍然会满,而APP2SD+ 和Link2sd 只要EXT分区足够大装多少软件都没问题。因为 系统自带的app2sd只能将 /data/app 下的apk移动到内存卡,而APP2SD+ 和 Link2sd则可以将/data/app  /data/Dalvik-Cache 下的.dex文件等/data 下所有文件或文件夹都可以移动到 内存卡的EXT分区。

3 小插件(小部件)安装到EXT分区也能正常使用

 

APP2SD+(又名:App2Ext)、Link2sd与Data2SD(又名:Data2Ext)的原理都是:

Link(链接),Link就像Windows 的快捷方式一样,Link文件大小占用的空间可忽略不计。原理就是 将原文件或文件夹移到到其它任意位置如 EXT分区 或 /system 或/cache,当然内存卡第一分区Fat32格式的分区不行 ,创建Link放回原目录来替代原文件或目录。可用 RE文件管理器 操作

创建Link教程参考:用Re管理器将dalvik-cache移动到cache图文教程

 

APK ODEX化的节省手机内存原理: apk odex化后可以用 winrar等压缩软件打开APK后删除里面的 class.dex节省内存,无需解压包里的class.dex到/data/Dalvik-Cache 减少了一个 class.dex,class.dex大约能节省三分之一左右的空间。 制作ODEX内置软件

慎用:APK包里的 Lib(有的APK无此文件)下对应的 .so 文件复制到 /system/lib 目录下 后删除APK包里的Lib 文件夹。也能节省不少空间

 

APP2SD+ 与Link2sd:APP2SD+ 是一刀切将/data/app 和/data/Dalvik-Cache 整个文件夹都移动到EXT分区后用Link替代,所以所有apk都安装到ext分区里了,而Link2sd是一个Link管理软件,安装是能自由的选择apk安装到手机内存还是ext分区,可以将apk移动到ext分区或移动回来手机内存。APP2SD+ 与Link2sd原理都一样,但Link2sd 能管理link更好,而且Link2sd最大的好处是能自动创建ext分区挂载脚本,当然有些机型可能创建不了挂载脚本就只能用下面的APP2SD+了.

Link2sd很简单:

Link2sd使用前提:手机必需已ROOT!

1 内存卡分区:内存卡分区图文教程

2 下载 Link2SD_2.4.10.apk 后安装,任何一个软件市场可以下载Link2sd

详细参考:Link2SD 开启使用图文教程

 
下面内容全部是进行手动 app2sd+ 的步骤:

进行APP2SD+ 条件:已获取root权限

第一 内存卡分区

第二 尝试手动挂载ext分区后实现创建开机自动挂载ext分区的脚本。

也可以用Link2sd创建挂载脚本(比较方便简单),挂载位置在 /data/sdext,详细参考:Link2SD 开启使用图文教程,link2sd创建挂载脚本不成功则可尝试下面的方法。

第三 将/data/app 等移动到ext分区后创建链接替

App2sd+ 第一步骤,内存卡分区:

分区的顺序 第一分区:fat32  第二分区:ext2或ext3,分区教程:用PartitionManager9.0 给内存卡分区

分区注意事项:第二分区必须是主分区!如果第二分区是逻辑会导致分区后 2.2之后系统不能自动识别挂载 /sdcard ,用Acronis Disk Director Suite 10 分区会出现此种情况(可能是不熟悉软件使用导致)。

2.1做app2sd升级2.2 sdcard(内存卡)无法挂载问题:分区分的是逻辑分区不是主分区会出现此问题(即ext分区是mmcblk0p5或6的升级2.2或2.3后无法挂载/sdard) 。解决方法:重新用PartitionManager9.0 重新分区为主分区—ext分区为mmcblk02。

App2sd+ 第二步骤,尝试手动挂载ext分区后实现创建开机自动挂载ext分区的脚本 :

下载 超级终端(terminal emulator)手机端操作或AdbShell(电脑端操作)都可

如需在电脑操作:Adb Shell使用教程 ,建议用超级终端。

Re 管理器 有些版本没创建链接功能 下载这个版本中文版即可:RE管理器

 下载Busybox安装器 ,安装1.17.1版本或更高版本到 /system/xbin下。

先将RE管理器制作为内置软件在/system/app下 ,安装好后从/data/app下将Re管理器剪切移

到/system/app 后重启即可,或制作为 .apk和.odex也行:制作ODEX内置软件

 

运行手机安装好的超级终端

输入命令:

su

弹出提示是否给予root权限:允许

输入命令

busybox df -h

接着输入:

ls -l /dev/block

 

busybox df -h 命令,图片说明:红色长方框里 该条内容( /dev/block/vold/179:2 )是在分区后Link2sd或APP2ext 脚本挂载成功后才会出现的,以此可确认Link2sd或App2ext是否挂载成功。

ls -l /dev/block 命令,图片说明:绿色长方框里 该条内容:179,  2     mmcblkop2 是内存卡分区后的第二分区

 

分区成功后输入命令:busybox df -h

记下:/dev/block/vold/179:数字  如上图的:/dev/block/vold/179:1

接着输入:ls -l /dev/block

找到:179,  1     那一行,则可发现对应:mmcblk0p1

179, 3(数字+2)代表第三主分区,如果分的话

179,   2(数字+1) 代表第二主分区,Ext 格式     对应:mmcblk0p2

179,   1(数字)     代表第一主分区,Fat32 格式  对应:mmcblk0p1

179,   0(数字-1)  代表整个 SD卡

当命令:ls -l /dev/block 出现:“179,   2(数字+1) 代表第二主分区,Ext 格式” 则代表内存卡成功分区,系统已识别。

手动挂载ext分区:

用RE管理器将 /system 挂载为可读可写,在/system 下建立一个sd 空目录(sd或sd-ext等任意名称都可)来挂载ext分区

进去超级终端,输入下面命令:

su

busybox mount -t ext2 /dev/block/mmcblk0p2 /system/sd

 

再输:

busybox df -h

显示有/dev/block/mmcblk0p2 即ext分区挂载成功。

 

手动挂载成功后,重启后就无效了,所以要放一个自动挂载脚本到手机,每次开机自动挂载。

用RE管理器在 /system/bin 下建一个文件,命名为:flash_image ,无需后缀名,按住它,弹出的选项里以文本编辑打开,里面输入如下内容:

#!/system/bin/sh

busybox run-parts /system/etc/init.d

 

保存后,九个权限全部打勾,

或下载脚本直接使用

下载:APP2SD脚本.zip ,解压到内存卡里,下面所有脚本都在里面,注意脚本里的是mmcblk0p2 用记事本打开脚本全部替换为你手机对应的!!!

解压得到脚本:flash_image 放到/system/bin 下, 九个权限全部打勾,flash_image 的作用是使init.d目录下的脚本能开机执行。

如果系统有/system/etc/init.d 目录,将MountEXT脚本放到init.d下面,九个权限全部打勾,重启后 命令:busybox df -h  如果发现挂载成功 即init.d目录脚本能开机自动执行:就无需上面的flash_image脚本 。

/system/etc 下没init.d目录就新建立一个,然后再在 /system/etc/init.d 下建一个文件,命名任意如:MountExt(开机自动挂载ext分区脚本) ,无需后缀名,按住它,弹出的选项里以文本编辑打开,里面输入如下内容:

#!/system/bin/sh

busybox mount -o remount,rw /system

if [ ! -d /system/sd ]

then

    mkdir /system/sd

    busybox chown system /system/sd

fi

    busybox mount -t ext2 /dev/block/mmcblk0p2 /system/sd

    if [ $? -eq 255 ]

    then   

        busybox mount -o remount,ro /system

        exit 1

    fi

保存后,九个权限全部打勾,mmcblk0p2 全部替换为你手机对应的。

或直接将解压得到的脚本:MountExt 放到/system/etc/init.d 下,权限全部打勾

 

重新开机后,用超级终端命令:

su

busybox df -h

 如果显示有mmcblk0p2即自动挂载成功,可以进行APP2SD+ 了。

 

App2sd+ 第三步骤,第三 将/data/app 等移动到ext分区后创建链接替代 :

 

手动移动/data/app、 /data/dalvik-cache 、/dat/data(不建议)到ext分区

移动/data/app/system/sd下,R.E. 管理器必须是内置在/system/app! ,不能用RE管理器移动/dat/data到ext分区,/data/app、/data/dalvik-cache可以!

有备无患:有Recovery 先备份。

ext分区用脚本开机自动挂载成功后进入/data 将/data下的 app剪切,如下图:

 

到/system/sd 下粘贴,如下图:

 

 

按住/system/sd下的app文件夹 ,弹出选项 选:创建链接,把链接剪切到/data 下粘贴,

 

 

 

将链接重命名为app就搞定啦 ,如下图:

 

 

有箭头的就是Link(链接)文件,如下图:

上图RE管理器操作等同下面超级终端 命令:

su

cp -a /data/app /system/sd/  (将/data/app目录复制到/system/sd/下)  

rm -r /data/app              (删除/data/app目录) 

ln -s /system/sd/app /data/app  (建立软链接)  

reboot                        (重启手机后就ok)

/data/dalvik-cache与/data/data更改上面命令为对应即可。

/data/data手动移动必须用电脑端的adb工具!

 

APP2SD+ 原则:首先移动 /data/app 到EXT分区,内存不够之后再移动 /data/dalvik-cache ,进行前面两个还不够再移动 /dat/data,空间足够不要移动/dat/data 到EXT分区,亲测用Class4以上的内存卡 移动/dat/data 到EXT分区 不卡。

用脚本自动实现APP2SD+等:

一般来说文件从内存卡复制到手机后的权限是9个权限都有的,无需修改。没有权限把文件权限改满9个。

flash_image 实现开机后系统自动执行/system/etc/init.d下的脚本

MountEXT 实现自动开机自动挂载(mount)ext分区,该脚本是 mmcblk0p2 ,不同的自己更改,下面脚本亦是mmcblk0p2

自动实现挂载ext分区和移动/data/app等到ext分区,用MountEXT脚本测试能开机自动挂载ext分区后删除MountEXT脚本换用下面的脚本,四个只需用一个:

App2ext 实现移动/data/app 到ext分区

App_Dalvik-cache2ext  实现移动/data/app 与 /data/dalvik-cache 到ext分区

App_Dalvik-cache_Data2ext   实现移动/data/app 与 /data/dalvik-cache 与 /data/data 到ext分区

 

上面脚本取消app2sd等功能,需保证手机里有足够的空间,在/data 下建立一个目录(即文件夹),命名为:app2sdno

    重启手机,删除/system/etc/init.d下的脚本或不删除取消三个执行权限 (X),删除app2sdno文件夹 或下次再进行App2ext等必需删除。

 

2.1系统的需注意:实现App2ext等后注意:只能在关机后拔内存卡,不能在没有内存卡和换其它内存卡的情况下开机, 否则有些开机启动的软件会不能用,重新安装那些失效的软件即可。

 

相关文章:/data/dalvik-cache移到cache制作了图文教程 与/data/app 等移动到ext分区一样的。

文章地址:http://www.tttabc.com/android/app2sd.htm

有话要说