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"