1. 程式人生 > >下載Android原始碼流程(完整版)

下載Android原始碼流程(完整版)

  要在Linux環境下操作,要在Linux環境下操作,要在Linux環境下操作~~ 不要想在Windows環境下操作,因為會有各種問題。Windows環境的童鞋又不想裝雙系統的可以跟著下面的操作,Linux的童鞋可以直接跳過看。Mac的童鞋就略過~~~

(1)配Linux環境

  在window中配置Linux虛擬機器需要以下軟體

  先安裝VirtualBox,安裝過程就不再贅述,在VirtualBox主介面點選新建,設定虛擬電腦的名字;設定的記憶體越大越好,後面在編譯Android原始碼的時候大有用處;需要120G(最好200G)以上的硬碟空間用來建立虛擬硬碟,建立完後雙擊左邊框裡面新建的虛擬機器,會跳出選擇啟動盤的對話方塊,選擇之前下載的Ubuntu映象->啟動,如圖

之後就是配置Ubuntu

(2)配置下載環境

  安裝完Ubuntu之後,進入Ubuntu桌面,需要配置Linux的軟體環境,需要以下環境

  • openJdk1.7(Android L之後推薦使用JDK7
  • git
  • repo (Python指令碼,方便使用git)
  • gcc (推薦級別4.7)

  配置jdk,開啟終端,輸入下面的命令列

$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk  // OpenJdk 7安裝:

如果不能用,可能含有多個版本,分別輸入以下切換版本

$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac

如圖,輸入對應的序列來切換

配置git

$ sudo apt-get install git

如果總是出現0% [正在等待報頭],輸入

$ cd /var/cache/apt
$ sudo mv archives archives-backup
$ sudo apt-get install ia32-libs 

配置repo

$ sudo apt-get install git-core curl //下載curl
$ sudo mkdir ~/bin//在絕對路徑下建立bin檔案,也可以指定特定的檔案 $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo//下載repo到bin下 $ chmod a+x ~/bin/repo //給repo可執行許可權

如果提示沒有許可權或者bin資料夾被加鎖可以輸入以下命令列進行解鎖

sudo chmod -R 777 路徑(資料夾或檔案)//授權許可權

輸入repo 如果顯示以下則配置成功

error: repo is not installed.  Use "repo init" to install it here.

安裝所需的程式包 (64位 Ubuntu 14.04及以上)

$ 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

Ubuntu14.4自帶的gcc是4.8版本,為了避免出問題,可以考慮降級到4.7,該版本以上不用考慮

$ sudo apt-get install -y gcc-4.7
$ sudo apt-get install -y g++-4.7
$ cd /usr/bin
$ sudo rm gcc
$ sudo ln -s gcc-4.7 gcc
$ sudo rm g++
$ sudo ln -s g++-4.7 g++

(3)下載Android原始碼

  在配置好環境之後就可以下載Android原始碼了,考慮到牆的問題,使用國內的映象。這裡推薦清華大學開源軟體映象站
  雙擊剛才下載的repo檔案,修改內容(就在檔案前幾行)

google的地址
REPO_URL = 'git://codeaurora.org/tools/repo.git'
改為清華大學的地址
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

在安裝的路徑下(即bin資料夾裡)建立一個新的資料夾用來存放原始碼或者輸入

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

配置git,便於git識別使用者

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

如果使用googlesource來下載原始碼(即沒有修改repo檔案),請輸入

$ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r3

如果使用清華的映象請輸入

$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.1.1_r3

  關於Android版本號請參考版本號列表(需要翻牆)
  初始化成功後,系統將顯示一條訊息,告訴 Repo 已在工作目錄中完成初始化。客戶端目錄中現在應包含一個 .repo 目錄(隱藏檔案),清單等檔案將儲存在該目錄下。如果無法檢視,點選Ctrl+H即可檢視

$ repo sync//下載Android原始碼

完成後會提示如下內容

如果由於某些情況斷網了,請再次執行即可

$ repo sync//下載Android原始碼

(4)驗證 Git 標記

  將以下公鑰載入到 GnuPG 金鑰資料庫中。該金鑰用於簽署代表各版本的帶批註標記。

$ gpg --import

複製並貼上以下金鑰,然後輸入 EOF (Ctrl-D) 以結束輸入並處理金鑰。

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

匯入金鑰後,可以通過以下命令驗證任何標記:

$ git tag -v TAG_NAME

(5)編譯

  如果有童靴只是對Android原始碼感興趣,可以不用編譯,編譯原始碼可以獲得對應的映象。
  注意:請確保有足夠的編譯時間(大約10小時左右,看電腦效能),不要手動斷開,否則會有各種問題
設定編譯環境

$ . build/envsetup.sh

選擇編譯目標,或者跳過,直接開始編譯

$ lunch

開始編譯

$ make //單執行緒編譯 

或者開多執行緒編譯(不是很穩定)

$ make -j4//這裡的4是CPU核數的1或2倍,不定(最快是16或32)

在編譯過程中難免會遇到許多問題,make失敗或停止後,可以使用make -k 繼續編譯,或者make -clean 將之前編譯得到的檔案清除掉,再重新編譯。
編譯完成之後 run it !

$ emulator

如果提示 emulator:未找到命令
請重新輸入

$ source build/envsetup.sh 
$ lunch 
$ emulator

之後就是等待模擬器的啟動,結果如下

相關推薦

下載Android原始碼流程整版

  要在Linux環境下操作,要在Linux環境下操作,要在Linux環境下操作~~ 不要想在Windows環境下操作,因為會有各種問題。Windows環境的童鞋又不想裝雙系統的可以跟著下面的操作,Linux的童鞋可以直接跳過看。Mac的童鞋就略過~~~

效能測試流程整版

一、 規範性能測試實施流程的意義 規範的效能測試實施流程能夠加強測試工作流程控制,明確性能測試各階段應完成的工作,指導測試人員正確、有序的開展效能測試工作,提高各角色在效能能測試中的工作效率。本次分享的效能測試實施流程是效能測試開展的”指導方針”,希望幫助您可以早日成為效能

Hadoop原始碼學習整版

經濟不行啦,只好潛心研究技術。  Google的核心競爭技術是它的計算平臺。Google的大牛們用了下面5篇文章,介紹了它們的計算設施。  GoogleCluster: http://research.google.com/archive/googlecluster.html  Chubby:http:/

最新大資料24期實戰專案 9天 附課件原始碼整版

課程目錄: 第一天: 01.傳統廣告回顧 02.幾個問題思考 03.廣告的表現形式 04.名詞解釋 05.DSP原理圖 06.DSP業務流程 07.DMP專案背景 08.DMP業務流程----重要 09.日誌格式介紹 10.需求一日誌轉parquet檔案 第二天: 01.

某課網 - Vue.js 原始碼全方位深入解析整版

第1章 準備工作介紹了 Flow、Vue.js 的原始碼目錄設計、Vue.js 的原始碼構建方式,以及從入口開始分析了 Vue.js 的初始化過程。1-1 課程簡介1-2 準備工作1-3 認識 Flow-文件1-4 認識 Flow1-5 Vue.js 原始碼目錄設計-文件1-6 Vue.js 原始碼目錄設計1

Android原始碼解析十九-->Dialog載入繪製流程

前面兩篇文章,我們分析了Activity的佈局檔案載入、繪製流程,算是對整個Android系統中介面的顯示流程有了一個大概的瞭解,其實Android系統中所有的顯示控制元件(注意這裡是控制元件,而不是元件)的載入繪製流程都是類似的,包括:Dialog的載入繪

Android原始碼解析三十-->觸控事件分發流程

前面一篇文章中我們分析了App返回按鍵的分發流程,從Native層到ViewRootImpl層到DocorView層到Activity層,以及在Activity中的dispatchKeyEvent方法中分發事件,最終呼叫了Activity的finish方法,

教你如何使用android studio釋出release 版本整版

想必還有人對如何在android studio (以下簡稱as)釋出release版本的app而狂刷百度吧?都是過來人,我很理解這種心情,百度到的基本是半成品,為什麼這麼說呢?百度一下,你就知道,好了

字符串函數---atof()函數具體解釋及實現整版

記錄 == include als 技術 整數 ast fill 跳過 atof()函數 atof():double atof(const char *str ); 功 能: 把字符串轉換成浮點數 str:要轉換的字符串。 返回值:每一個函數返回 double 值。此值

史上最全設計模式導學目錄整版

最全 content bsp 書籍 轉載 http 模式 ogr book 該文章是轉載大牛的分享。備忘學習。 http://blog.csdn.net/lovelion/article/details/17517213 GitHu上分享的一些資料 https://zh

ztree--插件實現增刪改查demo整版

mes add treenode pan tno btn tin 異步 als ztree--插件實現增刪改查demo(完整版) var setting = { async: { enabl

【劍指offer】Java版代碼整版

從尾到頭打印鏈表 .net 字符串 刪除 ron 代碼下載 逆序 鏈表 撲克 原文地址:https://blog.csdn.net/baiye_xing/article/details/78428561 一、引言 《劍指offer》可謂是程序猿面試的神書了,在面試中幫了我很

git 命令大全整版

拉取 str 修改版本 xxx 用戶 command 克隆 單個 sage Git 常用命令詳解 Git 是一個很強大的分布式版本控制系統。它不但適用於管理大型開源軟件的源代碼,管理私人的文檔和源代碼也有很多優勢。 1.Git文件操作 $ git help [command

跳出任務管理的泥沼,擁抱甘特圖的懷抱整版

寫這篇文章,我不是要黑任何一個任務管理類的App或者方法論。相反,我是一個工具控,在試用各種任務管理類App上總是不遺餘力。常見的Things 3,Todoist,Teambition,Trello,Any.do,Doit.im我都試用過。最後,我選擇了Todoist,在Todoist上,我

LL(0)語法分析演算法整版 ----編譯原理試驗

                                          &

程式設計番外篇:CLion執行第一個HelloWorld整版

CLion是個專業且強大的C/C++IDE,但是對於初學C/C++的新手,不建議使用,因為它太過強大,所以配置複雜,所以初學者老老實實用Dev或者vs就好。 話是這麼說,可是人總是喜歡新奇且高階的東西。所以就有了這篇博文。 1.下載CLion 你喜歡在哪裡下載都可以,我還是推薦官網。

1112_Spring boot Mybatis 整合整版

Spring boot Mybatis 整合(完整版) 2017年08月16日 15:59:47 LuisChen的部落格 閱讀數:369023更多 所屬專欄: springboot 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/Win

將Web專案War包部署到Tomcat伺服器基本步驟整版

1. 常識:   1.1 War包 War包一般是在進行Web開發時,通常是一個網站Project下的所有原始碼的集合,裡面包含前臺HTML/CSS/JS的程式碼,也包含Java的程式碼。 當開發人員在自己的開發機器上除錯所有程式碼並通過後,為了交給測試人員測試和

電腦基礎知識及拓展:使用Git將本地專案上傳到碼雲整版

準備工作: 1.下載Git https://www.git-scm.com/download/ 2.註冊碼雲 記住自己暱稱下面的字母,這作為我們的賬號。密碼自己心裡都知道。 在碼雲新建一個專案,我這裡是UnityWorks 3.配置使用者名稱和密碼 在任意

Springmvc後臺校驗加檔案上傳整版

後臺校驗 <!--資料驗證--> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId>