一直想編譯 Android 的源碼,苦于 Mac 硬盤太小,PC 上的硬盤也只有 128G,想著機械盤編譯又太慢,最終咬牙,在淘寶入了一個 256 的SSD,裝了個 Ubuntu 14.04,然后開始搗鼓,現在記錄一下搗鼓的過程
-
Android 開發環境
-
首先是 JAVA 環境
apt-cache search openjdk //用于找到 jdk 版本,會出現一大堆列表,找到jdk,復制下名字 sudo apt-get install openjdk-7-jdk//根據上面找到的,開始安裝 java -version//測試
-
然后是 Android SDK 和 Android stuido 開發環境(這步與后面源碼編譯并無很大關系,但是還是做了,因為后期導入源碼,又要折騰一次Android studio,此處其實可以不用下載sdk,因為源碼可以編譯出sdk,開始不知道,就直接下載了)
在AndroidDevTools找到自己想要的版本,我找了Android stuido 2.0 beta6,然后下載,下載后解壓,將文件整個文件夾拷貝到自己的工作目錄下cd 工作目錄/android-studio ./bin/studio.sh
看到Android studio 運行界面,等待后,選擇 Cancel
選擇 Re-run the setup wizard on the next Android Studio startup(Recommended)
然后選擇 OK
繼續選擇右下角的 configrution
選擇 SDK Manager
點擊 Launch Standalone SDK Manager
左上角 Tools=>Options..
然后根據 AndroidDevTools 中的教程,修改sdk鏡像源
下載鏡像
-
-
拉取源碼
-
首先是
repo
工具,這是拉取谷歌家很多源碼都會用到的工具
清華鏡像,造福社會。
清華的教程其實寫的很清楚了,不過考慮到repo
可能有其他用處,我把它配置到了.bashrc
里curl https://storage.googleapis.com/git-repo-downloads/repo > ~/Tools/repo chmod a+x ~/Tools/repo sudo gedit .bashrc
末尾加上
export REPO = /home/flyer/Tools/repo export PATH=$PATH:$REPO 然后就是建立工作環境初始化倉庫 mkdir AOSP cd AOSP repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest //這里可能會讓你配置一下 git username 和 mail 地址,如果沒有 git 就安裝 git sudo apt-get install git sudo apt-get install git-core sudo git config user.name "flyer" sudo git config user.email "***@***"
考慮到 Android 版本很多,可以通過拉取manifest,獲取版本信息
git clone git://aosp.tuna.tsinghua.edu.cn/aosp/platform/manifest cd manifest git branch -al//會顯示出所有的分支,也就是android的版本
拉取需要的版本
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.1.1_r19 repo sync //開始拉取代碼,這是一個很慢的過程,不過網速還是不錯的
-
-
編譯源碼
-
安裝ccache(一個C++/C的高效編譯器)
sudo apt-get install ccache source ~/.bashrc
-
安裝第三方依賴(下面是可能會用到的依賴,我全跑了一遍,防止編譯的時候出現問題,畢竟編譯時間太長,不可能一直看著)
sudo apt-get install git-core//前面已經安裝了 sudo apt-get install git//前面已經安裝了 sudo apt-get install gcc sudo apt-get install gnupg sudo apt-get install flex sudo apt-get install bison sudo apt-get install gperf sudo apt-get install build-essential sudo apt-get install zip sudo apt-get install curl sudo apt-get install libc6-dev sudo apt-get install libncurses5-dev:i386 sudo apt-get install x11proto-core-dev sudo apt-get install libx11-dev:i386 sudo apt-get install libreadline6-dev:i386 sudo apt-get install libgl1-mesa-dev sudo apt-get install g++-multilib sudo apt-get install mingw32 sudo apt-get install tofrodos sudo apt-get install python-markdown sudo apt-get install libxml2-utils sudo apt-get install xsltproc sudo apt-get install zlib1g-dev:i386 sudo apt-get install dpkg-dev‘ sudo apt-get autoremove sudo apt-get autoclean//最后我清理了一下無用的東西
-
編譯
cd AOSP //進入源碼根目錄 prebuilts/misc/linux-x86/ccache/ccache -M 50G //設置ccache大小 . build/envsetup.sh//加載環境變量 lunch 1 //此處會出現需要選擇版本,我編譯的是虛擬機的,直接選了 1 make j2 //j4為4核心,看你電腦配置 #### make completed successfully (6:38:43 (hh:mm:ss)) #### //然后第二天睡醒,看到successfully
-
-
運行
emulator//開啟模擬器 //這中間,我由于去上班了,直接把電腦關了,導致后面直接運行 emulator 命令無效 //重新加載一遍環境即可 . build/envsetup.sh lunch 1 emulator
大功告成,特此記錄