Linux(ubuntu14.04)上編譯Android4.4原始碼的環境搭建及編譯全過程
阿新 • • 發佈:2018-12-29
關於Linux(ubuntu14.04)上編譯Android原始碼的環境搭建詳細過程都是在sublime text中編輯好的,無奈,這次的資料丟失讓我不得不重新來回想手打一次了。可能很多細節問題,這次重新編輯文章時不會記得那麼清晰了,還請有問題的朋友在下面留言給我就好了。
1.下載並安裝jdk6注意,版本一定要是jdk6,其他版本都會有問題。
網上流傳的方法大都是apt-get install來安裝jdk,實際操作證明這樣是不行的,下面給出個下載jdk6的地址
https://jdk6.java.net/download.html 在這裡根據自己機器配置情況選擇自解壓檔案(self-extracting)就好了
上面下載得到jdk-6u38-ea-bin-b04-linux-i586-31_oct_2012.bin檔案,改變屬性使其擁有可執行許可權。
./jdk-6u38-ea-bin-b04-linux-i586-31_oct_2012.bin即可安裝
2.Linux配置jdk的環境變數
執行命令sudo gedit /etc/environment
在環境變數檔案的PATH中追加自己1.中jdk目錄的路徑注意到bin目錄下
例如:/usr/local/java/jdk1.6.0_38/bin
並增加CLASSPATH和JAVA_HOME兩個環境變數
例如:
CLASSPATH=.:/usr/local/java/jdk1.6.0_38/lib
JAVA_HOME=/usr/local/java/jdk1.6.0_38
3.更新環境變數使其生效
執行命令:
sudo source /home/yourloginname/.bashrc
4.設定Ubuntu下預設的jdk
因為ubnuntu中有預設安裝的openjdk,但我們編譯Android原始碼是需要jdk6的,所以需要設定預設成jdk6
sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.6.0_38/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.6.0_38/bin/javac 300
update-alternatives --config java
此時選擇jdk6即可
5.測試jdk環境變數是否正確配置
java -version
若能看到自己安裝的jdk6的版本號則說明jdk環境變數已經配置成功
6.預先要安裝的其他軟體
說明下,為保證編譯過程中不老是缺少某些軟體而中斷,所以我們一定要做好準備工作,不打任何一場無準備的仗。
網上很多前輩都已經給出來了不少要提前安裝好的軟體,下面我把它們集中整理出來。
sudo apt-get install build-essential
sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install libc6-dev
sudo apt-get install patch
sudo apt-get install texinfo
sudo apt-get install libncurses-dev
sudo apt-get install git-core gnupg
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install gperf
sudo apt-get install libsdl-dev
sudo apt-get install libesd0-dev
sudo apt-get install libwxgtk2.6-dev
sudo apt-get install build-essential
sudo apt-get install zip
sudo apt-get install curl
sudo apt-get install ncurses-dev
sudo apt-get install zlib1g-dev
sudo apt-get install valgrind
sudo apt-get install python2.5(該軟體我沒有安裝成功,最後也沒出什麼問題)
sudo apt-get install libgtk2.0-0:i386
sudo apt-get install libpangox-1.0-0:i386
sudo apt-get install libpangoxft-1.0-0:i386
sudo apt-get install libidn11:i386
sudo apt-get install gstreamer0.10-pulseaudio:i386
sudo apt-get install gstreamer0.10-plugins-base:i386
sudo apt-get install gstreamer0.10-plugins-good:i386
sudo apt-get install gstreamer0.10-ffmpeg:i386(該軟體我沒有安裝成功,最後也沒出什麼問題)
sudo apt-get install libxml2-utils
sudo apt-get install xsltproc (未測試必要性)
再加個說明:上面的軟體中最後幾個以i386是因為一個錯誤(具體什麼錯誤現在實在記不起來了),錯誤原因就是需要安裝ia32-libs的軟體包64位Linux(Ubuntu)上編譯Android原始碼時還需要一個32位Linux的包,所以需要這個ia32-libs的支援包,但這個ia32-libs的軟體包在網上根本沒有找到,也沒發現實際可用的解決方案,但從Ubuntu官網上來看,這個ia32-libs其實就是若干軟體包的合集,所以下載安裝其中的那麼幾個軟體包就可以達到我們的目的。
7.正式編譯Android原始碼
做了那麼多的準備工作,現在終於可以做正事了。根據Android官網的說法,編譯Android原始碼執行下面三個命令即可
①source build/envsetup.sh
②lunch
此時要選擇一個編譯平臺
③make -jn
這裡的n注意取值,網上一般說法是CPU核數的兩倍,還有一說是CPU核數加1。到底哪個更準確我也沒有驗證。
但要值得提醒的是,雖然n用一個大的值會使編譯速度加快,但如果n取值過大,編譯是會報錯的。
如果實在不確定n應該用什麼值,那就直接用make命令吧。
從編譯開始到編譯結束,這個時間還是很漫長的,我是在虛擬機器上搭建的Ubuntu14.04,分配的記憶體是2G,直接用的make命令,第一次編譯時,是從9:30開始編譯,17:00才編譯完全結束的。如果機器配置更好些,或用Ubuntu實際機器編譯耗時應該會少些。
至此,Linux(ubuntu14.04)上編譯Android原始碼的環境搭建及編譯全過程已經結束了。
最後在贈送一個Ubuntu上安裝7z軟體包的命令及使用方法
安裝7z:apt-get install p7zip-full
使用7z:7z x file file是要解壓的檔名