安裝Ubuntu
本人使用的windows系統,因此使用Oracle VM Virtual Box虛擬機安裝Ubuntu系統,Ubuntu系統本人選擇的是Ubuntu14.04。
1、下載Oracle VM Virtual Box https://www.virtualbox.org/wiki/Downloads 根據各自的系統下載對應的版本。
2、下載Ubuntu系統 http://www.ubuntu.com/download/desktop 本人選擇的是 Ubuntu 14.04.4 LTS 64bit。
3、如何使用Oracle VM Virtual Box安裝Ubuntu,本人就不在做過多的贅述了,不明白者請查詢相關資料。
配置虛擬機共享文件夾
爲了使下載的Android源代碼能在Windows中使用SourceInsight
打開,所以需要創建Windows共享文件夾,在Ubuntu中讓源代碼下載在共享文件夾中,或者讓Ubuntu共享代碼下載的文件夾,在Windows中訪問。本文以第一種方式爲例闡述。
此設置需要在關閉Ubuntu虛擬機的情況下設置。設置完成之後,打開Ubuntu系統發現沒有權限去訪問這個共享文件夾,解決方案是把當前用戶加到一個叫
vboxsf
的組中,執行指令
sudo usermod -a -G vboxsf <你的用戶名>
掛載的共享文件夾在/media
下
這裏本人使用了
SecureCRT
SSH遠程連接了Ubuntu
sudo apt-get install openssh-server // 安裝SSH服務
安裝必要的工具
1、git版本控制工具
sudo apt-get install git
配置git
git config --global user.email "<你的郵箱>"
git config --global user.name "<你的名字>"
2、curl,官方一點的說法就是開源的文件傳輸工具。類似迅雷,或者wget
sudo apt-get install curl
3、 安裝repo,Android使用Git作爲代碼管理工具,開發了Gerrit進行代碼審覈以便更好的對代碼進行集中式管理,還開發了Repo命令行工具,對Git部分命令封裝,將百多個Git庫有效的進行組織。
新建一個bin目錄
mkdir ~/bin
將~/bin
目錄添加到PATH中,編輯.bashrc
在最後添加
PATH=$PATH:~/bin
下載repo
curl https://storage-googleapis.lug.ustc.edu.cn/git-repo-downloads/repo > ~/bin/repo
添加可執行權限
chmod a+x ~/bin/repo
使用repo下載Android系統源碼
1、cd
到共享文件夾
新建一個文件夾存放Android源碼
mkdir android && cd android
初始化工作目錄,默認爲master
分支
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
初始化工作目錄,並指定分支
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b <branch>
branch可查看網址
https://source.android.com/source/build-numbers.html#source-code-tags-and-builds [需要翻牆]
附上一些較新的系統分支
Build | Branch | Version |
---|---|---|
M5C14J | android-6.0.1_r31 | Marshmallow |
LMY49J | android-5.1.1_r37 | Lollipop |
KTU84Q | android-4.4.4_r2 | KitKat |
如果想下拉並切換到Android 4.4.4,可以執行一下指令
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-4.4.4_r2
如果在初始化的時候遇到以下問題
這是一個Virtual Box爲了安全禁止了鏈接的錯誤,解決方案如下,請在關閉虛擬機的情況下進行,
Windows 下
cmd
進入到Virtual Box的安裝目錄鍵入
VBoxManage setextradata <YOURVMNAME> VBoxInternal2/SharedFoldersEnableSymlinksCreate/<YOURSHAREFOLDERNAME> 1
<YOURVMNAME> = 虛擬機的名字
<YOURSHAREFOLDERNAME> = 設置共享的名字
請注意大小寫,例如
設置完成後,查看有沒有設置成功
VBoxManage getextradata <YOURVMNAME> enumerate
初始化之後,目錄下面多了一個
.repo
隱藏文件夾,查看其初始大小2、下拉代碼
repo sync
repo sync 下載最新本地工作文件,同步 repository 中的代碼。 可以指定需要更新的project , 如果不指定任何參數,會同步整個所有的項目。如果是第一次運行 repo sync, 則這個命令相當於 git clone,會把 repository 中的所有內容都拷貝到本地。如果不是第一次運行 repo sync, 則相當於 更新和自動合併動作,repo sync 會更新 .repo 下面的文件。 如果在merge 的過程中出現衝突, 這需要手動運行 git rebase --continue
防止中途人離開出錯,可以使用以下腳本
#!/bin/bash
echo "======start repo sync======"
repo sync
while [ $? == 1 ]; do
echo "======sync failed, re-sync again======"
sleep 3
repo sync -j4
done
repo sync
後面可以加個-j<數字>
參數來加快倉庫克隆,如:
repo sync -j8 // 默認是4
同步時間因人而異,我大概掛了兩三個小時
構建編譯環境
對於Gingerbread (2.3.x)之後的系統需要64位的操作系統,老的系統可以在32爲的機器上編譯
1、安裝JDK
每個Android系統對於JDK的要求是不一樣的,當前Android Open Source Project (AOSP)master分支上需要Java 8,在Ubuntu上可以安裝OpenJDK。
其他分支對於JDK的要求 Java JDK:
Java 7: for Lollipop through Marshmallow
Java 6: for Gingerbread through KitKat
Java 5: for Cupcake through Froyo
這裏已編譯KitKat爲例,下載JDK6,由於官網下載需要填寫賬號信息,因此這裏給出一個百度雲的鏈接 http://pan.baidu.com/s/1nuo3XNj 下載完成後,記得添加到環境變量
2、 下載編譯所需工具
Ubuntu系統版本是14.04的,具體的版本需要安裝哪些工具可以查詢 https://source.android.com/source/initializing.html
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
正式編譯
1、設置編譯環境變量
初始化環境變量
source build/envsetup.sh
或者
. build/envsetup.sh
2、選擇編譯目標
lunch aosp_arm-eng
類型說明
user limited access; suited for production
userdebug like "user" but with root access and debuggability; preferred for debugging
eng development configuration with additional debugging tools
3、使用ccache
加快編譯的東西,建議大小 50-100G
export USE_CCACHE=1
export CCACHE_DIR=/<path_of_your_choice>/.ccache
prebuilts/misc/linux-x86/ccache/ccache -M 50G
4、編譯
make -j<你CPU的核心數乘以2> 如:make -j8
經過漫長的編譯時間
5、模擬器運行
直接在控制檯運行,在編譯的工程中此命令或自動添加到環境變量中
emulator
模擬器運行起來後,即可看到剛編譯好的image
官方編譯教程 https://source.android.com/source/index.html [需翻牆]