/ 闭门造轮子 / 折腾Android刷机的痛苦

折腾Android刷机的痛苦

2013-02-01 posted in [问题即经验]

由于我的HTC Desire买的比较早,硬件配置都不如现在的新机。CPU还好,内部存储就悲剧了,160M左右的剩余空间,在如今各种APP大户的侵占下,装上十几个应用就随时报空间不足。于是我在对每次想装一个新应用就必须挑一个卸载掉忍受了很长时间之后,终于决定刷机来解决这个问题。

去年第一次开始折腾刷了小米系统后,总算是解决了一部分问题,2.3的android系统至少比2.1能用app2sd多腾出来点空间。但那依然是临时的,很多软件还不支持,所以只是比原来多装几个而已,仍然不能根本解决问题。

这次再进一步折腾,在网上搜到了app2ext的操作流程:Android手机上如何实现data2ext。然后按照教程中说的进行了将近10次重刷的操作,终于让手机顺畅稳定的运行在足够软件空间的系统里。

其实整个过程不需要重刷系统,但如果弄错出问题重刷会比较干净。关键的步骤如下(确认已经root过):

  1. SD卡分出一个ext3分区(多大看你自己,我分了1G,但500M估计也足够了)

  2. 手机打开USB调试模式,电脑可以运行adb控制台

  3. 运行adb shell进入控制台

  4. 运行su命令获取root权限

  5. 方法一,依次运行下面几个a2sd命令:

    $ a2sd reinstall # reboot
    $ a2sd zpialign
    $ a2sd cachesd # reboot
    

    两次重启后就OK了。

    方法二,参照上面帖子里的命令,直接对在文件系统里对应用存储部分进行Linux软连接转移:

    $ cd /data/
    $ mv app /sd-ext/
    $ mv app-private /sd-ext/
    $ mv dalvik-cache /sd-ext/
    $ ln -s /sd-ext/app app
    $ ln -s /sd-ext/app-private app-private
    $ ln -s /sd-ext/dalvik-cache dalvik-cache
    $ cd /sd-ext/
    $ chmod 777 app
    $ chmod 777 app-private
    $ chmod 777 dalvik-cache
    $ reboot
    

    两个方法的效果基本是一样的,方法一也是调用系统的a2sd方法完成软连接转移。

这些操作完后手机应用基本就可以随便安装了,唯一的限制是应用数据还在手机内存里,但这部分通常不是很大,而且以后也可以清理,所以基本相当于空间无限。这部分我也尝试了用同样的软连接方法转移/data/data目录,但悲剧的是转移后很多应用直接FC,导致无法正常运行,所以我还是放弃了。

至此我为调教这手机系统又花了两天的时间,不过比第一次刷ROM好点,当时折腾了一整天有一个步骤过不去差点打算200块送中关村了事。现在折腾智能机的痛苦完全不亚于当年从DOS系统过渡到WIN98的各种折腾。

而且经历过折腾再看Apple的设计于是真觉得手机可更换存储卡的确没有太大必要,大多数Android手机就因为这个原因要另外内置一块较小的内存直接导致空间不够的问题。用户就不应该知道手机内存还分成两块,而且再你买多大的卡还是只够装十几个应用。

其实我只是个普通web程序员,一点都不geek,而且是很懒的那种。很多时候对这些不是特别重要的东西能用着舒服就行,这里“舒服”的特定含义就是不要让我疼。但都这年头了智能手机却因为空间不够而只能装很少的应用着实让我疼了很久,为此我还要自己来折腾实在是一件更疼的事情。于是我终于体会到和菜头当年的感受:

我当时花了4000多大洋买了一台HTC HERO,这钱不是我在地上捡的,是我一天天打工,一字字写稿换来的血汗钱。……花4000块钱还要当Geek,HTC HERO何德何能要出来训练消费者,提升他们的IT技术水准?谁家花4000块钱买台电视,还需要自己动手,用松香焊锡外带电烙铁、万用表自己焊两个电容上去玩的?老老实实承认一声“烂”会死啊?

——《HTC HERO苦难史

我记得当年入这手机的时候还写过一篇大赞Google的文章,其中支持针对Apple开放竞争的观点倒不说过时,但对于非手机系统开发者,尤其是一个消费者来说,非要让我自己去做一些深入系统内部对于缺陷的修复实在是蛋疼!

所以对普通用户来说,你们还是去买Apple的东西用吧,别跟自己过不去折腾Android,还有Windows。当然,等他们都进步以后另说。

-EOF-