搭建Android開發環境

lucky嗷嗷發表於2016-04-24

  本章講解了Android移植的第一步,主要學習如何搭建Android移植的環境。因為Android底層是基於Linux核心的。所以,我們從搭建交叉編譯環境開始,包括交叉編譯環境、各種服務程式和應用程式的安裝、配置和使用。不同的體系結構、不同的操作內容甚至是不同版本的核心,都會用到不同的交叉編譯器。選擇交叉編譯器非常重要,有些交叉編譯器經常會有部分的Bug,都會導致最後的程式碼無法正常執行。

  構建開發環境是任何開發工作的基礎,對於軟硬體非常豐富的嵌入式系統來說,構建高效、穩定的環境是能否開展工作的重要因素之一。Android移植與Android應用程式開發有很大不同,具體流程如下:

(1)   下載Android核心;

(2)   熟悉開發環境和工具。交叉開發環境是Android系統移植開發的基本模擬。Linux環境配置、GUN工具鏈、測試工具甚至整合開發環境都是Android系統移植的利器。

(3)   熟悉Linux核心。因為Android系統移植開發一般需要重新定製Linux核心,所以熟悉核心配置、編譯、移植很重要。

(4)   熟悉目標板引導方式。開發板的Bootloader負責硬體平臺最基本的初始化,並且具體引導Linux核心啟動的功能。由於硬體平臺是專門定製的,一般需要修改編譯Bootloader。

  交叉編譯器完整的安裝一般涉及多個軟體的安裝,包括binutils、gcc、glibc、glibc-linuxthreads軟體。其中,binutils主要用於生成一些輔助工具,如readelf、objcopy、objdump、as、ld等;gcc是用來生成交叉編譯器的,主要生成arm-Linux-gcc交叉編譯工具;glibc主要提供使用者程式所使用的一些基本的函式庫,glibc-linuxthreads是執行緒相關的函式庫。這樣,交叉編譯環境就搭建起來了。

  Bootloader是在作業系統執行之前執行的一小段程式。通過這段小程式,我們可以初始化硬體裝置、建立記憶體空間映像表,從而建立適當的系統軟硬體環境,為最終呼叫作業系統核心做好準備。對於嵌入式系統,Bootloader是基於特定硬體平臺來實現的。因此,幾乎不可能為所有的嵌入式系統建立一個通用的Bootloader,不同的處理器架構都有不同的Bootloader。Bootloader不但依賴於CPU的體系結構,而且依賴於嵌入式系統板級裝置的配置。對於兩塊不同的嵌入式板而言,即使他們使用同一種處理器,要想讓執行在一塊板子上的Bootloader程式也能執行在另一塊板子上,一般也需要修改Bootloader的源程式。反過來,大部分Bootloader仍然具有很多共性,某些Bootloader也能夠支援多種體系結構的嵌入式系統。例如:U-Boot就同時支援PowerPC、ARM、MIPS和X86等體系結構,支援的板子有上百種。通常,他們能夠自動從儲存介質上啟動,都能夠引導作業系統啟動,並且大部分都支援串列埠和乙太網介面。

  為了驅動目標板,必須先做好Bootloader、作業系統核心及檔案系統。

相關文章