轉載請注明出處:http://blog.csdn.net/u011974987/article/details/50978291;
來自『_xuhao』的部落格
概述:
作為一個Android開發者,想要自己提升一個階段,想深入了解 Android 相關的知識,Activity 是工作流程是怎樣的? View 是怎樣繪制的? 怎樣修改一些系統相關的應用?等等,就得要深入Android 源代碼~是以就要先擷取Android源碼:
準備工作:
-
裝一個Ubuntu系統(http://www.ubuntu.com/download/desktop)電腦的記憶體最好有 8 G,因為編譯 Android 源碼很吃電腦記憶體,特别是在 4.4 以後的版本,電腦記憶體大點,比較保險,編譯一次源碼要好幾個小時,要因為記憶體原因,太讓人郁悶了。
ps:( ubuntu裝完後把系統軟體全都更新一下)
- 一個翻牆vpn(https://www.trueyt.com/)
編譯環境的部署:
通路: http://source.android.com/source/initializing.html
1、 Installing the JDK
Android 5.0 編譯需要 Open Java7 版本
$ sudo apt-get update
$ sudo apt-get install openjdk--jdk
Android 4.4 編譯需要 Sun Java6 版本
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java6-set-default
切換 Java 的方法 (上面 2 個根據你的需要安裝)
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
2、 Installing required packages
$ sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip
$ sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-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 /usr/lib/i386-linux-gnu/libGL.so
Notes!!不同的 Ubuntu 版本可能不能,安裝這些編譯工具可能不成功,也不用管,在你編譯的時候,可能會出錯,根據錯誤日志去解決就行了。
配置 USB 通路 (下面的都可能需要翻牆了)
$ wget -S -O - http://source.android.com/source/-android.rules | sed "s/<username>/$USER/" |sudo tee >/dev/null /etc/udev/rules.d/-android.rules;
$ sudo udevadm control --reload-rules
安裝 repo , repo 是 git 的管理工具
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
下載下傳源代碼
(我這邊添加的是内置伺服器,從我們自己的伺服器下載下傳的代碼很快,一般一個小時左右就下載下傳完了!)
- 建立一個目錄來存放 Android 源碼
$ mkdir android_source_5.
$ cd android_source_5.
- 初始化下載下傳
$ repo init -u https://android.googlesource.com/platform/manifest -b
你要同步的源碼(android-_r1)
- 在初始化時,可能要配置下git的emai 資訊:
$ git config --global user.email "[email protected]"
$ git config --global user.name "Your Name"
- Downloading the Android Source Tree同步源碼
$ repo sync
這個指令如果代理斷了需要重新執行這個指令同步代碼(也可以寫一個shell 腳本)
當控制台顯示 successful的時候恭喜你代碼同步成功了~控制台顯示如下:
編譯源代碼
進入到你DownLoad 源碼的目錄下,執行以下指令
$ cd android_source_5.
$ source build/envsetup.sh
$ choosecombo release aosp_flo eng
$ make -j4
編譯的時間是漫長的,中間還可能出錯,是以我們需要随時陪同,中間還可能需要解錯,當你看見螢幕的最下面出現 Successful 的時候,恭喜你,源碼已經編譯成功。如下圖: