Android2.3.3源碼編譯

參考:

http://source.android.com/source/initializing.html


編譯Android源碼的時候make有幾十次了吧,一度還中斷了幾天不想再去調錯誤,當時覺得各種莫名其妙的錯誤,但是當編譯通過之後,發現其實也沒那麼麻煩,關鍵要把一些環境和庫配置好。

下面整理下編譯Android2.3.3源碼的整個流程,等我下次重新編譯一次再附圖。

操作系統:Ubuntu12.04 64位


一、開發環境

1.安裝java並配置環境

我裝的版本是java1.6.0,在官網上下載

2.安裝一堆工具

sudo apt-get install git-core gnupg flex bison gperf zip curl libc6-dev lib32ncurse5-dev ia32-libs xllproto-core-dev libx11-dev g++-multilib mingw32 tofrodos python-markdown libxm12-utils valgrind \\ build-essential zlib1g-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev \\

這麼多全裝上吧,雖然不知道是不是都有用到。最煩的就是提示No such file or directory。

注:\\……\\中的軟件屬於有可能出問題的,包括名字輸入不對(l1沒分清楚),版本不對,或者版本不適用,根據提示修改就行。要特別注意的是build-essential,這個在我安裝的時候默認裝的是gcc4.7.2,可能Android2.3.3不能用這個版本編譯,後來我改裝4.4.3了,詳見http://hi.baidu.com/designhouse/item/87c3568d091752c8b17154c3


二、下載源碼

wget https://dl-太長不想打/repo

chmod a+x repo

sudp mv repo /bin/

創建一個目錄用來放android源碼,任意

mkdir xxx

cd xxx

進入自己建的文件夾準備下載

repo init -u https://android.太長/manifest -b android-2.3.3_r1

注:這裏就要指定你要下的版本,不然默認就下最新版,版本好的名字可以網上查,或者等敲完命令會列出來

repo sync

開始下載,注:輸入用戶名,郵箱,支持斷點續傳,只要不改帳號。

文件大小大概是3.1G,一般下載幾個小時。


三、編譯源碼

在下載的時間裏可以做很多事,比如配置下環境,

官網上的配置:http://source.android.com/source/building.html,雖然不知道有沒有用,不過還是照做了。

事實證明配置環境是非常重要滴,不然編譯的時候會很痛苦,以下是我的/etc/profile文件,供大家參考一下

2 #JAVA
 33 export JAVA_HOME=/home/administrator/develop/jdk1.6.0_38
 34 export JRE_HOME=/home/administrator/develop/jdk1.6.0_38/jre 
 35 export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
 36 export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
 37 
 38 #ANDROID
 39 export ANDROID_SDK_HOME=/home/administrator/develop/Android/adt-bundle-linux-x86_64/sdk
 40 export PATH=$ANDROID_SDK_HOME/tools:$PATH
 41 
 42 #NDK
 43 export NDK_HOME=/home/administrator/develop/Android/android-ndk-r8d
 44 export PATH=$NDK_HOME:$PATH
 45 
 46 #C_INCLUDE 
 47 C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/administrator/develop/Android/android-source/frameworks/base/include:/home/administrator/develop/Android/android-source/system/core/include:/usr/include
 48 export C_INCLUDE_PATH
 49 
 50 #export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc081/lib:/usr/local/gmp432/lib:/usr/local/mpfr242/lib
 51 #export LD_RUN_PATH=LD_LIBRARY_PATH
 52 


其中有安裝其他軟件時配的,具體忘了哪些是編譯android源碼必要的。

下載完源碼之後運行make -j4,編譯完後提示:

……/system.img

……/installed-files.txt


可能出現的錯誤:

error.GitError: manifest rev-list(……):…

原因:源碼文件夾有其他版本源碼

解決:刪除.repo中除repo文件夾的其他所有文件


error:'indexofkey' was not declared in this scope

原因:似乎是編譯版本不對

解決:後來改用版本gcc4.4.3(4.4.7也可以)


fatal error: asm/byteorder.h no such file or directory

原因:編譯的好幾分鐘後纔出來的錯誤...原來只是鏈接文件出錯

解決:ln -s /usr/include/x86_64-linux-gnu/asm /usr/include


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