最新的android4.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 xsltproc
32-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/repo

4: 創建源碼目錄:

$ mkdir ANDROID_SOURCE
$ cd ANDROID_SOURCE
5: 獲取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
此時需要你填寫用戶名和email
填寫後即可執行同步命令
6:下載源碼
$ repo sync
可加參數: -jx x代表開啓多少個線程來下載源碼
源碼+repo  一共13G左右
如果中間出錯或者網絡不穩定,可以重新初始化repo,用同一個email即可實現本地git庫和服務器git庫的同步
編譯源碼

下載完源碼後進入源碼主目錄 
1 :執行:
$ source build/envsetup.sh
souce命令執行的是源碼包build目錄下的envsetup文件
可以看出這個文件裏定義了很多函數供編譯使用
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
我們編譯後在模擬器中運行,所以選擇full
我們選擇最大的權限,也就是root後的版本,所以選擇eng
3:編譯源碼
$ make -j4
過程大概3小時
編譯完後在源碼目錄下會生成out文件夾如圖
好了,可以檢驗以下我們編譯的源碼是否正常運行了
$ emulator
如果提示找不到命令,請初始化環境
$ source build/envsetup.sh
$ lunch full-eng
 
ok,android源碼順利完成,明天進行內核的編譯


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章