在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ 下載源碼
下載源碼
根據(jù)設(shè)備構(gòu)建
Git 資源
構(gòu)建系統(tǒng)
Android 平臺(tái) 64 位構(gòu)建指導(dǎo)
初始化編譯環(huán)境
Android 源代碼
品牌指南
已知的問(wèn)題
Repo 命令手冊(cè)
構(gòu)建內(nèi)核
Bug 的生命周期
代碼主線(xiàn)、分支和版本
使用 Eclipse
提交補(bǔ)丁
下載與構(gòu)建
參與
項(xiàng)目角色
補(bǔ)丁的生命周期
提交 Bugs
關(guān)于代碼風(fēng)格的指導(dǎo)
開(kāi)發(fā)
代碼名稱(chēng),標(biāo)簽和版本號(hào)

下載源碼

Android 的源代碼樹(shù)在 Google 托管的 Git 倉(cāng)庫(kù)中。本文主要闡述如何下載源碼樹(shù)中具體的 Android 代碼。

安裝 Repo

Repo 是一個(gè)方便在 Android 中使用 Git 的工具。想了解更多關(guān)于 Repo 的信息,請(qǐng)參閱 Developing 章節(jié)。

如何安裝 Repo:

  1. 確保在你的主目錄下有一個(gè) bin/ 目錄并且它包含在你的路徑中:

      $ mkdir ~/bin
      $ PATH=~/bin:$PATH
  2. 下載 Repo 工具并確保它是可執(zhí)行的:

    $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    $ chmod a+x ~/bin/repo

1.17 版本,repo 的 SHA-1 校驗(yàn)值是ddd79b6d5a7807e911b524cb223bc3544b661c28
1.19 版本,repo 的 SHA-1 校驗(yàn)值是 92cbad8c880f697b58ed83e348d06619f8098e6c
1.20 版本,repo 的 SHA-1 校驗(yàn)值是 e197cb48ff4ddda4d11f23940d316e323b29671c
1.21 版本,repo 的 SHA-1 校驗(yàn)值是 b8bd1804f432ecf1bab730949c82b93b0fc5fede

初始化一個(gè) Repo 客戶(hù)端

安裝完 Repo 之后,建起一個(gè)客戶(hù)端來(lái)訪(fǎng)問(wèn) Android 的源碼倉(cāng)庫(kù):

  1. 創(chuàng)建一個(gè)空目錄來(lái)存放你的工作文件。如果你使用的是 MacOS,則這個(gè)目錄需要在一個(gè)區(qū)分大小寫(xiě)的文件系統(tǒng)上??梢砸匀魏文阆矚g的名稱(chēng)命名:

    $ mkdir WORKING_DIRECTORY
    $ cd WORKING_DIRECTORY
  2. 運(yùn)行repo init更新最新版本的 Repo 該版本已經(jīng)修復(fù)了大量已知 Bug。你必須為 manifest 指定一個(gè) URL ,它指定了 Android 源碼樹(shù)里的各個(gè)倉(cāng)庫(kù)都會(huì)被存放在你工作的目錄下。

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

    要查看 "master" 以外的分支,用 -b 來(lái)指定。想查看分支列表,參閱 Source Code Tags and Builds 。

    $ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
  3. 出現(xiàn)提示時(shí),在 Repo 中配置你的真實(shí)姓名和 email 地址。要使用 Gerrit 代碼審查工具,你可能會(huì)需要一個(gè)注冊(cè)過(guò) Google 賬戶(hù)的郵箱地址。請(qǐng)確保你能通過(guò)這個(gè)郵箱地址收到消息。這將作為你貢獻(xiàn)代碼的署名出現(xiàn)。

成功初始化的時(shí)候會(huì)顯示這樣的消息狀態(tài)- Repo 已經(jīng)在你的工作目錄下完成了初始化。你的客戶(hù)端目錄下應(yīng)該會(huì)包含一個(gè) .repo 目錄用來(lái)存放像 manifest 一類(lèi)的文件。

下載 Android 源代碼樹(shù)

要將 manifest 中默認(rèn)指定的 Android 代碼樹(shù)拉取到你的工作目錄下,請(qǐng)運(yùn)行:

$ repo sync

你的工作目錄下會(huì)有對(duì)應(yīng)的工程名并存儲(chǔ)了 Android 源碼文件。這個(gè)初始化同步操作大概會(huì)需要一個(gè)小時(shí)或更多的時(shí)間才能完成。想了解更多關(guān)于 Repo sync 的信息和 Repo 的其它指令,請(qǐng)參閱 Developing 章節(jié)。

使用認(rèn)證

通常情況下,訪(fǎng)問(wèn) Android 源碼資源都是匿名的。為了防止服務(wù)器負(fù)荷過(guò)大,每個(gè) IP 地址都關(guān)聯(lián)一個(gè) quota。

當(dāng)和他們共享同一個(gè) IP 地址時(shí)(比如訪(fǎng)問(wèn)代碼倉(cāng)庫(kù)時(shí)越過(guò) NAT 防火墻),即使在正常模式下 quotas 也會(huì)被觸發(fā)(例如許多用戶(hù)在較短時(shí)段里從同一個(gè) IP 地址下創(chuàng)建新客戶(hù)端并發(fā)起同步請(qǐng)求)。

在這種情況下,可以使用授權(quán)來(lái)訪(fǎng)問(wèn),每個(gè)用戶(hù)將會(huì)使用一個(gè)獨(dú)立的與 IP 地址無(wú)關(guān)的 quota。

第一步首先是使用密碼生成器,然后按照頁(yè)面上的說(shuō)明進(jìn)行操作。

第二步是通過(guò)使用 https://android.googlesource.com/a/platform/manifest 這個(gè) manifest URL 來(lái)進(jìn)行強(qiáng)制授權(quán)訪(fǎng)問(wèn)。注意 /a/ 目錄如何進(jìn)行前綴強(qiáng)制觸發(fā)認(rèn)證。你可以使用下面的指令進(jìn)行強(qiáng)制認(rèn)證來(lái)轉(zhuǎn)化你的客戶(hù)端:

$ repo init -u https://android.googlesource.com/a/platform/manifest

排除網(wǎng)絡(luò)問(wèn)題

當(dāng)通過(guò)代理下載的時(shí)候(通常企業(yè)經(jīng)常使用),需要去用 repo 明確地指定代理:

$ export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
$ export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>

更少見(jiàn)的是,Linux 客戶(hù)端遇到連接問(wèn)題,下載到一半的時(shí)候中止(典型的就是在“正在接受數(shù)據(jù)”過(guò)程中)。據(jù)報(bào)道調(diào)整 TCP/IP 堆的設(shè)置并使用非平行的命令可以改善這個(gè)問(wèn)題。你需要 root 權(quán)限訪(fǎng)問(wèn)并修改 TCP 設(shè)定:

$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1

使用一個(gè)本地鏡像

當(dāng)使用多個(gè)客戶(hù)端時(shí),尤其是在帶寬有限的情況下,最好在本地對(duì)整個(gè)服務(wù)器內(nèi)容創(chuàng)建一個(gè)鏡像,然后從這個(gè)鏡像同步到客戶(hù)端(這樣就不需要網(wǎng)絡(luò)訪(fǎng)問(wèn)權(quán)限)。當(dāng)包含更大量?jī)?nèi)容的時(shí)候,下載一個(gè)完整鏡像和兩個(gè)客戶(hù)端分別同時(shí)進(jìn)行下載是大致相同的。

這些說(shuō)明假設(shè)鏡像在 /usr/local/aosp/mirror 里被創(chuàng)建。第一步是創(chuàng)建一個(gè)鏡像然后對(duì)自己進(jìn)行同步。注意 --mirror 標(biāo)識(shí)只可以在創(chuàng)建一個(gè)新客戶(hù)端的時(shí)候被指定:

$ mkdir -p /usr/local/aosp/mirror
$ cd /usr/local/aosp/mirror
$ repo init -u https://android.googlesource.com/mirror/manifest --mirror
$ repo sync

一旦鏡像被同步,新的客戶(hù)端就可以從中創(chuàng)建,注意一定要指定一個(gè)絕對(duì)路徑:

$ mkdir -p /usr/local/aosp/master
$ cd /usr/local/aosp/master
$ repo init -u /usr/local/aosp/mirror/platform/manifest.git
$ repo sync

最后,客戶(hù)端要對(duì)服務(wù)器進(jìn)行同步,鏡像需要對(duì)客戶(hù)端進(jìn)行同步,然后客戶(hù)端同步鏡像:

$ cd /usr/local/aosp/mirror
$ repo sync
$ cd /usr/local/aosp/master
$ repo sync

可以將鏡像存儲(chǔ)在一個(gè)局域網(wǎng)服務(wù)器上,然后通過(guò) NFS,SSH 或者 Git 訪(fǎng)問(wèn)它。同樣也可以將它存儲(chǔ)在可移動(dòng)設(shè)備上,然后在用戶(hù)或者機(jī)器直接傳遞它。

驗(yàn)證 Git 標(biāo)記

加載下面的公鑰到你的 GunPG 密鑰庫(kù)。這個(gè)密鑰用來(lái)進(jìn)行標(biāo)簽注釋并簽署發(fā)布。

$ gpg --import

復(fù)制粘貼下面的密鑰,然后鍵入 EOF(或者 Ctrl-D)來(lái)結(jié)束輸入病保存這個(gè)密鑰。

-----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-----

輸入完密鑰,你可以使用下面的指令校驗(yàn)任何標(biāo)記

$ git tag -v TAG_NAME

如果你還沒(méi)有搭建 ccache,現(xiàn)在是完成他的最好時(shí)機(jī)。