首页 > 实用文档 > 知识 >

为什么SD

成考报名   发布时间:06-06    阅读:

App2SD相关知识---看完你就懂为何要app2sd了
为什么SD(一)

App2SD相关知识---看完你就懂为何要app2sd了

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

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

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

我们用户安装的程序,占用三部分空间:主程序在/data/app,缓存文件在/data/dalvik-cache,辅助程序和存档文件在/data/data

系统自带的程序,同样占用/data/data作为存档,例如通讯录和短信就存在这里

2、app2sd的必要性

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

3、app2sd的原理

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

PS:就如同你的电脑上有硬盘一样,手机上也有“硬盘”,那就是你的SD卡。如同你在电脑上可以给硬盘分区一样,SD卡同样能分区。一般来说,不论你是否分区,你的SD卡买回来之后,就只有一个很大的fat32区,当然,这个fat32格式的卡,足够让你储存相片,短信,email等等。

在Android手机上,除了你外置的SD卡以外,还有手机内部闪存(NAND)。传统意义上来说,以前你只能将软件安装到NAND中而不能把软件安装到SD卡中。于是,尴尬的是,当你有一个32g的SD卡,但只有5mb的内部存储,你同

样不能安装多少软件,装几个后手机就提示空间已满。Android手机只允许装到NAND中的一个原因是保护知识产权也就是防止盗版。访问手机内部存储空间就是一件很麻烦的事情,(一般来说没有root是完全不可能的)。正因为访问很麻烦,所以你很难到那里面去把app拷贝下来然后再发到网上去让别人安装。

但这样一来,像我们这些很喜欢装很多app的人,就尴尬了。虽然这些app都是合法拷贝,但是内部存储空间很快就会耗尽而无法安装新软件。

第二部分,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教程,其主要步骤为:

1.替换/system/bin/vold (原版的vold不支持多分区sd),替换busybox(原版的Busybox不够强大,批量复制不好用

2.将SD卡EXT分区映射到/System/sdcard,或者其他路径名称,将/data/app和/data/dalvik-cache复制到这里【为什么SD】

3.更改vold.sh,将sd卡上的内容,映射到/data/app和/data/dalvik-cache。

这样做,会使得接电话或者收短信的时候有点卡,因为通讯录和短息从SD卡上读,不如从手机内存读取快。不过这样你只要SD卡够大,装几百上千个程序没问题,我是金士顿4G的卡,觉得嘛,有点卡。

如果你对系统流畅度要求很高,那就只把/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的android【为什么SD】

所以,2.2的android,Google给了一种将软件安装到sd卡的办法,这样就能安装更多软件。Sd上会生成一个大概叫做 .android_secure的文件夹,将软件安装到里面。但这个方法有一些问题:

1,软件不是自动安装到sd卡中这个文件夹,你需要手动去点击“移动到sd卡” 2,不是说有的软件都能被“移动”,事实上很多软件都不能移动。是否能移动到sd卡,取决于开发者是否更新软件并允许移动。很多开发者不愿意更新。 3,即便能移动过去,不是所有的软件数据都移动到sd卡,同样有一些信息是需要保留在NAND上面的,所以,你的手机照样会很快就用完内部存储。

4,你可以通过命令行强制将所有软件都装到sd卡上。但这么做的后果就是,小插件什么的就不再能用。

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

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

1.只移动了/data/app下的文件,另外的/data/dalvik-cache和/data/data没有移动。

2.移动到SD卡的程序,不能有桌面小工具。很多程序不支持此移动

3.一旦连接大容量存储,移动到SD卡上的程序就不能用了

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

apps2ext通过将你的sd卡分区成两个文件系统,达到将软件安装到sd卡的目的:一个如之前一样的fat32分区,让你装之前需要在sd卡上安装的东西;另外创建一个ext分区。Ext只是一个文件系统的名称,同fat32,ntfs一样,只是这个ext系统是android内部存储用的格式。Sd卡之所以一般都是fat32格式,那是因为这个格式的使用是最广泛的,windows,linux,都能使用这个格式,而ext格式一般来说,只是在linux下可以看到并读取。

PS:Ext格式有不同的版本。最常见的就是ext3。和ext2比起来,最大的不同就是ext3格式有了“日志”(Journal)功能。日志功能最大的好处,就是当你的操作(如对sd进行读取或者写作的过程中)因为意外原因别打断(比如,突然断电),那么,有日志功能的ext3分区上的文件,不会有任何损坏或者丢失。当我们每次打开我们的电话时,上面总是提示“正在准备sd卡”。每次都提示正在准备,但其实系统正在做的就是检查fat32格式是不是损坏,这正是因为fat32格式不具备日志功能。回想一下以前在windows98年代的日子,每次当我们并非正确关机或者突然重启之后,会出来一个带着扫描进度条的蓝屏,这个扫描进度条和现在正在准备sd卡,是一个意思。但当我们后来用windows 2000、windows xp时,因为这两个系统开始支持带有日志功能的ntfs,所以在这两个系统下,文件系统损坏的可能被降低了。

第三部分,最后的相关说明

现在,你应该已经把你的sd卡分好区了:fat32格式和ext格式。至于ext格式是ext3还是ext4,不是很重要。使用ext4,并不会带来什么好处(有时候rom不支持ext4,反而麻烦)。当你分好区之后,apps2sd在你的电话上运行一段脚本,从手机的内部存储创建一个“象征性的链接符号链接”(symbolic links)到sd卡的ext分区上。一个象征性链接符号链接和快捷方式的意思有点像,但是,一个象征性链接符号链接对于操作系统来说,是不可见的。换句话,有了这个对操作系统不可见的象征性的链接符号链接的android系统,当你在安装软件到内部存储的时候,系统无法分辨你是安装到了内部存储NAND中还是sd卡的ext分区中,于是,就这么瞒天过海,软件从手机内部存储安装到了sd卡上。这样,这个方式可以很有效的节省你的手机内部存储。

但是,这个ext分区在windows下是不可见的。在windows下,你的sd卡像是少了一部分空间一样,而少的这一部分,就是你的ext分区的空间。比如,你有一张4g的sd卡,(大概有3.5g的实际使用空间),然后你创造了一个512m的ext分区,这时将卡插到电脑上,windows显示你的卡就只有3g了。“失去”的那些空间其实没有失去,只是被windows无法看到的ext分区使用了。当你重新格式化你的sd卡时,这些空间自然就又会出现。更重要的是,应为ext格式支持日志功能,所以这个分区不需要“正在准备sd卡”,意味着这个分区在你手机启动的一刹那就可以正常的访问:所有你桌面小工具啊等等东西,就可以开机运行。(不像2.2的app2sd,开机之后小插件消失)

最后,app2sd和apps2sd+,这两个概念,还是有一些区别的。之前说过,所有的程序都是储存在NAND中的一个文件夹中吗?其实,这个不准确。准确的说,是储存在两个地方。这第二个地方,叫做Davlik Cache。你其实不需要知道这个东西是什么,只要知道的是,所有的程序都需要调用这东西来储存数据,所以,最终这东西也会慢慢的耗掉你的NAND存储空间。Apps2sd+就将Davlik Cache也一并移动到了ext分区上,省出更多的空间。一些人认为,这样会导致性能的损失,因为他们觉得内部存储的NAND应该总是比外部的sd卡块。(这就是为什么人们总是争吵到底是class 4还是class 6的sd卡,更适合apps2sd,这争吵背后的逻辑就是,更快的卡对性能提升更好)。但事实是,你的程序最后还是从手机中RAM中开始运行,所以,基本上没有什么影响。同时,考虑到大多数的软件都是几百k,最多不过1,2m,其实对性能没有任何影响。

还有就是,任何最近发布的apps2sd或者apps2sd+都可以在任何sd卡上工作,不论这个sd卡是否有ext分区。在手机第一次启动的时候,它会自动检查sd卡,如果卡上没有分区,那么,它就自动将程序撞到手机内部存储中。同样,即便你的卡有了ext分区,但没有apps2sd+功能,这也不会引起任何问题。

总而言之:

App2sd“伪造一个内部储存空间来,然后将程序装到这里面去。

App2sd+将更多的东西放到sd卡,省出更多空间。

2.2的apps2sd与之前的app2sd相比,问题多多,但是确实最简单的一种,因为,他不需要分区。

附上参考的英文原版资料:

Ok, so here’s the deal, in a very longwinded way that should hopefully explain everything and answer ALL questions.

You have an SD card in your phone and, a bit like normal PC Hard Drives, you can “partition” them (split them into two or more sections of different filesystems). Normally, your SD card is just one big FAT32 partition, which is fine for storing your pics, messages, emails, etc.

Now, other then your Phone’s SD card, your phone will have its own internal flash memory (or “NAND”) storage. Tradditionally with Android, you could only install applications to this NAND storage, you cannot install them onto your SD card. So if you have an empty 32GB SD card, but only 5Mb of internal phone storage, you still wont be able to install many apps, if any at all.

This was done to protect the apps from things like piracy – it’s not easy to access the location where apps are installed on your phone’s internal storage (normally impossible without root), so you can’t for example buy an app, copy it, refund it, then install it again.

Still, this is no good for those of us who like to install lots and lots of apps, legitimately, as we run out of internal storage very quickly.

So Google came up with a way to install apps to the SD card. A folder is created called something like .android_secure and this stores (I believe) encrypted versions of applications, but there’s a few catches:

1) Apps aren’t automatically stored here, you have to manually “move” them

2) Not all apps are capable of being moved, in fact most apps aren’t, the developer needs to update their app and allow it. Some apps aren’t and wont be updated and some developers may not want to allow it for whatever reason.【为什么SD】

3) Not all app data is moved, most of it is but some data is left on your phone so many people still run out of internal storage quickly.

4) You can force ALL apps to be moved to this area by default, but it breaks incompatible ones – such as Widgets, which are unable to load due to the SD card not being “prepared”.

So that’s Froyo’s version. Before Froyo existed, some very clever people came up with a thing called “Apps2SD”. Remember I said that your SD card normally is one big FAT32 partition? Well, Apps2SD works by having your SD card patitioned into TWO filesystems. A normal FAT32 partition for your usual stuff and a secondary “EXT” partition. EXT is just a filesystem, like FAT32 or NTFS, but it’s the filesystem used by Android internally. The SD card is normally FAT32 because it’s a “universal” filesystem, that just about any machine will be able to read, whereas EXT filesystems are generally Linux only, but I digress.

一般sd卡内存卡的损坏的原因和解决方法。。
为什么SD(二)

一般sd卡内存卡的损坏的原因和解决方法。。

★一般内存卡的损坏分为未设密码电脑读不出卡密码忘记无法格式化I/O错误三大类情况。首先先说未设密码机器读不出卡的情况这种情况基本是由于不支持热拔插直接拔卡和读卡器写卡操作失误造成的使卡造成逻辑错误这种情况可以使用诺顿磁盘修复工具和硬盘还原来修复具体操作过程不再详述只提到一点假如内存卡放入读卡器之后系统一直读卡但没有任何响应甚至假死机器的卡灯一直亮着这种情况下上述两项工具是没有任何用处的因为打开软件它们根本识别不到内存卡。这里讲一种解决办法就是先找到一张相同容量的内存卡放入读卡器然后点击右键“格式化”出来格式化菜单这时把卡拔出格式化菜单并不会随之消失你在这时插入有问题的那张卡然后选择“FAT32”格式开始格式化这个过程可能要等很久有时会过很久出现“Windows”无法完成格式化但这时不要放弃重复上述过程大概十次会格式化成功一次成功一次之后你点击右键的属性选项“检查错误”修复坏扇区如果内存卡存在物理损坏这里的进程会非常慢在这个过程之后再把格式选择为“FAT”再格式化一遍就大功告成了再说设密码无法格式化的原因出现这种问题有很多原因有很多是待卡格式之后内存卡突然出现密码一种是设置背景使用E盘上的图片或MBM格式图片而重启之后被锁还有很多原因。解决这些问题是不能在XP系统下格机的因为机器根本识别不出来目前最完美的方案是用9210C或9300强行格这种方法论坛里有详解。有两种方案第一种找一台DAK或CANON的支持内存卡存储的相机打开机器机器基本上都可以直接格卡没有出现密码提示因为相机的系统设置不像手机有按键设置相对手机设置它是较为简单的基本上只要支持内存卡存储越是低端越好。第二种方法适合二版机是在那台引起错误的手机上解决这种方法用QD试过别的机器不太清楚具体方案是使用蓝牙给出问题的手机装上SeleQ在装SeleQ时一定要装入手机存储因为选择存储卡后马上会出现“系统错误”装入之后重启手机然后在SeleQ里就可以看见E盘了这时你去内存卡里一个一个的删文件直到删空之后回到C盘SYSTEM文件夹里会出现两个MMC前缀的文件全部删除后回到电脑上卡还是不能读的这时用上面提到的方法就可以了但需要耐心。删除后在手机里它还是提示输入密码的。对于I/O错误看一些书上说可以用磁盘修复但还是I/O错误电脑是根本读不出的直接就弹出“I/O”错误。关于修复软件推荐FlashDoctor和mmcmedic。

SD卡识别
为什么SD(三)

为什么会出现找不到SD卡,根本原因在于SD卡没有分区,没有启动App2SD+格式。所以无论你再怎么做,还是会出现”正在准备SD卡“

先说概念。MIUI的ROM对SD卡定义的格式是App2SD+,因此为了保证SD卡正常运行。必须做以下几个步骤:

1.进入Recovery-Advance-Partition SD card 为SD卡进行分区;

Swap是缓存交换区,建议设个256MB(相当于PC的内存);

Ext(扩展区)设的大一点(这地方就是把机内的数据腾挪过去的分区,可以设成1024,即1G,相当于硬盘的概念)

剩下的就是SD卡上未用的空间,不用手动划分(这个是能被windows识别的SD卡容量,可以直接从PC copy音乐啊,图片什么的)

做完这些,手机界面会出现partition SD.....,最后出现Done 即可

我用的是Recovery 5.0.2.0, Recovery相当于PC的Dos,有了它你才能装Windows(MIUI rom)

Recovery 也建议经常更新为好,功能会持续升级

附上链接

2.1 安装超级终端

建议先去应用汇下载超级终端”Better Teminal“,安装进入后选择”local shell“ 输入命令 su 获取Root授权

2.2 手工开启app2SD

直接输入 a2sd reinstall

回车,出现很多的绿色字符,注意如果没出现,请退出再继续!

自动手机重启,这一步是重新加载a2sd功能,并且会把你已经安装过的软件移到Ext分区里。

OK,到现在,App2SD已经成功了

2.3 手工开启app2SD+格式

输入su 回车 直接输入 a2sd zipalign 回车

直接输入 a2sd cachesd 回车出现绿色字符

出现 Rebooting Phone.......

重启成功!

2.4 分区成功后,还有一步待完成

重新进入Recovery-Mount & Storage

把mount SD card/cache/system/sd-ext都点一遍,实现加载功能

最后重启一次

手机SD卡损坏怎么办?
为什么SD(四)

在插上还是坏的),点击开始运行。3, (这一步,1,右键SD卡属性-工具-开始检查-把自动修复文件系统错误和扫描并尝试恢复坏扇区两项都打上&radic,答,修复后,首先要连接电脑,方法如下,在运行里输入chkdsk /,(带下划线的G是你的可移动磁盘(SD卡)的盘符,点击回车键,就开始修复。5,因为,修复后拔出内存卡,G,至少要在我的电脑里有一个可移动磁盘(SD卡)。2,我认为很重要,无需格式化,开始我没有用这项时,就把字母换成你的可移动磁盘(SD卡)的那个盘符)4,修复后资料齐全,如果在电脑里不是G盘,SD卡已损坏的修复方法,

为什么手机下的软件不能转移到SD卡上??????
为什么SD(五)

有两种情况:
第一:手机获取root权限,既然网友提了这个问题应该没有获取root权限的。
第二:网友的手机系统第一要2。3或以上的。如果是的话,还是不能移动,可以到电脑手机助手移动,什么软件都可以在电脑上移动,移动好了之后在手机上就不要移动了,不然会移不回来的,只要在电脑上移到了sd卡上,下次软件更新的时候也会自动移动到sd卡上的,网友的在手机上移到不了,其实也很正常的,也许有些软件又可以自由移动,如果不能自由移动的,只能到电脑手机助手里去移动了,或者获取root权限。为什么手机下的软件不能转移到SD卡上??????
●【往下看,下一篇更精彩】●

最新成考报名

  • 立春过后什么时候鱼开口
  • 2021年立春 2021年立春是几点几分
  • 冬至吃啥 南方冬至吃什么
  • 冬至几月几日 今年冬至是几号
  • 烧碱安全救护常识
  • 国庆节高速免费几天
  • 白露与秋分
  • 请示与批复有什么关系