在 Ubuntu 上使用 AOSP(Android Open Source Project) 編譯 android 系統
不知道是不是我關鍵字下的不對...
這東西怎麼資料那麼少...(´・ω・`)?
所以只好自己打一篇來做記錄了OTL
其實這篇大概拖了快一年了XD
這篇主要是 AOSP 的 master 的建置
為了減少除錯的時間所以在這邊直接使用乾淨的系統(。-_-。)
手邊好像也沒有多餘的機器所以直接開 VM 來做...
等預算夠再來搞一台實體機好了XD
需要的東西
1. Virtualbox 任何可以安裝 Ubuntu 14.04 x64系統的版本都好2. Ubuntu 14.04 x64 系統映像檔
3. 其實這點是打完整篇才想到要加的...基本上要有夠強大的硬體支撐才行!!
然後用預設的方式安裝系統
雖然說是預設...
但是根據上面的夠強大的硬體...
基本上有三個東西要調整...
一個叫做 CPU
一個叫做 記憶體
一個叫做 硬碟
CPU 可能的話請給到 2 個核心以上
記憶體如果可能的話請給到 8GB 以上
硬碟容量分配無論如何請不要小於 100GB ← \_(・ω・`)ココ重要!
在裝好後乾淨的 Ubuntu 系統上什麼都不要做
連更新什麼的都不要...O(>﹏<)O
然後直接在 Ubuntu 上打開終端機(alt + F2 → gnome-terminal)
在 terminal 裡照著下面的指令一行一行的敲就好...
沒有意外的話最後就會出現結果了XD
安裝必要的套件
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev lib32z1 x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils python-software-properties xsltproc libx11-dev:i386 android-tools-adb android-tools-fastboot liblz4-tool gcc-4.6 g++-4.6 gcc-4.6-multilib g++-4.6-multilib
安裝OracleJDK 和 OpenJDK
OpenJDK 是在 build AOSP 的 master 和 5.0.0 時會需要用到的$ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update && sudo apt-get install oracle-java6-installer $ sudo apt-get install openjdk-7-jdk
設定 git/repo
$ mkdir ~/bin $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo $ git config --global user.email "android" $ git config --global user.name "android"
user.email 和 user.name 的 "android"可以是任意的名稱
所以隨意就好XD
設定環境變數
在 ~/bin 路徑下新增一個環境變數檔案叫做 android-env.shsudo gedit ~/bin/android-env.sh
然後在新增的 android-env.sh 裡加入 export 敘述句
下面這四行是要打在 android-env.sh 檔案裡的!!
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 export PATH=$PATH:$JAVA_HOME/bin export ANDROID_JAVA_HOME=$JAVA_HOME export PATH=$PATH:~/bin
打完後記得存檔再關閉離開
然後要重新載入剛剛打完的 android-env.sh 檔案
所以執行下面的敘述句
$ source ~/bin/android-env.sh
也是可以直接寫到 ~/.bashrc 之類的裡面
不過這樣會變成常態性一直在讀取這個檔案
所以這邊不這麼做XD
然後到這邊建置環境就設定完了XD
再來就是要 build 整個專案了...
在 AOSP 中有許多分支
這裡只記錄 master 分支 (現時點的AOSP master 分支版本為 5.1)
如果 分支的 android 版本小於 5.0.0 (不含) 則還有其他的環境變數要設定...
可能之後可以再打一篇文章這樣XD
把 AOSP master 分支的 source 抓下來
這邊要注意的是 source 很多而且很大...所以下完指令後就可以去睡覺了...XD
$ repo init -u https://android.googlesource.com/platform/manifest $ repo sync -j8這裡的 sync 的參數 -j8 是根據現在正在執行這個指令的電腦的CPU資源決定的
可以不寫讓它用預設的方式執行也可以
8 指的是現在這台電腦的核心數
理論上越多就越快...
所以也可以給 -j16 或 -j24 之類的數字
沒那麼多的話給 -j2 或 -j4 也可以XD
建置 AOSP master 分支
再建置之前先重新讀取資源$ source ~/bin/android-env.sh $ source build/envsetup.sh
再來就是執行建置的動作啦...
$ lunch aosp_arm-eng $ make -j8至於選擇 aosp_arm-eng 則是因為現在手機大部分都是這個規格XD
其實這還有其他選項就是了...
有興趣可以直接下 lunch 指令看XD
而這裡的 -j8 和 上面的 -j8 是一樣的意思
不過個人的習慣是 8G 的記憶體會給 -j4 然後 4G 的記憶體會給 -j2
至於為什麼o(‧"‧)o...好像也沒為什麼...就只是壞習慣而已XD
然後因為 android 是個巨大的專案...
所以下完 make 指令之後又可以去睡覺了...(´▽`*)
另外題外話一下
根據網路上找到的資料是用 intel xeon 8C16T 的 CPU 配 24GB 的記憶體
建置需要花 37 分鐘的時間
然後我拿 intel i7-3820 開 VM 分資源 2C2T 的 CPU 配 4G 的記憶體
建置花了超過 6 個小時...Σ(゚д゚) エッ!?
實際上到底是多久我也不知道...XD
因為我等了 6 個小時候它還沒跑完所以就去睡覺了→_→
基本上到這邊只要 make 跑完沒有錯誤就全部結束了...
然後建置完的輸出檔案會再 out/target/product/generic 資料夾下
最重要的有 system.img、userdata.img 和 ramdisk.img 三個映像檔
一定要確認這三個檔案有沒有存在...XD
最後就是把好不容易建好的系統放到模擬器上面執行了...
模擬測試
$ emulator
嗯...就這麼一個指令而已XD
然後就慢慢等模擬器自己動作了XD
沒意外的話就會在模擬器上面看到自己建置的 Android 系統了XD
有意外的話就只好慢慢 debug 啦~~(σ≧▽≦)σ
...
其實一定會有意外啦....ε=ε=┏( >_<)┛
因為模擬器預設的資源非常少...
所以會一直 crash 或是運作不順之類的XD
其實還有很多東西要設定...
不過這篇主要是在寫環境建置
所以模擬器設定就省略不寫了XD
=====
整篇到這邊就結束了...
至於最重要的是
要怎麼把很辛苦建好的系統放到手機上執行
這好像才是花那麼多時間做上面整件事的最主要目的...o(‧"‧)o?
雖然是這麼說啦....
可是要怎麼放上去就...
嗯...有空再打另外一篇好了XD
相關來源:
android - building the system
https://source.android.com/source/building.html
AndroidのOS本体をビルドしてみよう
http://note.chiebukuro.yahoo.co.jp/detail/n185974
M Preview Downloads
https://developer.android.com/about/versions/marshmallow/download.html
Factory Images for Nexus Devices
https://developers.google.com/android/nexus/images?hl=en
CentOS7でAndroid4.4(AOSP)ビルド環境
http://qiita.com/Mask_Siva/items/cf65d9889893a7e62342
Android: ソースからシステムを構築しエミュレータで実行
http://otake.knowd2.com/drupal-rotake/?q=node/119
Android 4 (Ice Cream Sandwich) をビルドしてみる
http://www.gadgety.net/shin/tips/unix/android4.html
Ubuntu 14.04 64bit版での Android ビルド環境
http://blog.sola-dolphin-1.net/archives/4633272.html
0 件のコメント:
コメントを投稿