爲nexus5編譯ubuntu14.04TLSx64(android4.4.4 r1+kernel)

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"

相關文章
相關標籤/搜索