Android下将程序安装到SD卡的各种方法详解Word文档下载推荐.docx
- 文档编号:22506542
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:9
- 大小:20.55KB
Android下将程序安装到SD卡的各种方法详解Word文档下载推荐.docx
《Android下将程序安装到SD卡的各种方法详解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Android下将程序安装到SD卡的各种方法详解Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
其中和用户关系最密切的是/system和/data两个分区。
如果没有ROOT权限,/system分区是不可写的。
所以你的全部用户程序和用户数据都安装在/data分区上。
这也就是我们在"
设置-应用程序-管理程序"
中能看到的ROM空间。
Android应用程序占用的空间包括哪些部分?
一个
Android程序如果想能正常运行,至少会在你的ROM中存放如下五种文件:
/data/app,存放程序的apk文件(仅用户程序)。
你安装的程序的apk文件都会在这里再放一份。
/data/dalvik-cache,顾名思义,是程序的dalvik-cache文件。
实际就是程序的Java执行文件,扩展名为dex。
因为apk中也包含它,所以这里只是一个cache。
/data/data/程序名/lib。
程序的lib文件(仅用户程序),扩展名为so。
cache。
顾名思义,缓存。
存放于/data/data/程序名/cache。
也可以强制存放于系统的/cache分区(有ROOT权限后)
用户数据。
在/data/data/程序名(无论用户程序还是系统程序的数据都在这)。
/data/data中的绝大部分文件都是用户数据。
这些东西,哪些最占地方?
首先是apk文件。
Dalvik-cache和lib都是从apk中解出的。
其次是用户数据。
但这随程序不同而有很大不同。
有的程序就只有极少量的数据,而像"
联系人"
、"
短信"
QQ"
之类的软件用户数据就可以多达数M。
lib文件一般体积很小(也有例外,比如说Opera)。
Dalvik-cache的体积也不大。
cache体积不大,而且系统会动态清理它们。
所以,我们知道,把程序移动到卡上的首要目的是移动哪些文件了。
首先是apk,其次是用户数据。
Linux下文件迁移的方法
Linux支持:
挂载一个分区到一个目录;
在目录和目录、文件和文件间建立符号链接;
把一个文件作为一个分区挂载。
这些就是将应用程序安装在SD卡上的基础。
SD卡一般知识
SD卡分级:
class2class4class6,以及不常见的class10。
该数字代表此卡读写速度中较小的那个值(以MB/s为单位,当然所有的卡都是读取比写入快)大于等于该数字。
市面SD卡闪存一般是两种:
SLC和MLC(还有TLC,比MLC更烂,现在不大常见)。
原理姑不论,对于希望把程序装在SD卡上的同学来说,你们需要知道:
SLC读写速度差距不大,都很快;
MLC的读取速度很快而写入速度极慢。
SLC的擦写寿命约十万次(一说百万次),而MLC只有一万次左右。
鉴定SLC和MLC卡的最简单方法就是拿一个足够好的读卡器(便宜的读卡器验不出SLC的超高速度),运行一下ATTODiskBenchmark,看一下读写速度差异。
如果差3倍以上,应该就是MLC。
SD卡品牌:
公认SanDisk拥有最佳的兼容性。
如果你有一张两三年前生产的SanDiskmicroSD卡,那么恭喜你。
那时的SanDisk极度厚道。
标称Class2的卡比别家Class4的卡更快。
而标称Class4的MobileUltra系列更是拥有写入速度超过25M的神速。
MobileUltra系列已经停产,成为永远的传奇。
今天SanDisk卡的速度并不比别家更快!
只是兼容性仍胜过别家。
对于今天的SD卡厂商,大致可以这么说,Class2和Class4的卡全部是MLC,没有例外。
写入速度等于标称值,读取速度10M-20M。
Class10的microSD卡,有可能使用的是SLC闪存。
如果用的是SLC,可以达到写入20M/s,读取30M/s的速度。
但是,总体来讲,SLC的卡因为昂贵,各厂都在减产。
在决定买一张Class10的卡(它们往往不便宜!
)之前,请一定搜一下最近入手这张卡的网友的评测。
不然有可能这型卡一年前还是SLC,现在却改用MLC了。
对于闪存产品,因为其擦写次数有限,FAT系列文件系统比较适合,寿命损害小。
而比较先进的NTFS和EXT文件系统都会严重损害闪存寿命(因为反复擦写同一区块)。
尤其是对于MLC。
常见的程序安装到SD卡上的方法、俗称、下载地址
App2SD:
本来是在
Android2.2推出程序安装在SD卡上的功能之前的一种网友自制方法的名称。
自从官方推出程序安装在SD卡的功能之后,这个名字就给了官方实现。
而原App2SD现在一般称作App2SD+。
App2SD+(a2sd):
全称DarktremorApps2SD。
下载地址:
http:
//forum.xda-
历史很久,功能亦在不断完善。
必须命令行操作,需要分区,需要ROOT权限,需要自己刷入/system中。
脚本的异常处理机制比较完善,可以自己安装。
只要有终端,你就总可以挽回后果。
Link2SD
在AndroidMarket上可以很容易下载到。
目前相当流行的一款软件。
功能日渐完善,界面亦很有亲和力。
需要分区,需要ROOT权限。
D2EXT(Data2EXT)
一度在各种修改版ROM中流行的方法。
不只有一种实现方法!
给出一个链接:
命令行操作,需要ROOT权限,需要自己刷入/system,脚本简单,风险大。
最好用已经包含此功能的ROM,不推荐自己安装。
Data2SD
也是一个比较流行的工具。
没用过,不太熟,给一个链接,不知道是不是原始出处。
恕不给出简单介绍了。
原理与利弊分析下面仍奉。
程序安装在SD卡上:
原理与利弊概述
有了这些准备知识,我们终于可以开始正题了。
迁移的目的及各方法的区分点:
由以上内容,我们知道,我们的终极目的,就是要把/data分区下的各种文件移到SD卡上,同时保证它们可以被正常使用,以达到减少/data分区占用的目的。
基本的想法就是,把文件移到SD卡上之后,再链接到原位置。
由于linux下有很多种方法来做这个事情,故而产生了各种不同方法。
文件->
文件,文件->
目录,目录->
目录,分区->
目录,各种方法。
此外,各种不同方法,对于以上提到的程序的五部分空间占用,有的可以迁移全部,有的只能迁移部分。
最后,对于系统更新与系统程序数据,也有一些软件不能迁移。
这三方面,就是各种实现方法的主要差别。
只读还是读写――三方面的考量:
由前文可知,apk、dex、lib都是只读不写的文件,即使是MLC也可以满足。
而cache和用户数据都是在频繁读写的。
对于它们要特别讨论一下。
对SD卡的要求:
首先,这意味着对写入速度的要求;
其次,意味着对SD卡擦写寿命的要求。
如果需要迁移/data/data,那么要求SLC高速卡。
否则效果不理想也容易损坏SD卡。
FAT分区对于延长存储卡寿命较为理想,而EXT就不好。
系统运行速度:
如果迁移用户数据和cache,不仅要求卡速快,而且对挂载方式也有要求。
如果将整个EXT分区挂载,会提高IO效率,甚至可能比挂载之前的IO分数还高。
(据网友所说,未测)
另外,SD卡速并非唯一因素。
低端手机往往会出现由于手机限制而无法发挥出SD卡速的情况。
耗电:
用户数据即使在待机时也会频繁读写,造成SD卡在待机时耗电,严重降低待机时间――甚至可达一半左右。
重新分区的利弊:
很多方法要求对SD卡重新分区。
这样有两个好处,一是程序挂载分区比较方便。
二是当把手机作为U盘连接电脑时,第一FAT分区一定会被从系统中卸载,而你的第二分区不会被卸载。
如果迁移的程序位于第一FAT分区中,那么它们此时就会被终止运行。
此外,桌面Widget程序不能放在第一FAT分区中,否则会无法显示。
重新分区也有缺点,就是SD卡会一直处于挂载状态,永不卸载。
(好像Android不像WindowsMobile那样待机时可以卸载SD卡。
如果待机时可以卸载的话,不重新分区就会省些电。
)
另外重新分区操作较麻烦。
推荐在recovery下分区。
有时,有的SD卡在PC上格卡分区后,app2sd+会无法识别。
链接什么:
如果直接链接或挂载/data、/data/data、/data/app这种包含所有程序的目录,必然不能选择每个程序是留在ROM中还是移到卡上。
反之,如果为每个程序的文件、目录单独创建链接,就可以选择哪些程序移动,哪些不移动。
分区的文件系统:
如果需要挂载"
整个"
分区,那么,则只能挂载EXT格式的分区。
前面已经说过,EXT分区对存储卡寿命有害。
另一个问题:
官版Android的Linux内核太老,不支持EXT4,仅支持EXT3和EXT2。
如果希望使用EXT4,那么就必须升级内核。
特别注意:
如果你的第二分区是EXT4且你在用官版系统,那么不要奇怪为什么挂载不上。
各方法实现机理与利弊表:
下面描述一下各种方法的实现机理,读了前面的利弊解释,读者不难自己推断出各方法的利弊。
但我仍然附了一张全表在最后。
迁移apk和lib。
在第一FAT分区中为每个程序创建一个文件,把这个文件作为分区挂载。
也就是说,若有N个程序,就会挂载N个分区。
App2SD+:
迁移apk和dalvik-cache。
也可以选择迁移/data/data目录的全部(最新版才有的功能)。
方法是在EXT分区中建立目录并创建到/data下对应目录的符号链接。
Link2SD:
迁移apk、lib、dalvik-cache。
第二分区可以是FAT或EXT分区。
出于安全考虑,禁链系统程序。
创建第二分区中文件到/data下对应文件的符号链接。
D2EXT:
将整个EXT分区挂载为/data。
简单粗暴直接。
但可以获得较好的IO效率。
Data2SD:
支持两种挂载方法。
第一种同D2EXT;
第二种是在第一FAT分区中创建一个img文件,将这个文件作为EXT分区挂载到/data。
综上:
可见,原生方法最弱,但也最安全最稳定最方便。
Link2SD相对于原生方法,可以迁移系统程序更新,U盘模式下程序不会消失。
App2SD+、D2EXT、Data2SD则进一步允许把整个/data中的文件都迁移过去,但
不能自由选择迁移哪些,不迁移哪些程序。
迁移/data/data后,通讯录、短信等数据也会跑到SD卡上,导致开机加载系统程序速度变慢,更耗电。
详细对比见下表:
(Data2SD直接挂EXT分区的特性与D2EXT几乎相同,故不列。
只列Data2SD挂img文件的利弊)
另外,据我测试,使用Link2SD时,豌豆荚无法列出应用程序列表,无法管理应用程序。
项目
App2SD
App2SD+
D2EXT
Data2SD(挂img)
迁移文件及效果
迁移apk
是
迁移dalvik-cache
否
部分
迁移lib
迁移cache
迁移/data/data
可
系统程序更新
U盘模式连接电脑时程序不丢失
危
Widget正常使用
豌豆荚管理程序
操作便利性
选择迁移哪些程序
需要ROOT权限
可视化
需要分区
性能及其它
支持FAT32
支持EXT3
支持EXT4
速度
中
同左
慢
快于左
耗电
少
少/多
多
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 程序 安装 SD 各种 方法 详解