经常会在群里遇到有童鞋在版本群里吐嘈编译报错编译报错的,其实很多是system.img被撑爆了。system.img有啥用?为什么会撑爆?怎么避免?今天来探讨一下: 先介绍一下编译后得到的ramdisk.img,system.img,userdata.img各有什么用处 (1)ramdisk.img 一个分区影像文件,它会在kernel 启动的时候,以只读的方式被 mount , 这个文件中只是包含了 /init以及一些配置文件,这个ramdisk 被用来调用init,以及把真正的root file system mount起来。 #其实ramdisk.img的内容就是/out/target/product/generic/root目录的压缩而已。 (2)system.img 它包含了整个系统,android 的framework,application 等等,会被挂接到 "/"上,包含了系统中所有的二进制文件 #system.img是out/target.product/generic/目录下system目录的一个映射,类似与根文件系统的映像,放着android的应用程序、配置文件和字体等。 root@root-OptiPlex-380:~/lonshinetech/src/SPU_B0_R0_0/out/target/product/generic/system$tree -L 1 . |-- bin |-- build.prop |-- etc |-- fonts |-- framework |-- lib |-- usr -- xbin 重新打包system.img 具体办法 a)在android编译后生成的out目录中查找这个工具 mkyaffs2image # find out/ -name mkyaffs2image 得到=>out/host/linux-x86/bin/mkyaffs2image b)android编译后会生成system/ 这个目录,而这个目录就是用来生成system.img的 # mkyaffs2image system/ system.img 我们经常所说的撑爆了是因为客户内置的apk过多,导致system.img体积过大超出了手机的内存限制。 (3)userdata.img 将会被挂接到 /data 下,包含了所有应用相关的配置文件,以及用户相关的数据 。