編輯:Android開發實例
一、Android4.0系統的下載與編譯
Android系統的下載與編譯,Google的官方網站上已經給出了詳細的說明,請參照Android的官方網址:
http://source.android.com/source/index.html
內容主要分為:
1. 准備Android下載與編譯環境
2. 下載源碼
3. 編譯源碼及內核源碼
下面我們依次來說明其步驟及注意事項。
Android源碼的編譯Google只給出了在類Unix系統,確切的說是Ubuntu及MacOS上的詳細過程,我們下面只描述Ubuntu上的編譯過程。
l 足夠快的PC機,如果有條件,最好是使用實體PC
l 內存最少1G,硬盤最少要30GB
注:也可以使用Vmware或VirtualBox等虛擬機軟件,但是編譯速度太慢,至於內存,如果小於1G,在編譯系統時可能會出錯。
我們使用Ubuntu12.04作為編譯主機系統,(官方不建議使用Ubuntu12.04版本),由於Android系統裡代碼大部分是由Java語言寫的,所以必然要安裝JDK,不過,不同的版本,對JDK的版本有不同的要求:
l 在Gingerbread(2.3.x) 版本及其之後版本,使用JDK6.0,並且使用64位系統編譯
l 在Gingerbread(2.3.x) 以前版本,使用JDK5.0,並且可以在32位系統上編譯
注:當然我們通過修改一些配置文件,在32位系統上編譯,但是不能保證編譯出來的系統將來能否不出問題。
JDK6.0建議直接從SUN公司的網站上下載:
http://java.sun.com/javase/downloads/
安裝編譯時依賴的包:
$ sudo apt-get install git-core gnupg flex bison gperfbuild-essential \
zip curl libc6-dev libncurses5-dev:i386x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
執行下面的命令:
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1/usr/lib/i386-linux-gnu/libGL.so
依次執行下面的命令:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
通過curl命令下載repo工具:
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
給repo工具加下執行權限:
$ chmod a+x ~/bin/repo
創建我們的源碼目錄:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
初始化repo工具,准備訪問google源碼倉庫:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
有的時候使用上面的命令不能連接android服務器,我們可以使用下面的命令連接:
$ repo init -u https://android.googlesource.com/a/platform/manifest -b android-4.0.1_r1
這個時候,要保證您的ubuntu能夠上網,並且能正常連接到Android服務器,在初始化完repo工具後,會讓你輸入gmail郵箱及用戶名驗證。
通過執行下面的命令,開始下載Android源碼:
$repo sync
如果你的PC機足夠給力,可以在命令後面加上–jn,n表示多個線程同時下載,可以提高下載速度。
然後是漫長的等待,Android4.0.1的源碼大概有6GB左右,一般1~2個晚上的時間。
有的時候,網絡可能會斷,我們可以使用下面的腳本來進行下載,當連接出錯時,會自動下載。
#!/bin/bash
PATH=~./bin:$PATH
repo init-u https://android.googlesource.com/a/platform/manifest-b android-4.0.1_r1
repo sync
while [ $? = 0
]; do
echo“ **Error: sync failed, re-sync again”
sleep 5
repo sync
done
前面所述的下載步驟是Google放出一官方版本的Android代碼,它裡面通常只有模擬器和部分和Google有合作關系設備的源碼,如果要想編譯一個目標設備的Android4.0.1系統,我們肯定要對其進行定制,不過有一些知名的設備生產廠商或第三方廠商,也會開源針對自己設備的Android系統,如:三星,高通等,比較專業的,網址如下:
www.linaro.org
linaro網站主要是ARM的芯片的最新Android解決方案,如:基於三星獵戶座芯片的origen開發板,基於TI的OMAP系統芯片的PandaBoard板,基於Nova A9500 ARM 雙核Cortex A9的snowball開發板等。
如果從上述網站上下載源碼,要根據上述網站的說明進行相關操作。
Google在開發Android系統的同時,使用qemu開發了針對每個版本的一個模擬器,這大大降低了開發人員的開發成本,便於Android技術的推廣。qemu是一個開源的模擬處理器軟件,而Google使用qemu模擬的是ARM926ej-S的Goldfish處理器,如果開發人員在沒有目標開發板的情況下,要對硬件進行操作的話,必然要去操作Android底層的驅動,我們可以使用模擬器的內核源碼。
Ø 下載Goldfish內核源碼
首先進入到Android的源碼目錄,創建源碼目錄kernel:
$ cd WORKING_DIRECTORY
$ mkdir kernel
從Android的遠程源碼倉庫下載源碼:
$git clone http://android.googlesource.com/kernel/goldfish.git
當然,如果你要編譯指定目標平台的kernel的話,也可以從指定的倉庫裡下載,官方給出了下列處理器的kernel:
$ git clone https://android.googlesource.com/kernel/common.git
$ git clone https://android.googlesource.com/kernel/exynos.git
$ git clone https://android.googlesource.com/kernel/goldfish.git
$ git clone https://android.googlesource.com/kernel/msm.git
$ git clone https://android.googlesource.com/kernel/omap.git
$ git clone https://android.googlesource.com/kernel/samsung.git
$ git clone https://android.googlesource.com/kernel/tegra.git
大概幾十分鐘後,下載完了,如下圖所示:
在kernel目錄下產生一個goldfish目錄,進入到該目錄下:
$ cd goldfish
$ ls -al
通過ls–al命令查看當前目錄,可以看到隱藏的.git。
通過git branch –a來查看所以分支:
$ git branch -a
通過git checkout來得到源碼:
$ git checkout remotes/origin/android-goldfish-2.6.29
如下圖所示,當前目錄下出現了Linux內核源碼的目錄結構:
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩