為了能夠同時開發iPhone
應用程序和Android
應用程序,我將所有的開發環境都集成到了自己的Macbook
上,雖然用Macbook
開發普通的Android
應用程序沒什麼問題,但是你要是想用Eclipse
浏覽和編譯Android
源代碼並且對其SDK
進行調試,就是很麻煩的事情了。通過Google
發現絕大部分Android
源代碼的編譯和開發環境都是在Ubantu
系統上,雖然Android
官網提供了在MacOS X
上編譯源碼的方式,但是嘗試了多次總是發現有問題。
剛好這段時間Android
源碼網站被黑,終於找了一個方法能夠下載到完整的代碼,於是就借此機會再次嘗試一下編譯源碼,同時在Eclipse
裡面調試成功,記錄下來整個過程方便以後查閱。
一.
設置MacOS X
編譯環境
這一點是根據Android
官方網站提供的方法來設置的,我這裡只做了一些翻譯和解釋工作。我自己的Macbook
已經升級到了Lion
,對於操作系統配置什麼就不用去擔心了。直接上吧。
1.
創建一個大小寫敏感的磁盤鏡像文件
由於編譯Android
源代碼需要將代碼存放在大小寫敏感的磁盤當中,所以我們需要首先創建一個大小寫敏感的磁盤鏡像文件(如果你的磁盤已經是大小寫敏感的,則省略這個步驟,直接進入步驟2
).
進入應用程序/
實用工具/
磁盤工具,選擇文件->
新建->
新建空白映像:
其中名稱可以隨意,大小可以選擇自定義30G
,格式選用MacOs
擴展(區分大小寫),映像格式選擇稀疏磁盤映像,這樣文件的大小會隨著文件的多少而增長,不用一上來就搞30G
那麼大,其它都是默認選項。
同時,你還可以通過命令行方式生成該磁盤鏡像:
$hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 30g /
path-to-image
/AndroidDisk.sparseimage
生成的硬盤鏡像文件名就是
AndroidDisk.sparseimage了。似乎創建完以後OS
會自動把這個鏡像加載上去,掛載點是/Volumes/android
,其中android
就是上面我們為磁盤鏡像設置的名稱
。
另外也可以將如下一行代碼加入到~/.profile
當中,function mountAndroid { hdiutil attach /
path-to-image
/AndroidDisk.sparseimage -mountpoint /Volumes/android; }
這樣以後每次用mountAndroid
命令就行了。
2.
安裝所需要的包
1
)首先你要安裝的就是Xcode
,由於我的機器本身就是用來開發iPhone
應用程序的,所以我的Xcode
是最新的版本,如果你沒有Xcode
,可以到蘋果的官網注冊一個appleid
,然後可以免費下載最新的Xcode
工具和MacOS SDK
。
2
)從macports.org
安裝MacPorts
工具
安裝MacPorts
之前需要確認環境變量PATH
中,/opt/local/bin
出現在/usr/bin
之前,可以運行一下這行來確認:
$echo $PATH
否則,就將如下代碼加入~/.profile
當中。
export PATH=/opt/local/bin:$PATH
3
)從MacPorts
安裝make,git, and GPG packages
:
$POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg
4
)將gmake3.82
還原到3.81
gmake3.82
版本存在一個Bug
,所以我們要將其還原為3.81
版本。
$sudo vim /opt/local/etc/macports/sources.conf
然後在rsync
那行的上面一行加上:
file:///Users/Shared/dports
然後按照下面的步驟依次執行:
$mkdir /Users/Shared/dports
$cd /Users/Shared/dports/
$svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/devel/gmake/
$portindex /Users/Shared/dports
$ sudo port install gmake @3.81
執行完成後,檢查一下gmake
的版本:
$gmake –version
GNUMake 3.81
5
)修改文件標識符限制
於是最後下載Android
源碼前的最後一步就是,修改文件標識符限制:
由於MacOS
默認將同時打開的文件標識符數量限制得太小,並行編譯處理時可能會超出這個限制。所以在 ~/.profile
裡加上這麼一段:
#set the number of open files to be 1024
ulimit -S -n 1024
二.
下載gingerbread
源代碼
Android
源代碼網站android.git.kernel.org
已經被黑了很長一段時間,後來在網上另外找到一網站提供源代碼下載。
1.
創建~/bin/
目錄
$mkdir ~/bin
$PATH=~/bin:$PATH
2.
安裝repo
$curl http://git-repo.googlecode.com/files/repo-1.12 > ~/bin/repo
3.
設置repo
可執行權限
$chmoda +x ~/bin/repo
4.
修改~/bin/repo
文件將第五行
REPO_URL='https://code.google.com/p/git-repo/'
改為
REPO_URL='http://code.google.com/p/git-repo/'
5.
新建目錄gingerbread
,並進入該目錄
$mkdir android_gingerbread_src
$cd android_gingerbread_src
6.
執行repoinit
$repo init -u git://Android.git.linaro.org/platform/manifest.git -bgingerbread
7.
找到android_gingerbread_src
目錄中的.repo
下面的manifest.xml
文件,該文件只是一個鏈接,實際上是manifest
目錄下面的default.xml
文件,將
fetch="git://Android.git.kernel.org/"
改為
fetch="git://Android.git.linaro.org/"
8.
回到android_gingerbread_src
目錄下,執行reposync
$repo sync
這一步需要很長時間,喝杯茶等吧。