Android 開發環境搭建以及編譯

來源:互聯網
上載者:User

標籤:

兩種搭建編譯環境的方式,一種方法是使用者安裝虛擬機器,然後安裝基礎的Ubuntu12.04.2 系統,利用提供的工具和詳細的使用步驟,搭建編譯環境;另外一種方法是使用者安裝虛擬機器,然後直接載入 “搭建好的Ubuntu 鏡像”,使用者只需要修改一下編譯器的環境變數,就可以直接用來編譯源碼。

搭建環境的步驟:

1.1 安裝基本軟體

首先安裝虛擬機器“Vmware_Workstaion_wm”,然後使用虛擬機器安裝“Ubuntu12.04.2 初始系統”。虛擬機器和Ubuntu 初始系統迅為電子在網盤提供下載。Ubuntu 的安裝方法可以參考3.2 小節來安裝Ubuntu12.04.2 原始系統。安裝完成後進入Ubuntu 的終端,啟用root 使用者,具體操作如下:

在Ubuntu 命令列中,執行下面命令:sudo passwd root

接著在Ubuntu 的終端輸入安裝時的密碼和新密碼,Ubuntu 系統中密碼預設是隱藏的。接著登入root 使用者,具體操作如下:在Ubuntu 命令列中,執行下面命令:su root

接著輸入密碼,就可以登陸root 使用者。後面所有的操作都需要在root 使用者下面進行操作。然後在Ubuntu 安裝軟體vim 和ssh,具體操作如下:在Ubuntu 命令列中,執行下面命令:

apt-get install vim

apt-get install ssh

上面安裝的ssh 軟體,可以很方便在主機和虛擬機器上傳遞檔案,也可以通過遠程終端控制Ubuntu 系統,這裡推薦給大家使用。ssh 軟體的使用參考3.3 小節。

1.2 安裝編譯組件

交叉編譯工具

編譯的時候需要用到交叉編譯工具,我們提供的交叉編譯工具是使用者光碟片“tool-chains”檔案夾中的壓縮包“arm-2009q3.tar.bz2”將交叉編譯工具拷貝到Ubuntu12.04.2 系統的檔案夾“usr”-->“local”-->“arm”中;然後在Ubuntu 系統中將壓縮包解壓到目前的目錄下。

修改交叉編譯工具的路徑(修改環境變數)

修改交叉編譯工具路徑,需要修改環境變數,具體操作如下:

在Ubuntu 命令列中,執行下面命令:

cd /root

vim .bashrc

然後在“.bashrc”檔案中的最後一行添加如下資訊:

export PATH=$PATH:/usr/local/arm/arm-2009q3/bin

修改完成後儲存退出。

執行下列命令,更新環境變數

source .bashrc

最後,在Ubuntu 命令列中輸入命令“arm”,然後按TAB 鍵,如果在命令列中能夠看到arm 編譯器的資訊,就表明交叉編譯工具安裝成功。

1.3 安裝庫檔案、JDK 以及降低GCC 版本

我們將庫檔案和JDK 的安裝命令製作成了指令檔,使用者只要執行兩個指令碼就可以安裝庫檔案和JDK。這兩個指令碼在使用者光碟片tools 檔案夾下的壓縮包“Android_JDK.tar.bz2”中,使用者將壓縮包拷貝到Ubuntu 系統中,解壓壓縮包會組建檔案夾“Android_JDK”。

安裝庫檔案和JDK

使用cd 命令,進入解壓出來的“Android_JDK” -->“jdk6”檔案夾,運行指令檔“install-sun-java6.sh”。

具體操作如下:在Ubuntu 命令列中,執行下面的命令:

./install-sun-java6.sh

需要注意的是,這條命令執行完畢會耗時15 分鐘以上。進入解壓出來的檔案夾“Android_JDK”中運行指令碼“install-devel-packages.sh”,安裝庫檔案,具體操作如下:在Ubuntu 命令列中,執行下面的命令:

./install-devel-packages.sh

需要注意的是,這條命令執行完畢會耗時40 分鐘以上。

這裡需要注意的是,上面個的指令碼執行完畢的時候,注意一下有些庫檔案是不是沒有安裝。如果發現有庫檔案沒有安裝,有可能是網路不好或者下載源丟失。這個時候使用者使用一下更新下載源的命令”apt-get update“,然後再執行一下上面的兩個指令碼。

降低GCC 版本

使用Ubuntu 編譯Android4.0.3 需要用到Ubuntu 系統內建的GCC4.4.7 編譯器,但是安裝的Ubuntu12.04.2 版本,它的GCC 版本過高,所以這裡需將要GCC 編譯的版本降低到4.4.7。進入前面解壓的檔案夾“Android_JDK”中,會看到一個文本“update_gcc.txt”,開啟文本“update_gcc.txt”後會看到裡面有8 條命令,這8 條命令需要在Ubuntu 命令列中依次執行。在執行了這8 條命令之後,Ubuntu 系統就將gcc 的版本降低到4.4.7。需要注意的是,在執行這8 條命令時,只有第一條命令會耗時10 分鐘左右,其它的都會很快完成,而且命令要依次執行,不能有遺漏。

2  Android4.0.3 鏡像的編譯

2.1 uboot 的編譯

uboot 源碼在使用者光碟片“Android 源碼”檔案夾中的壓縮包“iTop4412_uboot_xxx_xxx.tar.gz”中。將壓縮包拷貝到Ubuntu 系統中,解壓後產生uboot源碼檔案夾“iTOP4412_uboot_xxx”。編譯uboot 還需要將一個工具檔案夾“CodeSign4SecureBoot”,這個工具檔案夾在使用者光碟片“Android 源碼”檔案夾中。這個工具檔案夾需要和前面解壓出來的檔案夾uboot 源碼檔案夾在同一目錄下。

然後就可以進行編譯了,進入uboot 源碼檔案夾,編譯uboot,具體操作如下:

在Ubuntu 命令列中,執行下面的命令:

./create_uboot.sh

編譯完成後,在uboot 源碼檔案夾中會產生uboot 的鏡像檔案“u-boot-iTop-4412.bin”。

2.2 Linux 核心的編譯

Linux 核心源碼在使用者光碟片“Android 源碼”檔案夾中的壓縮包

“iTop4412_Kernel_3.0_xxx.tar.gz”中。拷貝源碼壓縮包到Ubuntu 系統中,解壓後產生Linux核心源碼檔案夾“iTop4412_Kernel_3.0”。進入Linux 核心源碼檔案夾,編譯Linux 核心,具體操作如下:

在Ubuntu 命令列中,執行下面命令:

make

編譯完成後,在源碼檔案夾“arch”-->“arm”-->“boot”檔案夾下會產生鏡像檔案“zImage”。

2.3 Android4.0.3 的編譯

Android4.0.3 的源碼在使用者光碟片“Android 源碼”檔案夾中的壓縮包

“iTop4412_ICS_xxx.tar.gz”中。拷貝源碼壓縮包到Ubuntu 系統中,解壓後產生Android4.0.3源碼檔案夾“iTop4412_ICS”。另外需要把上一小節核心源碼“iTop4412_Kernel_3.0”和Android 源碼“iTop4412_ICS”兩個檔案夾放在同一個目錄下面。注意:要先編譯核心“iTop4412_Kernel_3.0”,然後再編譯“iTop4412_ICS”。編譯Android4.0.3,具體操作如下:

進入檔案夾“iTop4412_ICS”中,在Ubuntu 命令列中,執行下面命令:

./build_android.sh

編譯完成後在檔案夾“iTop4412_ICS”-->“out”-->“target”-->“product-->“smdk4x12”

中產生Android4.0.3 鏡像檔案“ranmdisk-uboot.img”和“System.img”。

這裡需要注意的是:第一次編譯耗時很長,與虛擬機器給Ubuntu 分配的記憶體大小以及CPU的硬體設定有關係。如果只分配512 記憶體,編譯時間可能達到4 小時以上,所以在機器允許的情況下可以盡量多的分配資源,以加快編譯速度。另外,Android4.0.3 編譯完成後,加上源碼和編譯的中間檔案,差不多要佔用18 個G 的空間。

另外還有一條命令,清除命令”make clobber“。執行清除命令後,很多中間檔案都會被清除。如果清除了中間檔案再次編譯Android,中間檔案需要再次編譯,中間檔案的編譯會花費很長時間。一般情況下,不需要執行清除命令,如果不執行清除,再次編譯Android,編譯系統會智能識別出那些沒有更改過的源檔案,省去產生中間檔案的過程,這樣就會大大減少編譯的時間。

3  Android4.2.2 環境的搭建及編譯

3.1 uboot 的編譯

Android4.2.2 系統的uboot 和Android4.0.3 系統的uboot 通用。

3.2 Linux3.5 核心的編譯

因為編譯linux-3.5 核心需要使用Android4.2.2 源碼內建的交叉編譯器,所以需要把Android4.2.2 的源碼拷貝到Ubuntu 虛擬機器。例如把Android4.2.2 的壓縮包“android-4.2.2_r1_xxxxxxxx.tar.gz”(通過網盤下載得到,xxxxxxxx 是版本日期)拷貝到Ubuntu 虛擬機器的“/home/topeet/android”目錄下,使用命令“tar -xvf android-4.2.2_r1_ xxxxxxxx.tar.gz”解壓Android4.2.2 源碼,解壓完成後得到“android-4.2.2_r1”檔案夾。接下來把Android4.2.2 的核心壓縮包“iTOP-4412_Kernel-3.5_xxxxxxxx.tar.gz”(通過網盤下載得到,xxxxxxxx 是核心的版本日期)拷貝到Ubuntu 系統中,使用“tar -xvfiTOP-4412_Kernel-3.5_ xxxxxxxx.tar.gz”解壓這個壓縮包,然後產生Linux 核心源碼檔案夾“linux-3.5”。然後使用“cd linux-3.5”命令進入Linux 核心源碼檔案夾,在“linux-3.5”目錄下找到“Makefile”檔案,使用“vi Makefile”命令開啟這個檔案,然後找到包含以下內容的行:

“CROSS_COMPILE ?=/home/cym/exynos4412/4.2/android4.2.2_JLB_PC4_CYIT/pre

builts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-”修改成前面Android4.2.2 所存放的目錄:“CROSS_COMPILE ?=/home/topeet/android/android-4.2.2_r1/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-”這裡是指定下交叉編譯器的路徑,修改完成後退出並儲存Makefile 檔案。接下來開始編譯Linux 核心,在“linux-3.5”目錄執行下面命令開始編譯核心:

make

編譯完成後,在源碼檔案夾“arch”-->“arm”-->“boot”檔案夾下會產生鏡像檔案“zImage”。

3.3 Android4.2.2 的編譯

在5.4.2 小節裡面已經把Android4.2.2 代碼拷貝到Ubuntu 系統下,並解壓產生了

“android-4.2.2_r1”檔案夾,然後使用“#cd android-4.2.2_r1”命令進入到Android4.2.2

的源碼目錄裡面,輸入下面的命令開始編譯Android4.2.2:

./create.sh

編譯完成後會在目前的目錄的“out/target/product/smdk4412”下面產生鏡像檔案:

ramdisk-uboot.img

system.img

4  Android4.4.4 環境的搭建和編譯

Android4.4.4 的編譯環境和Android4.0.3 的編譯環境一模一樣。uboot 以及核心版本也是一樣的,使用者如果編譯過了Android4.0.3,那麼Android4.4.4 將會很容易的編譯。燒寫方法和Android4.0.3 的完全一樣。使用者可以在網盤下載到Android4.4 的源碼壓縮包。解壓後可以得到Android4.4.4 和Kernel 的源碼。

4.1 uboot 的編譯

Android4.2.2 的uboot 的編譯方法,與Android4.0.3 一樣。

4.2 Linux 核心的編譯

Android4.4.4 的核心使用的版本是3.0.15,與Android4.0.3 的核心版本是一樣的。解壓後,得到檔案夾“iTop4412_Kernel_3.0”,進入該檔案夾,如所示。

編譯器也是使用的“arm-2009q3”。如果在環境變數中,預設不是該編譯器,那麼則需要如所示修改一下,修改完之後記得使用命令“source .bashrc”更新環境變數。

然後使用“make”命令編譯核心。如,編譯完成。

 

在“arch/arm/boot”檔案夾中產生鏡像“zImage”。

 

4.3 Android4.4.4 的編譯

使用者使用迅為電子提供的搭建好的編譯環境,如果能夠編譯通過Android4.0.3,那麼Android4.4.4 的編譯就很簡單了。首先要將對應的核心檔案和Android 檔案解壓到同一級目錄,如,藍框中分別是核心以及Android 源碼檔案夾。

編譯Android4.4.4,還缺少一個“javap”命令,如所示,使用命令“update-alternatives --install /usr/bin/javap javap usr/lib/jvm/jdk1.6.0_43/bin/javap

300”更新一下。

 

然後進入Android4.4.4 源碼解壓後得到檔案夾“iTop4412_KK4.4”中,使用命令“./build_android.sh”,運行一鍵編譯指令碼,開始編譯Android4.4.4。

 

如所示,編譯完成。在檔案夾“iTop4412_KK4.4/out/target/product/smdk4x12”中,產生鏡像“ramdisk.img”和“system.img”。

 

這裡還需要注意的是,Android4.4.4 源碼需要佔用較大的空間,使用者需要確認有足夠的空間才能夠成功編譯。Android4.0.3 編譯完成後總共大約佔用18G 的空間,Android4.4.4 編譯完成後總共佔用大約36G 的空間,如。

 

使用者完全按照步驟編譯錯誤,可以使用“df -l”查看一下盤符剩餘空間還剩下多少,如所示,如果是已使用100%,則是空間不足。

 

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.