2011年10月23日 星期日

從 Android Open Source Project 下載 Android 原始碼

前一陣子因為受到 kernel.org 被駭的牽連,Android Open Source Project (AOSP) 的 git repository 也關閉了一段時間。大約二天之前 AOSP 回來了,不過網址有些許的變動,我就稍微記錄一下下載流程,以免日後忘記要怎麼弄。

先準備必要的工具


要下載 AOSP 的程式碼,你至少需要 curl、git、python 這三個程式。在 Debian 或 Ubuntu 上面你只要使用:

$ sudo apt-get install curl git python

就可以把它們弄到手。接下來我們要先設定 git:

$ git config --global user.name 你的名字
$ git config --global user.email 你的email

下載 repo 版本管理工具


接下來我們必需下載 repo 版本管理工具,我們可以在家目錄之下建立一個資料夾,並把這個資料夾加到 $PATH 裡面:

$ mkdir ~/bin
$ export PATH=~/bin:$PATH
# 備註:你可以把上面這行加到你的 .bashrc,這樣以後要用 repo 的時候就可以直接用。

然後下載 repo 這個工具:

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod +x ~/bin/repo

如果你做到這裡沒有遇到問題就可以開始下載程式碼。如果你遇到 SSL certificate problem 之類的問題可以看下面的常見問題。

開始下載 Android 程式碼


接下來就是這篇文章的重點:下載 Android 程式碼。首先我們先建立一個用來放置 Android 程式碼的資料夾:

$ mkdir ~/android-src
$ cd ~/android-src

初始化 repo 相關的設定:

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

接著 repo 會問你一些問題,通常使用預設值就可以了。最後就是按下:

$ repo sync
# 備註:你可以加上 -j2 或 -j4 平行下載。

之後經過漫長的等待,你就會有一份完整的 Android 程式碼

下一步:你可以參考另一篇文章「編譯 Android AOSP」編譯整個 Android 系統。



--------------------------------------------------

常見問題


為什麼會一直停在 Receiving Objects 且網路毫無動靜?


有時候可能因為 TCP/IP 的實作可能遇上一些意外的問題,所以會一直卡在「Receiving Objects」,可以用以下指令調整 TCP 協定的設定:

$ sudo sysctl -w net.ipv4.tcp_window_scaling=0

然後在 repo sync 的時候,只使用單執行緒:

$ repo sync -j1

為什麼會遇到 SSL certificate problem 之類的問題?


如果你遇到 SSL certificate problem 之類的問題,是因為你的系統提供的 curl 沒有內建 cacert 清冊 (也就是 https 憑證發行單位的清冊),curl 沒有辦法驗證 dl-ssl.google.com 的憑證是否正確。

你必需先行下載 cacert.pem。因為 cacert.pem 是防止中間人攻擊的重要機制,所以請務必要確保他的正確性,你可以使用 sha1sum 來檢查:

$ curl  http://curl.haxx.se/ca/cacert.pem --ipv4 > ~/cacert.pem
$ sha1sum ~/cacert.pem
286c4a22fe2ed9e3b2d958e2800a8c16d867f063  cacert.pem

然後再使用以下指令下載 repo 這個工具:

$ curl --cacert ~/cacert.pem https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

另外,我們要讓 git 使用這個清冊驗證 Google 的 repository,所以我們要執行以下指令:

$ git config --global http.sslcainfo ~/cacert.pem

參考資料

  1. cURL CA Extract
  2. Android Open Source Project: Download the Source Tree

3 則留言:

  1. repo的位置改了
    curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

    回覆刪除
  2. The slot machine options embody progressives, immediate win bonus rounds and in some cases, the slots are highly risky. This casino has a payout price of 98.26% making it our high pick for actual cash Vegas slot players. Automated Roulette Machine Strategy - Top Online Slots w88 login Casinos for 2022 #1 information to taking part in} actual cash slots on-line. Discover the best slot machine video games, types, jackpots, FREE video games .

    回覆刪除
  3. You ought to be able to|be succesful of|have the power to} discover the latest releases 메리트카지노 nicely as|in addition to} some classics and old favourites. Skill stop buttons predated the Bally electromechanical slot machines of the 1960s and 1970s. They appeared on mechanical slot machines manufactured by Mills Novelty Co. as early because the mid 1920s. Modern slot machines are controlled by EPROM computer chips and, in massive casinos, coin acceptors have become out of date in favor of bill acceptors.

    回覆刪除