最近开始接触安卓设备,了解到安卓系统开机界面以及定制桌面需要修改系统源码,这种情况下就需要重新编译系统源码得到.img镜像文件,本篇文章记录从零开始编译安卓系统源码以及安卓系统内核的一种方式。

  很感谢大神写的文章提供了必要的帮助:
    安卓源码编译以及摸机器启动:
      ;

    编译源码到libwebviewchromium.so时停止很长时间发生错误:
      。

  下面说下编译过程:

    1.配置系统编译环境:

      我选择使用虚拟机内安装linux系统作为系统编译环境,虚拟机设置为处理器1核心4,内存4GB,硬盘150GB(建议在100GB以上);
      linux系统采用64位ubuntu14.04版本,并且编译linux系统内核为3.0版本,linux3.0内核下载;       linux编译内核以及使用新的内核登录系统方法。

      下面开始配置配置环境:

        ①. linux系统中分配2GB虚拟内存

dd if=/dev/zero of=/opt/vswap bs=1024 count=1024000
mkswap /opt/vswap
swapon /opt/vswap

修改vswap 为vswap1
重复以上步骤

打开fstab文件
gedit /etc/fstab
在最后一行拷贝入
/opt/vswap swap swap defaults 0 0
/opt/vswap1 swap swap defaults 0 0

        ②.配置jdk:(jdk1.6.0_31下载)
安装并配置jdk。

        ③.安装编译库

sudo apt-get install gnupg flex bison gperf libsdl1.2-dev libesd0-dev 
sudo apt-get install libwxgtk2.6-dev squashfs-tools build-essential  
sudo apt-get install zlib1g-dev pngcrush schedtool ia32-libs libncurses5-dev

        ④.降低gcc版本

sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4
sudo rm -rf /usr/bin/gcc /usr/bin/g++
sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++

          或参考:http://blog.163.com/zhaolin53636848@126/blog/static/4908666820121993234837/。



    2.编译过程中遇到的问题 :

      1.问题说明:
        build/core/config.mk:365: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com. Stop.

      在管理员模式下编译源码出现这种情况是因为没有找到jdk路径,确保profile包含jdk路径正确的情况下使用指令: source /etc/profile 。

      特别说明:大部分包含JDK6的错误都可以试用这条指令。

      2.问题说明:
        make: arm-eabi-gcc: Command not found

        编译内核时出现的错误,在源码根目录配置一下环境(从kernel退回到根目录),使用指令 source build/envsetup.sh,然后是 lunch sdk-eng。



    3.开始编译:

      我使用的源码版本是android4.4.4_r1,贴上一个可以使用的源码储存地址: 。

 

      ①.源码编译

        在源码根路径下,登录管理员模式输入指令 make,或者make -j4(编译时间大概6-8个小时),
输出out/target/product/generic/system.img表示编译成功。

      ②.内核编译

        内核源码解压后拷贝到源码文件夹内,cd kernel,登录管理员模式输入指令 make goldfish_defconfig,然后是make 或者make -j4(编译时间大概在10-30分钟)。

      编译过程中如果出现错误提示,请参考**2.编译过程中遇到的问题 **。