首页 > 数码玩家 > Android内部存储空间不足问题

Android内部存储空间不足问题

2012-05-30 15:45 星期三    浏览: 14,396    绿 发表评论 阅读评论

我的HTC G16(chacha 810e)的/data对应的分区拥有150MB的空间。因为/system对应的分区有较大空间剩余,通常它为只读。为减少这些剩余空间造成的浪费,我 安装程序时都是在将其重新挂载为可写(sudo adb remount)之后直接push进去,这样就给/data分区节省了空间。但是,在没有多少程序缓存的情况下,手机仍经常提示内部存储空间不足,也不敢安装以MB计的apk程序。

为解决这一问题,调查了/data目录:

sh-3.2# du /data -h -d 1
0    /data/htcfs
56.0K    /data/misc
4.0K    /data/app-private
4.0K    /data/app
5.5K    /data/property
4.0K    /data/cache
69.0K    /data/anr
4.0K    /data/dontpanic
12.0K    /data/local
1.8M    /data/system
88.5M    /data/dalvik-cache
36.1M    /data/data
12.5K    /data/backup
8.0K    /data/secure
4.0K    /data/lost+found
126.7M    /data

可 见,dalvik-cache占用了大部分空间,该目录为/system/app和/data/app的应用程序的缓存,减少Dalvik VM加载应用程序的时间。Android手机刷机后第一次开机,会花费很长时间才能进入界面,应该是遍历各应用程序生成这些缓存(没发现有权威文档也没有 查验代码故称之为“应该是”)。当程序安装又卸载后,程序在此目录中的缓存并未清除。久而久之,可用内部空间越来越小。可手工删除,应该也可Wipe Cache(在fast boot中),当然也可恢复出厂设置(记住要备份)。

但像我自己的例子,/data所挂载的分区已经做到最节省, 没有浪费,如何解决内部存储空间不足呢?其中一个方法/思路是:SDcard上创建两个ext3分区,比如大小1GB,另一个大小512MB,然后在 init.rc里挂载到/data/dalvik-cache和/data/data下,就应该可以解决这个问题。缺点是,该手机正常运行依赖于该SD 卡,摘掉卡后可能会出现些问题。因为根文件系统为只读,init.rc不可修改,所以又回归到最原始问题上。有src code的话进行编译后,直接使用工厂烧写工具烧写,方便简单。

另外一种方法/思路是为apk程序瘦身。在apk程序包下面的res/目录下,往 往存放了适配各种屏的图片文件,它们往往都很大,动辄好几个MB。我们可以将它们去除后再重新生成签名,然后再放入自己的手机中,相当于针对自己手机的定制。其实,在当前手机硬件如此之高,GPU大行其道的今天,完全可以多消耗一丁点硬件处理性能,去换取更多空间。只有在硬件处理性能比较弱时,才有必要提供各种大小的图片资源。

 

后记:在不能修改原始设备分区的情况下,我们可以维护设备,及时清除掉垃圾数据。如安装apk后,在卸载后,会在 /data/dalvik-cache/留下残留,占用与apk同样大小的/data分区空间,在获取root权限后,可以手动删除它们;在应用程序管理里,清除各程序的缓存数据。当然,清除它们最彻底的还是恢复出厂设置,但在这之前最好将手机上的数据如电话本同步到云端,恢复完再同步回来。

本文链接地址: http://blog.redwolf-soft.com/?p=1556

原创文章,版权©红狼博客所有, 转载随意,但请注明出处。

    分享到:

相关文章:

  • 无相关文章
分类: 数码玩家 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
订阅评论
  欢迎参与讨论,请在这里发表您的看法、交流您的观点。