2011-04-20

設定 Android Source Code 到 Eclipse

因為 Android SDK 沒有內建 source code,所以得先下載  Android source code,這是一個麻煩的過程。

先下載 Git,目前最新的版本為 Git-1.7.4-preview20110204.exe,按照預設值安裝。

接下來執行 Git Bash,先切換到要放置 source code 的目錄:

& cd <android-sdk>
& mkdir sources
& cd sources

可以在這裡看到所有可以下載的 Android source code,因為只要 Android source code,所以只要下載 platform/frameworks/base.git 就可以了。

& git clone git://android.git.kernel.org/platform/frameworks/base.git


總共兩百多 MB,速度又不快,需要一些時間。

下載完成後,可以在 <source>\base\core\java 下看到需要的 Android source code。

開啟 Eclipse,使用 Ctrl + Shift + T 輸入 GridView,出現以下的畫面:


按下 Change Attached Source...


按下 External Folder...,選擇 <source>\base\core\java。

完成後會出現錯誤的訊息,需要用奇怪的方式處理(因為無法複製這個奇怪的狀況,所以沒有附圖)。

先將 <source>\base\core\java 複製到 <android-sdk> 以外的目錄。

回到 Eclipse 重新設定 source path,開啟 Java Build Path 編輯 android.jar 的 Source attachment 到 <new_source>\base\core\java,完成後即可以在 Eclipse 看到 Android source code。



這時可以再用一樣的步驟,將 source path 設定回到 <source>\base\core\java,怪的是,剛遇到的錯誤就消失了!

參考來源:aTickTock 


2011/12/5 補充
重新安裝最新版的 Android 4.0 後,在下載 source code 時出現以下錯誤:
android-sdk-r15\src>git clone git://android.git.kernel.org/platform/fra
meworks/base.git
Cloning into base...
android.git.kernel.org[0: 149.20.4.77]: errno=No error
fatal: unable to connect a socket (No error)
google 了一下,應該是連不到 android.git.kernel.org,但是發現 github.com/android 會定期複製 android.git.kernel.org,所以可以改用以下的指令來下載 source code。
git clone git://github.com/android/platform_frameworks_base.git
下載完後,到 Eclipse 用上面的方法設定關聯,這次並沒有出現奇怪的狀況。

3 則留言:

  1. 感謝教學,不過小弟設定好 source code folder 就可以使用了喔~

    另外想請問,那如果 Android source code 更新了,只需再 git clone git://android.git.kernel.org/platform/frameworks/base.git 一次就好嗎? 感謝您

    回覆刪除
  2. 不用客氣。

    關於更新的問題,我試了一下,發現可以用 $ git pull 來更新到最新版的 source,不用到一分鐘就更新完成了,我猜如果用 $ git clone 的話,可能會全部重抓一次吧,那就要很久的時間了,記得要先切換到要更新的目錄下(.../sources/base)。

    進一步資訊請參考 http://media.pragprog.com/titles/tsgit/chap-008-extract.html 裡的 Keeping Up-To-Date 一節,以及 http://www.kernel.org/pub/software/scm/git/docs/git-pull.html。

    回覆刪除
  3. android 4.0可以直接從sdk manager抓framework的source包,以後就不用那麼麻煩去git抓了

    回覆刪除