Ubuntu上編譯Android過程

來源:互聯網
上載者:User

android的原始碼下載的官方網站是:http://source.android.com
原始碼的下載說明頁面是:http://source.android.com/download

其實英文好的朋友大可不必看偶在此羅嗦,直接follow google的說明就行了,一切都很簡單。

下面就把android platform在slackware 12.0上面的下載、編譯過程匯總一下:

(1)當然了,需要安裝slackware 12.0或者更高版本的linux發行版,直接選擇“full”模式,完整安裝。

(2)確認環境是否達到了要求,你可以在linux下面建立一個賬戶,然後在賬戶的目錄下面查看是否滿足如下的要求:
a)git (1.5.4或者以上版本,slackware 12.0本身就是1.5.5的)
b)python (2.4或者以上的版本,slackware 12.0本身應該是2.5的)
c)jdk5.0以上的版本,這個slackware 12.0沒有,slackware只有java的運行環境而已,於是登入:
http://java.sun.com/javase/downloads
下載一個即可,我下載的是jdk5.0 update 10的版本,理論上應該越高越好吧。
然後,就用chmod a+x jdkxxxxxxx.bin,然後運行,安裝到你的機器上即可。
(註:當然了,也可以直接su成root把安裝包弄到/usr/local目錄下面去)

然後有一個網路方面的設定需要注意,運行如下程式:
/usr/local/jdk-xxxxxxx/bin/ControlPanel
選擇在network裡面選擇setting,然後把連線類型設定為Direct Connection。

(3)建立工作目錄,進入工作目錄,建立bin目錄:
mkdir ~/works
mkdir ~/works/android_dev
cd ~/works/android_dev

mkdir bin

(4)下載安裝repo版本管理工具
curl http://android.git.kernel.org/repo > ~/works/android_dev/bin/repo
cd bin
chmod a+x repo

(5)開始準備下載android
cd ~/works/android_dev
./bin/repo init -u git://android.git.kernel.org/platform/manifest.git
通常情況下會出現error提示(如果是以前沒有建立過repo賬戶的話),這個不要緊,忽略掉它好了。

(6)配置repo賬戶
git config --global user.email "[email=xxxxx@xxxxxxx]xxxxx@xxxxxxx[/email]"
git config --global user.name "xxxxxx"

(7)開始下載android platform的原始碼
repo sync
這個操作會持續一段時間,看網速了;google上面說的原始碼佔用2.1G的硬碟空間,但似乎沒有那麼大,只有900M左右。

(8)好了,現在準備一下環境變數
最好在.bashrc或者在/etc/profile檔案中添加環境變數定義:
export ANDROID_JAVA_HOME=$JAVA_HOME
需要logout,再login一下,然後用:
echo $ANDROID_JAVA_HOME
命令來確認一下環境變數是否已經生效

(9)修改一個小“bug”
理論上在ubuntu上面可以直接開始編譯了,但是在slackware上似乎還需要手工修改一個編譯指令碼上的bug,找到如下檔案:
~/works/android_dev/external/sqlite/dist/Android.mk
找到下面這一行:

ifneq ($(strip $(have_readline)),)
LOCAL_LDLIBS += -lreadline
endif

這裡只有一個-lreadline,對於slackware來說就不夠了,編譯的時候會出現libreadline.so:undefinedreference 'PC'之類的錯誤。修正的方法很簡單,就是直接在這一句的後面加上-lncurses,改正後應該是這個樣子的:
LOCAL_LDLIBS += -lreadline -lncurses
好了,然後就可以開始放手編譯了。
(10)編譯
make
好了,然後就可以出去晃晃,喝杯咖啡了(足夠你喝很多很多杯的咖啡)。
編譯完畢以後,會發現在代碼目錄下多了一個目錄:
~/works/android_dev/out
這就是產生的結果了,此時不要著急,需要先再設定一下環境變數方法同(8):
export ANDROID_PRODUCT_OUT=/home/wayne/works/android_dev/out/target/product/generic
設定完了以後,需要logout,再login一次才可以喔,更新環境變數。
(11)開始驗證產生的結果
進入android_dev/out/host/bin/目錄下,然後運行:
emulator --debug-init -skin QVGA-L [斷行符號]
應該看到以下的畫面(第一次開啟的時候,應該還有一個向google反饋的一個對話方塊,按下確定即可):
{
function onmouseover()
{
function onmouseover()
{
function anonymous()
{
showMenu(this.id, 0, 1)
}
}
}
}" id="attach_782"> 

a.png (159.76 KB)2008-11-21 22:48

到了這一步,恭喜恭喜!呵呵,基本上已經編譯通過了,要想編譯成arm板子上可以跑的版本還需要進一步修嘎android的編譯指令碼才可以。具體的操作,就不在這裡羅嗦了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.