1. 程式人生 > >Linux(ubuntu14.04)上編譯Android4.4原始碼的環境搭建及編譯全過程

Linux(ubuntu14.04)上編譯Android4.4原始碼的環境搭建及編譯全過程


關於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是要解壓的檔名