Android源码之kernel部分的单独编译

一、引言

在Android SDK源码工程下,如果编译整个工程可能需要两三个小时,即使二次编译也要二十多分钟。而我更多的是对Android项目中的kernel做修改,如果每次都要整个编译,会很耗费时间,所以下面给大家介绍一种较为快速的编译方式,可以只编译kernel相关的源码,打包生成boot.img,然后只重新烧写这个分区,即可完成更新。

二、编译方法及技巧

boot.img文件的单独生成

一般,我们将整个Android编译好后,生成的img文件会在一下路径:
/Android根目录/out/target/protect/xxx(产品名)/
该目录下会产生boot.img、system.img、recovery.img、uboot.img、kernel等编译打包好的img文件。

此时,如果我们对kernel做了改动,想让改动生效,但因为Android其他分区的内容没有改变,不想再次编译,这是可以按照以下步骤:

1、cd 到kernel目录 执行 make clean

2、cd 到Android根目录,重命名out目录,之后可以根据不同out命令的目录名,找到编译的不同版本。

3、cd 到根目录,执行 make bootimage1,此时会重新生成一个out目录。里面的子目录与之前整编的一样,唯一区别就是在最后的输出目录中,只有kernel.img、boot.img等相关文件

4、此时,我们可以单独将boot.img烧入boot分区,如果ramdisk也没有改动,则可以只烧写kernel.img。

其他分区img文件的生成

同理,按以上步骤,使用如下命令,也可单独生成img文件
make systemimage -> system.img
make userdataimage -> userdata.img
make ramdisk -> ramdisk.img

make bootimage命令详解

使用以上命令可以很方便的单独编译出想要的img文件,但此命令的调用过程比较复杂,但里面包含了Android项目独特的编译顺序,分析一下对整个项目源码的把控很有帮助,我打算在主线中的下一章和大家详细分析!

ps:又半夜啦,最近爱情公寓5上线了,下了班得好好追一下,所以就先整理到这咯~


  1. 用这条命令可以生成boot.img,这个镜像文件中包含Linux Kernel,Ram disk,生成的boot.img只能通过fastboot进行烧写,这在只修改了Linux内核的时候有用。 ↩︎

发布了10 篇原创文章 · 获赞 8 · 访问量 5023

猜你喜欢

转载自blog.csdn.net/weixin_38019025/article/details/103980681