$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" $ sudo apt-get update $ sudo apt-get install sun-java6-jdk
3.1.2 添加須要的包php
64位系統:html
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \ x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \ libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \ libxml2-utils xsltproc
對於ubuntu 10.10:java
$ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
對於ubuntu 11.10:python
$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
32位系統:linux
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \ libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \ libxml2-utils xsltproc
以上的方式能夠正常的在ubuntu下完成源碼編譯環境的設置。完成以上的步驟設置,就能夠接下來的源碼下載了。這個時候沒法去確認,只能在源碼的編譯過程當中,碰到了錯誤,再來解決問題。
android
3.2 源碼下載
P.S:有此時候,環境須要設置上網代理。這裏須要在終端裏面進行代理設置,不然是不能正常的進行下載操做。
設置代理在終端上設置:
$export http_proxy=http://username:pwd@yourproxyaddress:proxyport $export https_proxy=https://username:pwd@yourproxyaddress:proxyport #查詢是否設置成功可使用echo命令打印出剛設置的代理,或能夠正常顯示出設置的值說明,已經設置完成。 $echo $http_proxy $echo $https_proxy
3.2.1 下載repo
因爲Android源碼內容及模塊不少,谷歌使用了git的版本控制工具,並對不一樣的模塊設置不一樣的git服務器,又自行研發了repo工具,把上百的git工程,統一塊兒來。只須要一個repo文本,即可以從上百的git服務器,取到完成的Android源碼。
在用戶目錄下,建立bin文件夾,用於存放repo,並把該路徑設置到環境變量中:
$ mkdir ~/bin $ PATH=~/bin:$PATH
下載repo的腳本,用於執行repo.git
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo
$ mkdir myandroid $ cd myandroid
在上面建立的目錄下運行repo進行下載源碼:
下載主線分支,主分支裏面包含着最新修改的bugs,並未正式發出版本的最新源碼。
$ repo init -u https://android.googlesource.com/platform/manifest
下載其餘分支,正式發佈的版本,能夠經過添加-b的命令下載下來。
shell
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
以上操做初始化了一個repo客戶端,設置分支的方向。
出下如下信息,說明了已經在正常的進行客戶端下載操做。
在下載過程當中會須要填寫Name及Email,填寫完以後,選擇Y進行確認。
最後,提示repo初始化完成在所在的目錄下,這裏也能夠看到當前的目錄下有一個隱藏文件.repo/ 這個文件裏面設置着一些初始化的信息。
接下來就是代碼同步的過程了,這個過程很漫長,也須要頗有耐心。
雖然只是一個簡單的命令,即:
$ repo sync
效果以下:(若出現了new branch 、new tag說明已經在正常的同步過程了)這時只須要等待其完成,這個同步的時間會好久,由於Android的代碼所有下載下來了,也包括着其餘的分支。整個源 碼大概會有16G左右,唯有等待了,但這個時候能夠用來準備一下開發環境。
下載一個漫長的過程,在下載的過程當中,有能夠會有中斷的狀況,這時須要從新的repo sync,進行繼續的同步了。下載完成的最後,會有許多100%的下載成功的提示,
3.3.1 構建本地開發分支
主要是構建本地開發分支,在本地的開發分支上可進行添加和修改本身想要的代碼。
在源碼的根目錄下
$git --git-dir .repo/manifests/.git/ branch -a
以上這些就是分支的名稱,當但願去切換到其餘分支上的時候,這裏以切換到android-4.0.3_ri,並建立本身的開發分支爲例以下:ubuntu
$repo init -b android-4.0.3_r1
#初始化客戶端到某一分支
$repo sync
#進行同步,此時更新的速度比一開始的源碼下載要快得多了,大概個把小時可完成
$repo start myandroid4.0.3 --all
#構造本地分支,取一個分支名稱myandroid4.0.3
$repo checkout myandroid4.0.3
#檢出到本身建立的分支上。
四、開發環境搭建
4.1 開發環境搭建結構圖
圖4-1 Android源碼開發環境搭建
上圖畫出我在對Android源碼上的學習和工做上所設置的開發環境。這是目前爲此我感受比較合適的方式。
對於上面的幾點,解決如下幾點:
一、爲什麼不直接在ubuntu環境下直接去使安裝eclipse就行了?
理由: 對於我我的來講,編輯和修改代碼仍是習慣於window環境下,ubuntu裏面的環境只是個別狀況下才去進行編譯,這裏面所設計的開發環境適用於習慣基 於window下寫代碼的,若是可自己就已經習慣在ubuntu下進行開發,可直接在ubuntu裏面安裝eclipse便可。
二、爲何使用samba來映像掛載,而不是使用mount,直接把window下的目錄直接掛載到ubuntu上就行了?
理由:若是以mount的方式,把window的目錄掛載到ubuntu上,再把源碼移至掛載的目錄上,就會發現,複製或移動 的過程當中,會報出文件已經存在的現象,提示是否替換。這個緣由很簡單,windows下的文件系統對文件名的大小寫不敏感,對於它來講a.txt和 A.txt實際上是同一個文件,而對於linux系統來講a.txt和A.txt則是兩個不一樣的文件。Android源碼也正由於有這樣的同名卻大小寫一致 的狀況,因此只能支持在ubuntu環境下。這時就須要把ubuntu環境下的目錄給掛載出來,以samba掛載出來的目錄實爲ubuntu下的,因此其 文件系統是基於linux的。這樣的方便不會致使破壞源碼的現象.
三、爲什麼這裏要使用Xmanger工具。
理由:工具只是爲了提升工做效率,Xmanger工具裏面包含着不少實用的小工具,包括Xshll,Xftp等終端命令訪問和 文件操做,更方便的避免了windows和ubuntu的切換而浪費的時間。Xshell只是做爲windows下的窗體,方便窗口間的切換。
4.2 samba環境搭建
4.2.1 安裝samba與smbfs
$ sudo apt-get install samba
$ sudo apt-get install smbfs
4.2.2 建立共享的文件夾
對於網絡映射可見的文件夾目錄,放在這文件夾裏面的文件可被訪問到。
$ mkdir /home/sammor/share
$ chmod 777 /home/ray/share #設置文件夾的權限爲777
4.2.3 備份並編輯smb.conf容許網絡用戶訪問windows
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
$ sudo gedit /etc/samba/smb.conf
搜尋如下一行文字
; security = user
改成:
$ security = user
$ username map = /etc/samba/smbusers
將下列幾行新增到文件的最後面,假設容許訪問的用戶爲:nancy。而文件夾的共享名爲 share
[Share]
comment = Shared Folder with username and password
path = /home/sammor/share
public = yes
writable = yes
valid users = sammor
create mask = 0700
directory mask = 0700
force user = sammor
force group = nogroup
available = yes
browseable = yes
找到[global]把 workgroup = MSHOME 改成:
workgroup = WORKGROUP
display charset = UTF-8
unix charset = UTF-8
dos charset = cp936
上面假設新增長的用戶名爲nancy,故如今須要添加該用戶
$ sudo useradd nancy
$ sudo smbpasswd -a nancy
$ sudo gedit /etc/samba/smbusers
在新創建的文件中加入下面的一行並保存
nancy = "network username"
刪除網絡上用的賬號的命令把 -a改成-x
sudo testparm #若是顯示出以前設置的信息,即成功設置上了
sudo /etc/init.d/samba restart #有可能找不到對應的文件,但此時已經成功啓動了
4.2.4 win7/xp中建立映射網絡
計算機—>右擊「映射網絡驅動器」—>填寫虛擬機中的IP及對應的共享 的文件share,肯定以後須要填寫網絡上的賬號和密碼(即上面建立的爲nancy用戶),若是順利的話,能夠鏈接上,這時在此映射文件夾裏面,建立和修 改的文件能夠在ubuntu系統裏面看到了。
後面的三行是爲了防止出現中文目錄亂碼的狀況。其中根據你的local,UTF-8 有可能須要改爲 cp936。
4.3 源碼導入eclipse
4.3.1 設置eclipse的相關配置
進入eclipse的安裝目錄中,找到eclipse.ini文件,修改該文件中的。
-Xms40m
-Xmx256m
-XX:MaxPermSize=256m
爲能支持Android源碼查看,改成:
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
4.3.2 提取android對eclipse的支持的配置文件
從android源碼的路徑中找到
把.classpath複製到源碼的根目錄上,爲了導入eclipse做準備。
而對於android-formatting.xml、android.importorer,導入eclipse中。
打開eclipse,在eclipse中
一、 Window > Preferences > Java > Code Style.
二、 Formatter > Import to import
android-formatting.xml
.
三、Organize Imports > Import to import
android.importorder
.
4.3.2 修改.classpath
對於eclipse,每個工程都對應着一個.classpath,而android源碼中,也已經準備好了該文件。但這裏需 要對.classpath文件進行肯定每個目錄路徑是否存在,不然可能會導入工程時產生源碼的影響。由於工程還未進行編譯,幫這裏面主要不存在的路徑是 out/目錄。
4.3.3 建立工程,導入源碼
使用eclipse的java project的方式進行項目工程建立,而不是用Android project的方式(該方式會破壞源碼的結構)。
一、 File > New > java project.
二、 取工程名,並引導指定源碼存在的路徑。
三、 直接Finish進入,並等待徹底結果。
4.3.4 源碼的修改
當外面repo sync去更新碼時,須要在eclipse進行同步變化,則須要:
一、Window > show View > Navigator
二、在該視圖下面,右擊對應的工程名字
三、點擊refresh進行更新
reference:
一、android源碼:
http://source.android.com
二、samba安裝參考:
http://forum.ubuntu.org.cn/viewtopic.php?t=20852