2008年11月3日 星期一

如何在 Windows 平台上下載 Android 的原始碼?

How to download Android source code on Windows?

update: 2012/2, 現在 SDK Manager 已支援在該介面中下載 Android 源碼。限 API 14+

Google 依照他原先的承諾,終於在 2008/10/21 開放 Android 的原始碼。你現在,就可以到 Android Open Source Project 官方網站,下載他的原始碼。原始碼的部份約有 2.1G bytes,編譯完後的大小約 6G bytes。

現在問題來了,目前下載及編譯都只支援 Linux 和 Mac 這兩個作業系統。編譯的部份只支援 Linux,這還可以理解。怎麼連下載都不支援 Windows 呢?像我,現在用的是 Windows,而我的目的,只是想下載及參考他的原始碼,並不想編譯他。

摸索了一陣子,終於打通這個環節。現在,我在 Windows 上也可以隨時下載部分或全部的原始碼。現在,就將我的經驗分享給有相同需求的你。

幾乎每個 open source 都會用版本控制系統,來讓開發者下載或上傳程式碼。因此,只要可以在 Windows 上執行版本控制系統,下載應該就沒問題了。

一般用的版本控制系統是 CVS,也有不少人用 SubVersion,像 Google 自己的 Open Source Programs,用的就是 SubVersion。不過這次 Android 用的版本控制系統,是我第一次聽到的 Git。所幸這個 Git 有 Windows 的執行檔。

首先,你先到 http://code.google.com/p/msysgit/downloads/list 上下載 Git-xxx.exe,我剛下載的是 Git-1.6.0.2-preview20080923.exe 這個檔案。

下載下來後,直接按確定到底,就可以完成安裝。裝完後,執行他的 Git Bash 程式。你會看到像是下面這樣的命令列視窗。其實,這就是個和 Linux 上相同的 bash,不少 Linux 命令都有,連 Perl 也找的到。不過,最重要的是,他整合進 git 這個命令。

接著,用 cd 命令,進入到你要下載 Android 原始碼的目錄後,再執行 git clone <repository> 命令,就可以下載你指定的 package。

舉個例子來說,我想要下載 Browsers 這個應用程式的原始碼。底下是我在 Git Bash 中下的命令。

cd /d/AndroidProgram/AndroidSource/1.0r1/Android_open_source/platform/packages/apps
git clone git://android.git.kernel.org/platform/packages/apps/Browser.git

這步的關鍵就在,你要知道你所要下載原始碼的 repository。告訴你,所有的 Android repositories 都在 http://git.source.android.com。進入這個網站後,你會看到下面這樣的畫面。

Project 這一欄列的就是 Android 中每個 sub-project 的路徑。前面再加上 git://android.git.kernel.org/ 就是他的 repository 路徑。

再舉個例子來說,如果你像要下載 SQLite 的原始碼,那就下:

git clone git://android.git.kernel.org/platform/external/sqlite.git

PS: 一直有人問要如何在 Windows 中,下載全部的原始碼。老實說,我還沒發現好方法,我目前是寫個 shell script 逐筆將要下載的東西寫上,辛苦一次,以後要再重下載,就輕鬆了。如果你有其他好方法,歡迎分享。

如果你只是想看某個檔案的內容,你也可以點最右邊的 tree 連結,就這樣一路點下去,看到檔案列表時,再點最右邊的 raw 連結。看到沒,原始碼就顯示在你的瀏覽器上。

22 則留言:

Ts'ai, Chung-Ming 提到...

順帶一提,在SDK的目錄(和android.jar同一層)下建立sources資料夾,然後把myroid/frameworks/base/core/java下面的android資料夾整個拷貝進去就可以直接在ecplise裡面用hyperlink的方式瀏覽source code

匿名 提到...

请问,怎么在windows上,下载全部的代码?
我使用了mkdir mydroid
cd mydroid
repo init -u git://android.git.kernel.org/platform/manifest.git
repo sync但不行,提示 exec: python:not found
已经安装了 python

samlu 提到...

你太貪心了,要一次下載全部的原始碼。開玩笑的。

據我所知,在 Windows 上,還沒好方法。我是一個一個 sub-project 下載的。

要下載全部的原始碼,還是建議用 Linux。

lucky 提到...

請問一下,我也是用你的方法抓,我裝了Git-1.6.0.2-preview20080923.exe,之後執行
$ git clone git://android.git.kernel.org/platform/build.git
不過它出現錯誤,訊息如下:
Initialized empty Git repository in e:/Android/platform/build/.git/
android.git.kernel.org[0: 199.6.1.176]: errno=No such file or directory
android.git.kernel.org[1: 204.152.191.13]: errno=No such file or directory
android.git.kernel.org[2: 204.152.191.45]: errno=No such file or directory
android.git.kernel.org[3: 130.239.17.12]: errno=No such file or directory
fatal: unable to connect a socket (No such file or directory)
請問有可能的原因是什麼呢?是因為設定,或是我機器在防火牆之內有關呢,謝謝。

samlu 提到...

我試了一下,沒問題的。
$ git clone git://android.git.kernel.org/platform/build.git
Initialized empty Git repository in C:/temp/abcd/build/.git/
remote: Counting objects: 736, done.
remote: Compressing objects: 100% (456/456), done.
Receiving objects: 8% (63/736), 155.99 KiB | 17 KiB/s

應該和你在 firewall 內有關,你可能e要去 git web site 上找找解法。

匿名 提到...

请问,怎么在windows上,下载全部的代码?
我使用了mkdir mydroid
cd mydroid
repo init -u git://android.git.kernel.org/platform/manifest.git
repo sync但不行,提示 exec: python:not found
已经安装了 python

====>
在WINDOWS的我的电脑里设置 环境变量 PATH 包括python的目录

就可以找到python

至于能否执行完repo 就要python 执行有没有问题了, 我遇到一些库的问题 也许是没装全python

RoboForm User Site 提到...

请问如何对Msysgit设置Proxy访问 repos URL?

cityfamer's blog 提到...

采用这种方法可以:
http://yu-yan.net/blog/index.php?entry=entry090323-021114

faye2040 提到...

用 cygwin 也可以嗎? Thanks

zeroo.bug 提到...

cygwin 可以用 repo sync 拉全部 source 我目前正在拉中~~

samlu 提到...

zeroo.bug well done.
看起來用 cygwin 是個不錯的方法。
試成功後,別忘了分享一下,如何裝 cygwin 以及如何在 cygwin 下,下載 Android 原始碼。

zeroo.bug 提到...

我也剛接觸android而已能提供大家參考的知識也很少,
我用Cygwin抓下全部source沒問題, 至少我這邊是成功的,
cygwin用目前最新的版本, 要裝的 package像gcc/python/curl/git等..., git我是自己compile source用,
有點要注意某些防毒軟體如norton/mcafee會造成git error "unable to load shell32" 的問題, 記的在下repo sync前, 卸載防毒軟體服務, 其他就沒什麼特別要注意的了.
希望本人的些許經驗對想用cygwin的先進們能提供一些幫助.

匿名 提到...

請問一下

我下載完了

但是檔案在哪我找不到耶?

台 "克" 工程師 提到...

小弟我寫了一個下載 Android Source Code 的懶人包,可以在 Windows 下一次下載所有的 Source Code,有需要的人可以參考看看
http://www.jackforfun.com/2009/10/lazy-android-git.html

samlu 提到...

這個 Android Source Code 的懶人包,讚!
謝謝 台"客" 的分享。

小鰻 提到...

請問懶人包灌完後,要怎麼在eclipse裡按ctrl看到原始碼啊?我查一堆資料都是舊版的,已不適用了,謝謝

小鰻 提到...

我已經搞定了,謝謝
搞定的方式貼在這
http://lp43.blogspot.com/2010/06/android22eclipse.html
還望前輩指點@@"

nic8193 提到...

你好,
我沒有使用懶人包
剛剛下載了一個原始碼
但不知道載到哪裡了說
請問有人知道嗎?
謝謝

yu 提到...

根據ysl大大的作法,我會出現
fatal: Unable to look up android.git.kernel.org (port:9418)
根據網路上的解法...
http://dilipm79.blogspot.com/2009/03/accessing-git-repository-on-internet.html

還是無法讓我下載程式碼...
請問還有別的方法嗎???
P.S. 公司統一用proxy

匿名 提到...

我也是遇到proxy的問題,我是這樣做的:
$ git config --global http.proxy http://123.123.123.123:1234
先設定好proxy的ip跟port。

然後,
$ cd forder
$ git clone http://android.git.kernel.org/kernel/common.git
把那個git://改成http://才鑽出去的...

hanshuo 提到...

感謝樓上的~ it works!

懂達人~數學家教 提到...

更快方法
法一、
在windows上裝virtualBox用Ubuntu
來做git的動作。檔案可以透過share folder的方法
在windows跟ubuntu之間共用。
法二、
用ssh連線Linux server。用git
在開sftp把檔案抓回來也很快。

by Jeremy

張貼留言