注:轉載或引用請標明出處 http://blog.csdn.net/luzhenrong45/article/details/9719433
去年用Ubuntu10.10成功下載並編譯Android4.0了的源代碼,見文章《Ubuntu10.10下載並編譯Android4.0》
不過,那時候,剛接觸Linux和Android不久,基本上都是百度來的教程,所以,對於Android源代碼的下載方式和編譯過程並沒有太多深入的了解,所以現在趁着Android4.3源代碼也提供下載了,重新學習一下。
首先,官方網站對於Android源代碼的下載和編譯,有極其詳盡的介紹,可以此網站自己查閱: http://source.android.com/source/building.html ,這里,我只想以自己的方式,來記錄這個過程。對於過程中遇到的問題,希望自己能夠獨立解決。
一.安裝JDK6
以前已經說過,Ubuntu自帶OpenJDK不適合編譯Android源代碼,所以需要安裝sun-jdk,其安裝配置方式可參考 《Linux安裝配置JDK6》
二.安裝Git工具
Git 是 Linux Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的分布式版本控制軟件,可以有效,高速地對項目源代碼進行管理。它不同於Subversion、CVS這樣的集中式版本控制系統。在集中式版本控制系統中只有一個倉庫(repository),許多個工作目錄(working copy),而像Git這樣的分布式版本控制系統中(其他主要的分布式版本控制系統還有BitKeeper、Mercurial、GNU Arch、Bazaar、Darcs、SVK、Monotone等),每一個工作目錄都包含一個完整倉庫,它們可以支持離線工作,本地提交可以稍后提交到服務器上。分布式系統理論上也比集中式的單服務器系統更健壯,單服務器系統一旦服務器出現問題整個系統就不能運行了,分布式系統通常不會因為一兩個節點而受到影響。
Android源代碼采用Git工具來管理,所以需要先安裝Git,它的安裝方法如下:
apt-get install git-core gnupg
三.安裝其他信賴包
sudo apt-get install 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
四. 安裝 repo
我們知道,Android是由kernel、Dalvik、Bionic、prebuilt、build等多個Git項目組成,所以為了方便開發者下載Android源代碼,Google編寫了一個名為Repo的Python的腳本來統一管理這些項目的倉庫,里面封裝了所有用來下載Android源代碼的Git命令,使得Git的使用更加簡單。
首先確保在當前用戶的主目錄下創建一個/bin目錄(如果沒有的話),然后把它(~/bin)加到PATH環境變量中
$ mkdir ~/bin $ PATH=~/bin:$PATH
通過curl下載Repo腳本,保存到~/bin/repo文件中,並賦予repo可執行權限
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo
五.下載Android源代碼
首先,創建一個空的目錄Android4.3(自命名),用來存放等一下下載的源代碼,並進入該目錄准備下載
$ mkdir ~/Android4.3 $ cd /home/guoke5/Android4.3/
初始化repo
$ repo init -u https://android.googlesource.com/platform/manifest
出現今天的第一個錯誤,如下圖所示,提示“未找到repo命令”
解決方法:將repo路徑重新加載到PATH中,然后重新執行命令,發現不會提示以上錯誤,但是彈出另一錯誤,Git "fatal: git 1.7.2 or later required",意思是要求更新Git版本到1.7.2或以下
$ PATH=~/bin:$PATH
好吧,現在我們來更新Git版本
sudo add-apt-repository ppa:git-core/ppa sudo apt-get update sudo apt-get install git
更新后Git后,進入Android4.3目錄,重新執行repo的初始化命令,
repo init -u https://android.googlesource.com/platform/manifest
上述命令執行,會刷刷出現一大堆東西,等待執行完畢,我們就可以執行下面那句命令開始下載源代碼了~~~
repo sync
然后系統會開始源源不斷地下載Android4.3源代碼了。在此另外說一聲,如果想下載其他版本的Android源代碼,只需要將剛才那句repo初始化命令替換成以下這句命令:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
其他版本號可以到這個官方網站查看: http://source.android.com/source/build-numbers.html
然后是漫長的等待,如果下載過程中斷了,執行 repo sync,繼續下載...
特意注意了一下,從開始下載,到源代碼下載完成,大概用了1個鍾,下載下來的文件夾足足有7.1G!!!
進入目錄,就可以看到里面的各個文件夾了,像大名鼎鼎的sdk,frameworks,packages,tools等等...
好吧,廢話不多說,開始編譯!!
六. 編譯Android源代碼
進入源代碼下載目錄,執行make語句開始編譯
$: cd ~/Android4.3 $: make
好吧,一開始編譯就出現錯誤:/bin/bash: jar:找不到命令
解決方法:做個軟鏈接,將防止等一下還出現類似的java javac,javadoc等命令也找不到的情況,所以,在這里也一起給解決了。
cd /usr/bin sudo ln -s -f /usr/lib/jvm/java/jdk1.6.0_41/bin/jar sudo ln -s -f /usr/lib/jvm/java/jdk1.6.0_41/bin/java sudo ln -s -f /usr/lib/jvm/java/jdk1.6.0_41/bin/javac sudo ln -s -f /usr/lib/jvm/java/jdk1.6.0_41/bin/javah sudo ln -s -f /usr/lib/jvm/java/jdk1.6.0_41/bin/javadoc
重新進入Android源代碼目錄,make,這一次真正開始編譯了,而且CPU滿載工作!!!真擔心這台普通電腦能不能勝任這任重而道遠的工作。
你見過如此霸氣的散熱么?
編譯中。。。