关于android的build系统,这篇文章写的不错,给出链接--http://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/
关于android的嵌入式开发讲解,这位大神讲的不错,给出链接----http://blog.csdn.net/mr_raptor/article/details/30112257
Android系统编译完后,在out/target/product/generic/目录下产出了三个文件:system.img、ramdisk.img、userdata.img。
- system.img:android系统的文件系统,里面包含了android系统的应用程序(apk),系统用到的各种库(jar, so)和资源,配置文件(etc目录下),系统命令(bin,usr/bin, xbin),该映像文件是由out/target/product/generic/system目录打包生成的,我们可以对这个目录里的东西进行定制化,比如,你要想让android系统默认安装一个应用程序,那么可以将要安装的apk文件拷贝到out/target/product/generic/system/app目录下。
- userdata.img:用户数据映像,里面包含有程序安装信息等,好比如是windows的C:/Program Files/目录。
- ramdisk.img:内存磁盘映像。linux内核启动起来,要挂载一个文件系统作为自己的根文件系统,里面含有Linux内核启动过程中依赖的一些程序和配置文件。ramdisk.img就是一个最小化的根文件系统,它被加载到内存中作为Android的根文件系统。该映像是由out/target/product/generic/root目录打包生成的。前面所述的userdata.img和system.img映像,在linux系统启动起来后挂载到ramdisk.img中的data,system目录下。
其实,Android手机的ROM包(通常为update.zip文件),就是主要由上述三个映像文件构成的:
ROM包文件 | 说明 |
android-info.txt | ROM版本及刷写配置信息 |
boot.img | Linux内核zImage、ramdisk.img |
system.img | Android系统映像 |
userdata.img | 用户数据映像 |
… | 其它映像 |
由于完全编译Android系统耗时很长,并且Android源码由很多模块组成,我们可以通过下面一些编译命令来减少编译时间:
编译命令 | 说明 |
make snod | 打包生成system.img,不检查依赖关系 |
make bootimage | 打包生成ramdisk.img |
mmm | 指定编译某个目录下的模块 |
上述三个命令经常在我们源码开发时使用,希望大家记住。
android在framework层实现全屏的方法:
找到framework/base/core/res/res/values/dimens.xml,在其中把Navigation的配置改成0
<!-- Height of the bottom navigation / system bar. -->
<dimen name="navigation_bar_height">0dp</dimen>
<!-- Height of the bottom navigation bar in portrait; often the same as @dimen/navigation_bar_height -->
<dimen name="navigation_bar_height_landscape">0dp</dimen>
因为这个改动只修改了framework的资源文件,编译内核,获取framework-res.apk(./out/target/product/g18ref/system/framework/) , adb push到手机的/system/framework(在这个目录下能看到原有的framework-res.apk),然后reboot就发现没有虚拟导航键了。