android 4.0.3最新源碼下載編譯

最新的android4.0源代碼公佈以後,相信很多人和我一樣都躍躍欲試,其實4.0的代碼下載和編譯和以前的版本差不多,但是有一些小的差別,寫下來供不明真相的新手來參考

首先,開發環境,google建議在ubuntu10.0.4下,並且最好是64位,既然是為瞭工作和學習,就盡量按照官方要求的來吧。

Python 2.5 — 2.7  ubuntu10.0.4已經默認安裝瞭,所以不需要安裝,其他環境需要安裝

JDK 6   編譯4.0需要jdk 6 ,sdk的編譯需要jdk 5

Git 1.7 or newer

如果你的ubuntu是32位的,請在源碼下載後編譯前按以下步驟修改:

下載完源碼後,修改下面四個文件:external/clearsilver/cgi/Android.mk
                                                            external/clearsilver/java-jni/Android.mk
                                                           external/clearsilver/util/Android.mk
                                                          external/clearsilver/cs/Android.mk

將其中的 LOCAL_CFLAGS += –m64
                LOCAL_LDFLAGS += –m64

修改為    LOCAL_CFLAGS += –m32
               LOCAL_LDFLAGS += –m32

在build/core/main.mk

找到  ifneq (64,$(findstring 64,$(build_arch)))

將其修改為 ifneq (i686,$(findstring i686,$(build_arch)))

如果你裝的ubuntu是最新的11.04打頭的,由於內核版本的bug可能會在編譯的最後出現頭文件丟失的錯誤比如:image_thumb,請按照以下方法修復:

repo download platform/external/qemu 22776/1  如果你是10.0.4就不要做多餘的事情瞭,如果你修復瞭,編譯出的版本可能會出現黑屏現象進入不瞭系統,切記!

編譯的環境不同,碰到的問題也會千奇百怪,如果你編譯出問題瞭請養成google和百度的習慣

  1:jdk的安裝比較簡單,就不做介紹瞭

  2:安裝依賴庫:

        64-bit:

 

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
  x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
  libxml2-utils xsltproc32-bit$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \
  libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \
  libxml2-utils xsltproc     On Ubuntu 10.10:

    $ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so     On Ubuntu 11.10:

 

   $ sudo apt-get install libx11-dev:i386 3:下載Repo$ mkdir ~/bin $ PATH=~/bin:$PATH$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo4: 創建源碼目錄:
 
$ mkdir ANDROID_SOURCE$ cd ANDROID_SOURCE5: 獲取git上的android源碼版本$ repo init -u https://android.googlesource.com/platform/manifest我們下載最新版$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.3_r1此時需要你填

寫用戶名和emailimage

 

填寫後即可執行同步命令
6:下載源碼
$ repo sync
可加參數: -jx x代表開啟多少個線程來下載源碼
源碼+repo  一共13G左右
如果中間出錯或者網絡不穩定,可以重新初始化repo,用同一個email即可實現本地git庫和服務器git庫的同步
編譯源碼

下載完源碼後進入源碼主目錄
1 :執行:
$ source build/envsetup.sh
souce命令執行的是源碼包build目錄下的envsetup文件

 image

 

可以看出這個文件裡定義瞭很多函數供編譯使用
function help()
function get_abs_build_var()
function get_build_var()
function check_product()
function check_variant()
function setpaths()
function printconfig()
function set_stuff_for_environment()
function set_sequence_number()
function settitle()
function choosetype()
function chooseproduct()
function choosevariant()
function tapas()
function choosecombo()
function print_lunch_menu()
function lunch()
function gettop
function m()
function findmakefile()
function mm()
function mmm()
function croot()
function pid()
function gdbclient()
function jgrep()
function cgrep()
function resgrep()
function getprebuilt
function tracedmdump()
function runhat()
function getbugreports()
function startviewserver()
function stopviewserver()
function isviewserverstarted()
function smoketest()
function runtest()
function runtest_py()
function godir ()

2:選擇一個target
$ lunch full-eng

 image

我們編譯後在模擬器中運行,所以選擇full

image

 

我們選擇最大的權限,也就是root後的版本,所以選擇eng
3:編譯源碼
$ make -j4
過程大概3小時
編譯完後在源碼目錄下會生成out文件夾如圖

 image

 

好瞭,可以檢驗以下我們編譯的源碼是否正常運行瞭
$ emulator
如果提示找不到命令,請初始化環境
$ source build/envsetup.sh
$ lunch full-eng

 image

 

 ok,android源碼順利完成,明天進行內核的編譯

摘自 C'est la vie

發佈留言