Friday, September 28, 2012

通过link2sd,人工扩展你Android手机的内部储存空间(ROM),再不需要为安装不下程序发愁了,全面解决了app2sd不能完成的问题 (原创科普文章)

先说说几个关机手机存储类型概念:

1. 手机的RAM,这个相当于我们计算机里的内存条,各种存续运行时,需要使用RAM进行运算思考;
2. 手机的ROM,这个相当于计算的硬盘,把所有被安装的程序的最终存放地点;
3. 手机的热插拔SD卡,用于靠站手机的外部储存空间,类似于我们在计算机上用的的闪存.


手机拿到手上,RAM,是固定的,我们不能做什么。现在手机的RAM通常都有256以上,事实上足够运行大多数应用程序了。
但是内部储存空间ROM却是个问题。制造商通常在这上面做手脚,比如说1G的储存空间比类似同档的256M的就要贵处来好几百甚至上千。再加上出厂时,以及安装了各种内置的无用软件,留给用户可用的可能最多100M左右了,安装不了什么软件的。

尽管从Android2.2开始,有了app2sd的功能,但是这个功能并不能完全解决该问题。为什么,首先,不是所有软件开发者都愿意加入该功能(中国的银行软件最恶心,在我测试过的所有可以从play下载的软件中,没有一个自觉主动提供了app2sd功能),包括很多游戏开发商,安装下来居然有几十兆,简直是抢空间!当然,这都还有方法解决,使用开发工具包 adb 能强迫把所有软件的apk包都手动地安装到sd卡上(这也是很多类似备份软件带有的功能),可以避开开发商以我为大的行为。但遗憾的是,通过app2sd功能后,某一程序的固然可以运行,但其桌面小程序(widgets)功能就会消失了,有些开发商通过额外提供一个只有几十到几百开的apk包再来弥补这一遗憾,类似的有网络笔记本备忘录evernote等。而且软件的库文件(如果有的话),运行数据,dalvik-cache 文件,都还是保存在手机内置存储器上。

解决方法:

注意:手机必须Root,才能使用到下面介绍的方法。

自己安装的软件,它们的所有文件通常都是放到/data/ 文件夹中的某些子文件夹中去。我们的关键就是怎么增大/data/下面某些子文件夹的空间。因为Android 采用的是Linux系统,它的文件系统是ext2(或者ext3,ext4),而不是平时windows的FAT32或NTFS。Linux有一个symlink功能(windows也有类似功能),就是可以把一个文件夹,文件,链接到另一个地方,对原文件夹(文件)的访问实际上被定向到了别的地方去了。我们来手动增加ROM的空间,实际上就是使用了这一特性,在原来的ROM空间上,放置一个链接,所有对该文件夹的操作,结果统统被定向到了另一个拥有更大储存空间的地方去了,这就是我们扩展手机ROM的本质。当然,这种方式会降低手机的速度,最为明显就是手机重新启动时要比平时花更长的时间。

准备动作:

把你的SD卡拿出来,查到计算机上,通常SD卡都是FAT32位的,你需要把你的卡分为两个主分区,第一个保留原来的FAT32,第二个把它分成EXT2(可以使用你喜欢的任意分区工具,我介绍使用完全免费的 MiniTool Partition Wizard Home Edition,下载地址 http://download.cnet.com/MiniTool-Partition-Wizard-Home-Edition/3000-2094_4-10962200.html),比如,你是4G的卡,可以FAT32为3G,后面EXT2的为1G。在你把卡插回手机后,通过手机你会发现你的SD卡空间变小了,因为一部分已经转变为了EXT2,通过这种方法我们是看不到的。

网上有很多类似shell命令行包,把这个EXT2和手机ROM关联起来,也就是扩展了ROM空间,但是这些方法通常要求用户有比较高级的IT技能,会使用命令行语句等。我个人认为,不适合大众,并且不能掌控今后文件被安装的位置,不便于未来操作。

这里介绍一个避开了这些麻烦事情的软件包:link2sd

接下来,你需要在手机上安装该软件包,该包在play的位置是 http://goo.gl/anbH6 , 它并不把整个SD卡上的EXT2分区自动和ROM映射链接起来,而是仅仅映射对你想移动的程序。尽管该软件支持的SD卡上的第二个分区为FAT32,考虑到android系统,把第二分区设置为FAT32仅仅是在该软件无法正常识别出EXT2后,再进行尝试。

一切就绪后,你就可以选择要建立link的已被安装的app了。该软件同时还支持把系统程序转换为用户程序(不建议用户这么做),也支持app2sd功能。如果你的软件原来已经使用了app2sd功能,那么在建立link时,该程序会首先自动把你的软件移回手机存储器中,再把软件移动到SD卡上的第二个分区,再建立link链接。你可以选择性的仅仅移动,应用数据,或者dalvik-cache,以及库文件(不是每个应用都有,通常只有比较复杂的应用才会有),当然也可以选择全部建立link。你不想用了,还可以把它们全部都移动回去!

那么被移动的文件到哪里去了?还能看到SD卡上的第二个分区吗?它们到映射到了/data/sdext2/ 下面去了!如果你进入到 /data/app/ 中,就会看到被你建立link的软件,会有一个指向/data/sdext2/同名文件的映射。

通过link被移动的程序,保留了原程序的所有风格,包括桌面小程序都能正常使用!如果你要从手机上删除某个应用程序,link2sd也会自动把它从SD卡上删除,并删除链接。

尽管我把所有自己安装的软件都建立了link,我本人还是喜欢这种选择性的移动方式。我在SD卡上分了1G的ROM链接空间,现在已经使用了500M了,觉得好的程序都往里面装,现在再也不担心手机存储空间不够了(我的手机初始化,可用内置空间仅仅为136M)!

总结:我们这里所说的扩展手机ROM,并不是物理性质的扩展了存储空间,只是通过建立映射链接的方式,把原本要放在内置空间里的东西,统统放到了别的地方去了,然后通链接来远程操作。这可能会降低手机运行的速度,特别是系统初始化时最为明显(我本人没有感觉到在初始化后运行程序有多慢,只是开机要花比原来更长的时间了,最好对link2sd不要建立链接,它是初始化核心之一)。

Sunday, September 23, 2012

大陆不要脸的媒体,对两名不同运动员赴日参赛的不同描述!

9月21日,大陆21CN网站分别就体制内外的二名运动员前往日本参赛,采用了完全不同的两种手法进行了相关报导。
对于体制外、目前排名世界第八的中国女子网球运动员李娜决定下星期到日本参加国际网球职业赛"东丽泛太平洋公开赛",21CN的报导标题是《李娜罔顾钓鱼岛争端赴日参赛 国人:自私的汉奸!》。同时,对国家运动员彭帅的参赛,采用的标题则是《日本举行反华游行 彭帅不惧危险参加东京网球赛》。

可能是被骂了,现在网站的标题分别是"李娜赴日参赛为创佳绩 全力冲刺年终总决赛席"和"日本举行反华游行报复 彭帅赴东京网球赛毫无压力",但总的感觉还是要强调第二位运动员有临危不惧的气度。

这种媒体能读?这就是中国的21世纪!

中国“创新”在次震撼世界—— 比基尼京剧

这种创新太惊人了!再来个美女三点式摔跤,可以扯对方服饰,那岂不是更刺激!

这种不伦不类的创新给谁看?京剧被当作中国的国粹,与这种选美没有任何一点联系,唯一相同的就是都要上台亮相。这唯一的共同点,也被这些无知的人绑到一起,搬上娱乐舞台。

我记得好像中国哪个地方搞旅游,让真人女子脱光衣,说是展现人体艺术与自然的完美结合。