MacBook Pro 建立 Android Source Environment (不需 Ubuntu)


由於工作會轉移到 Android BSP ,先來建立環境熟悉一下,注意此篇不需建立 Ubuntu

規格: MacBook Pro (Lion) , Mac OS X 10.7 , Xcode 4.6.1

參考資料:AOSP官網




步驟直接從 Setting up Mac OS X build environment 開始即可

1.
建立 case-sensitive disk image

首先提到 Mac OS 是 case-insensitive (不區分大小寫) 但這會造成部分 git 指令的錯誤
所以建議我們製作 case-sensitive 的 disk image

你可以使用

A.launch Disk Utility and select "New Image". A size of 25GB is the minimum to complete the build, larger numbers are more future-proof. Using sparse images saves space while allowing to grow later as the need arises. Be sure to select "case sensitive, journaled" as the volume format.

或者是

B.開啓終端機,輸入以下指令

# hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
(強烈建議指令用複製貼上)

完成後在 /User/使用者 會出現 android.dmg.sparseimage ,當掛載這個disk Image 在桌面上便會出現一個磁碟空間

預設掛載disk image後出現的磁碟空間名稱為 untitled ,可改為 android


2.
編輯 ~/.bash_profile
開啓終端機輸入

vi ~/.bash_profile

並加入以下內容
(注意 android.dmg 要看實際的名稱修改,有可能是android.dmg.sparsefile
而 /Volumes/android 中的android也是一樣,視情況修改)
# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }

提示: 操作的步驟為先按 a 進入INSERT模式,再貼上,離開時先按esc結束編輯,再輸入:wq 儲存離開


3.
安裝需要的套件

3-1.
首先安裝 Xcode ,建議 Xcode 版本需要 3.1.4(含)以上, 到 Apple Developer Site 下載
如果已經安裝的 Xcode 版本太高(e.g. 4.x),還需要 Mac OS 10.5 SDK

Mac OS X 10.5 SDK 安裝方式為:先到這裡左邊搜尋框輸入 xcode 3.1.4 並下載,下載完成後點擊 xcode314_2809_developerdvd.dmg
接著在桌面上會出現 Xcode Tools -> Packages -> MacOSX10.5.pkg ,點擊後更改安裝位置選擇 Developer ,完成後可以看到 Developer/SDKs 中多了  MacOSX10.5.sdk

3-2.
安裝 MacPorts,這部分也是照著google的提示
先把
export PATH=/opt/local/bin:$PATH
加到 ~/.bach_profile 中
接著取得 make , git , gpg packages
開啓終端機輸入
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg
如果系統是 MacOS 10.4,還要加入以下指令
$ POSIXLY_CORRECT=1 sudo port install bison

3-3.
為了消除 gmake 3.82 的bug, 建議安裝 gmake 3.81,
首先將以下指令加入 /opt/local/etc/macports/sources.conf 
file:///Users/Shared/dports
建立目錄
$ mkdir /Users/Shared/dports
移動到 /Users/Shared/dports 中,輸入
$ svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/
輸入
$ portindex /Users/Shared/dports
最後安裝 gmake 3.81
$ sudo port install gmake @3.81


4.
解除 file descriptor limit
在 ~/.bash_profile 加入
# set the number of open files to be 1024
ulimit -S -n 1024


5.
下載 Android Source Tree

5-1.
安裝 Repo
開啓終端機輸入
$ mkdir ~/bin
$ PATH=~/bin:$PATH
下載 Repo
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

5-2.
初始化 Repo

先掛載步驟1.建立的disk image,接著桌面上會出現一個磁碟空間
開啓終端機輸入指令移動到該磁碟空間中並建立一個空的目錄(WORKING_DIRECTORY)
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
(WORKING_DIRECTORY,名稱可自取)

接著輸入初始化指令(這個是下載 master 版本,如果Mac OS 版本為10.7 強烈建議選擇)
$ repo init -u https://android.googlesource.com/platform/manifest

也可以看看別的分支版本,使用 -b 指定版本(這個是下載指定版本 android-4.0.1_r1)
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
在過程中會出現輸入名字和email以及顏色測試,就按照需求輸入吧
(使用 repo 指令若出現 command not found,請輸入整個路徑如 ~/bin/repo init ....)


5-3.
下載 Android Source Tree (此下載時間相當久,3m速度大概要3~4小時)
終端機輸入
$ repo sync


6.
建立和執行

6-1.
初始化環境,終端機輸入
$ source build/envsetup.sh
6-2.
選擇 Target
終端機輸入
$ lunch full-eng
可以自由選擇輸入的參數
Build nameDeviceNotes
fullemulatorfully configured with all languages, apps, input methods
full_maguromagurofull build running on Galaxy Nexus GSM/HSPA+ ("maguro")
full_pandapandafull build running on PandaBoard ("panda")
and the BUILDTYPE is one of the following:
BuildtypeUse
userlimited access; suited for production
userdebuglike "user" but with root access and debuggability; preferred for debugging
engdevelopment configuration with additional debugging tools
6-3.
編譯
終端機輸入
$ make -j4
(4代表行程數)


7.
錯誤處理
第一次編譯會出現 strnlen 錯誤,



搜尋發現 此篇 有提到解決方法
簡單的說就是修改 ./external/elfutils/config-compat-darwin.h 中的 strnlen 方法為

#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070
static inline size_t strnlen (const char *__string, size_t __maxlen)
{
int len = 0;
while (__maxlen-- && *__string++)
len++;
return len;

}
#endif

修正以後重新編譯會得到第二次錯誤
這次的錯誤是在 ld: illegal text-relocoation 開始,google發現老外有一樣的錯誤,原因眾說紛紜,有人說也許跟 Android Source 版本不同有關,這次只好選擇下載master版本

使用以下指令來取得 master 版本(原先發生錯誤版本為 Android 4.0.1_r1)
$ repo init -u https://android.googlesource.com/platform/manifest
一樣重複下載...(3~4個小時)
$ repo sync
初始化
$ source build/envsetup.sh
選擇 Target
$ lunch full-eng
編譯
$ make -j4

編譯完成!!!
跑模擬器
終端機輸入
$ emulator

基本上建立環境並不難,只是步驟稍微多了點,請先注意本地端Mac OS SDK版本,還有在
下載 Android Source Tree 以及編譯的時候通常都要2~3個小時,時間的花費相當驚人@@

下一篇會介紹 MacBook Pro 編譯 Android kernel



0 意見:

張貼留言

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Affiliate Network Reviews