vmware通过3天的编译终于编译完安卓4.4的源码,整个过程并不顺利,所以记录下编译过程。python
编译环境搭建:linux
vmware 10.01android
1、Ubuntu 14.04 TLS 64位c++
硬盘:80G 若是编译过程当中遇到硬盘空间不够能够执行如下步骤: 一、$ vmware安装目录/vmware-vdiskmanager -x 80Gb "D:\VMware\WinXP\myUbuntu.vmdk" 二、vmware启动gparted-live-0.22.0-2-i586.iso进行分区扩容,详细请百度 内存:8G 依赖库: 一、添加ia32依赖库 $ sudo apt-get update $ sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6 二、添加google建议依赖包 $ apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-d ev:i386 zip 安装jdk,官方建议openjdk7可是编译时提示错误后来卸载后装的oracle jdk6 python建议2.3-2.7,查看版本 $ python -version 添加ubuntu交换区,不然在编译libwebviewchrominum.so时会失败 $ mkdir /swap $ cd /swap $ dd if=/dev/zero of=swapfile bs=1024 count=1029000 $ mkswap swapfile $ swapon swapfile $ swapoff swapfile $ free -m
二、下载设备驱动git
接下来须要在Android官网下载 Nexus5所须要的驱动,下载完成后,解压出来是三个.sh文件,放到Android源码目录下面,而后执行,会将相关驱动放到vender目录下面。github
PS:github上更新下来的/vendor/qcom/hammerhead/device-partial.mk为空,须要从其它资源拷贝一份回来,编译完成后才会正常加载libegl.soweb
三、编译内核shell
3.1从官网查看使用的内核版本以下:ubuntu
Device Binary location Source location Build configurationbash
hammerhead device/lge/hammerhead-kernel kernel/msm hammerhead_defconfig
$ git clone https://android.googlesource.com/device/lge/hammerhead-kernel $ cd hammerhead-kernel
3.2 配置gcc环境变量
$ export PATH=$(pwd)/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH 注:最新的内核编译要使用4.8的platform $ git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8
3.3 开始编译
$ export ARCH=arm $ export SUBARCH=arm $ export CROSS_COMPILE=arm-eabi- $ make panda_defconfig $ make
编译完成后bin文件在 arch/arm/boot/zimage-dtd目录下
3.4 从新生成boot.img
$ export TARGET_PREBUILT_KERNEL=$your_kernel_path/arch/arm/boot/zImage-dtb $ make bootimage
四、编译安卓
在安卓源码根目录下输入make便可编译,剩下就是漫长的等待....
切换到AOSP系统目录下 $source build/envsetup.sh $lunch select one type $make -j8
五、烧录到真机
$ adb reboot bootloader $ fastboot -w flashall
六、模拟器运行
#普通模拟器 $ ./usr/local/android/android-4.4.4_r1/out/host/linux-x86/bin/emulator -kernel /usr/local/android/android-4.4.4_r1/prebuilts/qemu-kernel/arm/kernel-qemu -sysdir /usr/local/android/android-4.4.4_r1/out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img #QEMU模拟器 ./usr/local/android/aosp4.4.4_r1/out/host/linux-x86/bin/emulator -verbose -show-kernel -kernel /usr/local/android/kernel/arch/arm/boot/zImage -sysdir /usr/local/android/aosp4.4.4_r1/out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img -memory 1024 -qemu -s -S #精简 .emulator -kernel xx/zimage -verbose -debug init -show-kernel -no-boot-anim -no-skin -no-audio -no-window -qemu -s -S
若是报qemu: could not load initrd 'ramdisk.img'是权限的问题,cd到out/target/product/generic目录下,执行
$ chmod -R 777 *
没有问题的话,就看到了熟悉的画面,嘎嘎。。。
单独编译image
make systemimage
全编译image
make snod
刷img
adb reboot bootloader
fastboot flash boot newboot.img
fastboot reboot
刷全部IMG
fastboot flashall
补充nexus5刷机所须要的驱动和操做步骤:
http://blog.csdn.net/luoshengyang/article/details/6564592
ps:
编译的ROM执行命令的方式
adb shell "su 0,0 ls -al"