Android系统编译后生成三个映像文件,都是用cpio打包,gzip压缩的。
- ramdisk.img 文件系统,包含/system, /data, /bin等目录。kernel启动时负责初始化。
- system.img 系统包和库文件,挂载到/system目录
- userdata.img 用户数据,挂载到/data目录
Android系统目录结构
- /init 系统启动文件
- /system
- app 系统应用安装目录
- bin 常用的系统本地命令(二进制),大部分是toolbox的链接(类似于嵌入式Linux中的busybox)
- etc 系统配置文件,如hosts
- font 字体目录
- framework Java平台架构核心库,jar包和odex优化的文件
- lib 系统底层共享库,.so库文件
- xbin 不常用的系统管理工具,相当于linux的/sbin
- media
- audio 铃声,提示音等音频文件, .ogg
- notifications 通知
- ui 界面
- alarms 警告
- ringtones 铃声
- audio 铃声,提示音等音频文件, .ogg
- usr 用户文件夹
- keychars
- keylayout
- share
- srec 配置
- ......
- vendor
- build.prop 系统设置和变更属性
- /etc --> /system/etc
- /vendor --> /system/vendor
- /dev 存放设备节点文件
- /proc 全局系统信息
- /data 用户软件和各种数据
- local/tmp 临时目录,无权限要求
- app 普通程序安装目录
- system
- location 其中的location.gps记录最后的坐标,LocationManager.getLastKnownLocation()数据来自此处
- data
- <package_name>
- files Context.getFilesDir() ,Context.openFileOutput() 获取的目录,应用安装目录下
- cache Context.getCacheDir() 获取的目录,应用安装目录下,系统会自动在内存不足或目录大小达到特定数值时自动清理。
- shared_pref Context.getSharedPreferences() 建立的preferences文件(xml)存放目录
- <package_name>
- anr 应用发生ANR(Applicaiton is Not Responding)时,Android将问题点的堆栈写入到traces.txt文件中
- location
- gps GPS location provider配置
- property 其中persist.sys.timezone记录系统时区
- /sdcard -->/storage/emulated/legacy SD卡的FAT32文件系统挂载到此目录
- Android
- data
- <package_name> 应用的额外数据,应用卸载时自动删除。
- files Context.getExternalFilesDir()获取的目录。设置->应用->具体应用详情-> 清除数据 操作对象就是这个目录。
- cache Context.getExternalCacheDir()获取的缓存目录。设置->应用->具体应用详情-> 清除缓存 操作对象就是这个目录。
- <package_name> 应用的额外数据,应用卸载时自动删除。
- data
- Android
lost+found
yaffs文件系统固有的,类似回收站的文件夹。
ODEX
从apk中提取出来的可运行文件,即原apk中classes.dex通过dex优化生成的一个单独存放的dex文件。启动应用时不需要再从apk包中提取dex,速度更快。还可以删除apk包中的dex减少体积。缺点是体积变大,而且升级某个给Odex的应用可能会出现问题。
参考文档
http://blog.csdn.net/conowen/article/details/7251057