Android源碼獲取方法。
作爲一個Android開發者,必要的時候閱讀以下源碼可以拓寬一下自己的視野和對android的認知程度。
Google的Android的源碼管理倉庫是用的是Git。Android是一個開源手機終端系統,基於Linux內核的。
1、下載一個Git客戶端,我使用的是Git-1.7.0.2版本
下載地址:http://code.google.com/p/msysgit/
2、windows下安裝Git的客戶端軟件很方便,和普通軟件一樣。安裝完成後,我們在電腦上建立一個文件夾,用來存放我們將要下載的源碼。比如:在D盤上簡歷一個android source文件夾。
我們在android source文件夾上右擊鼠標,選中Git Bash選項,會打開一個窗口命令,類似CMD命令窗口。
命令窗口如下:
3、完成到此處,我們基本完成一半了。接下來我們來看看android的源碼地址。
源碼地址:http://android.git.kernel.org/
瀏覽器打開此URL地址,可以看到
該地址首頁即告訴你如何下載源碼:
git clone git://android.git.kernel.org/+工程模塊的相對路徑。
例如:我想下載platform/packages/apps/Launcher.git這個模塊。
那麼完整URL爲:
git clone git://android.git.kernel.org/platform/packages/apps/Launcher.git
即在第三步打開的命令窗口輸入如上完成url按回車即可,會將此模塊源碼下載在你的android source文件夾下。
下載完成後,去你的目標文件夾android source下看看,就會有你想要的源碼。
截止到這裏。windows下獲取android源碼的方法就結束了。
接下來我們看看在Linux下如何獲取呢?
我使用的是Ubuntu10.4,你也可以使用SuSE,RedHat。說實話,我也是看到很多android在Ubuntu下編譯才裝的。本人之前使用的一直是RedHat和SuSE.不熟悉Linux的朋友可以先在VM上安裝RedHat試試,很容易上手。SuSE部分版本在VM上顯示畫面有問題,SuSE還是很強大的,之前做J2EE常用。
回到正題Android上來。
在Ubuntu 10.4上安裝Git只要設定了正確的更新源,然後使用apt-get就可以了,有什麼依賴問題,就讓它自己解決吧。其中curl是一個利用URL語法在命令行下工作的文件傳輸工具。
在Ubuntu Linux中打開終端命令窗口輸入:sudo apt-get install git-core curl
Git會自動更新它需要的組件和依賴包,安裝完成之後。同理簡歷一個目錄,例如:android,
更改權限:chmod 777 /android
讀寫權限都附上。
輸入的命令和windows下的命令窗口一樣,如果想獲取platform/packages/apps/Launcher.git這個模塊源碼,
輸入如下命令:
git clone git://android.git.kernel.org/platform/packages/apps/Launcher.git
這些都是同一個道理。下載完成如下:
如果要全部下載下來,也是一樣。獲取platform/manifest.git即可。
---------------------------------------------------------------------
在Eclipse中查看Android SDK的源代碼
via http://stuffthathappens.com/blog/2008/11/01/browsing-android-source-in-eclipse/
Google的Android SDK中包含一個android.jar文件,裏面有Android所有的公開類的API接口。同時,Google還提供了一個Eclipse插件,可以很容易的開始進行開發。但是,這裏並沒有一個類似於androidSrc.jar的文件,因此當我們試圖在Eclipse去查看Android SDK的源代碼的時候,會得到下面這樣的一個頁面:
Google已經發布了Android所有的源代碼,很大。要在Eclipse中查看Android的源代碼,需要去http://source.android.com/(國內需翻牆),Get Source那個頁面內按照指示一步步的將所有的東西都通過Git弄下來。很值得抽出一個晚上的時間來做這件事,因爲如果能夠隨時查看源碼,對於理解SDK如何工作的是非常有幫助的。
鏈接到Eclipse
現在我們有了源碼,應該可以告訴Eclipse如何找到它了。右鍵點擊android.jar——屬性,可是卻發現了這樣的信息:
嗯....那段話的大意是,當前的class path的設置屬於'Android Library',不允許用戶修改。好吧,只能去看看ADT的源碼了,看能否找到什麼辦法。
查看ADT源碼
當下載完Android源碼之後,我們已經得到了所有內容,包括:操作系統、Dalvik虛擬機、Eclipse插件、公開的SDK...等等。
在 com.android.ide.eclipse.adt.project.internal 包裏,我找到一個名爲 AndroidClassspathContainerInitializer.java 的類,包含如下代碼:
好,再來看看 AdtPlugin.java:
最後來看看 AndroidConstants.java:
搞定!
解決方案 #1
根據上面的分析,我們可以在android SDK的安裝目錄內創建一個sources目錄,與android.jar位於同一個目錄內。之後,我們可以在之前下好的Android源碼中找到所有我們需要的代碼。SDK的代碼在frameworks/base/core/java,在這個目錄下有一個android目錄,我們需要將這個目錄拷貝(鏈接)到SDK安裝目錄中的sources目錄。你可能需要想想辦法,把所有分散在不同Component的源碼都弄到一起去。最終我們的目錄結構大致如下:
SDK_PATH |-- android.jar +--docs/... +--samples/... +--sources +--android | ...accounts, annotation, app, bluetooth, etc... +--com/android/etc... +--dalvik/... +--java/... +--javax/...
我把所有這樣的目錄都弄進來了,但是沒有詳細記錄。
注:上面的代碼是適用於以前的老版本的ADT,目前最新版本的ADT已經不適用了。經過查看源代碼發現,最新版本的ADT需要在SDK目錄下的platformsandroid-X對應的目錄下建立sources目錄,其中X是3、4、7、8之一的數字,對應不同的SDK版本。這也是一個比較合理的方案,畢竟不同版本的SDK的源碼還是不一樣的。
再注:(也就是我http://log4think.com),我自己寫了一個腳本來做這個事情。這個腳本會從Android的源碼目錄中搜索並提取出分佈在不同目錄下的源代碼,並按照package名字的目錄結構重新組織。這裏說的“Android的源碼目錄”指的是從source.android.com上面,使用repo
sync同步下來的代碼庫。
如果你在Linux或者Mac下工作,sources的源碼目錄結構可以用我寫的如下的一個Shell腳本來完成這個事情,在Android的源碼目錄下運行這個腳本,然後會在~/workspace/src-tree創建"幾乎"所有Java源碼的soft symbol link。之後也可以用tar帶-h參數打包到windows下使用。你可以根據自己的需求修改一下。
#!/bin/bashdest_dir=~/workspace/src-treeif [ ! -z "$1" ]; thendest_dir=$1ficurr_dir=$PWDdirname=$(basename $dest_dir)if [ -d $dest_dir ] ; thenrm -rf $dest_dirfimkdir -p $dest_dirfor d in $(find . -path .repo -prune \ -or -path .git -prune \ -or -path "*/src/com/*" -type d -print \ -or -path "*/src/net/*" -type d -print \ -or -path "*/src/org/*" -type d -print \ -or -path "*/java/com/*" -type d -print \ -or -path "*/java/net/*" -type d -print \ -or -path "*/java/org/*" -type d -print \ -or -path "*/java/android/*" -type d -print \ -or -path "*/java/javax/*" -type d -print)dosd=$(echo $d | sed 's#.*/src/\(.*\)/#\1/#g' | sed 's#.*/java/\(.*\)/#\1/#g') echo ";; $d" echo "-> $sd" mkdir -p $dest_dir/$sd for f in $(cd $d; find . -mindepth 0 -maxdepth 1 -type f | sed 's#^\./##g');doecho " $f" ln -s $curr_dir/$d/$f $dest_dir/$sd/$f donedone# package the source directory$(cd $(dirname $dest_dir); rm ${dirname}.tar.gz; tar zcfh ${dirname}.tar.gz $dirname)
現在,當我再去查看Android SDK類的時候,可以看到源碼了:
解決方案 #2
如果你實在不願意把所有的Android源碼拷貝到SDK目錄裏面去,也可以創建一個Eclispe User Library並把源碼附加上去。
via http://stuffthathappens.com/blog/2008/11/01/browsing-android-source-in-eclipse/
這篇文章將教大家如何在Windows環境下下載Android源碼,Android 自2007年11月5號發佈以來,發展速度 如此之快,和它走開源的路是分不開的。我們在開發中有什麼不明白不清楚的,直接把Android 源碼下下來研 究就可以了,看源代碼將會讓你提升很快! 在這之前大家先熟悉倆個代碼版本管理工具SVN,以及Git。 SVN(Windows環境下最常用的): svn(subversion)是近年來崛起的版本管理工具,是cvs的接班人。目前,絕大多數開源軟件 都使用svn作爲 代碼版本管理軟件。 Git: Git 是用於 Linux 內核開發的版本控制工具。與常用的版本控制工具 CVS, Subversion 等不同,它採用了分 布式版本庫的方式,不必服務器端軟件支持,使源代碼的發佈和交流極其方便。 Git 的速度很快,這對於 諸如 Linux kernel 這樣的大項目來說自然很重要。 Git 最爲出色的是它的合併跟蹤(merge tracing)能力。 而Google Android的項目是基於Git進行版本管理的,所以經常在Linux環境下開發的人,就不用我多說了, 而大都數在Windows環境開發的人,就比較陌生了。那下面我就手把手教你如何在Windows環境下 Git Android源碼。 第一步:Msysgit工具的下載(這個是Google爲Windows環境下開發的Git客戶端程序): http://code.google.com/p/msysgit/ 下載地址如圖: 第二步:安裝Msysgit軟件(一直默認到底),如下圖:
第三步:建立一個文件夾用來存放Git下來的Android 源碼(我這裏以G:/Android Src)爲例,如下圖:
第四步:右擊Android Src文件夾選擇Git Bash出現如下圖所示:
第五步:查找我們要下載源代碼的地址。Android的源代碼是放在下面地址下: http://android.git.kernel.org/
這裏以Launcher爲例,我們Ctrl + F查找:輸入Launcher如下圖所示:
點擊鏈接進入另一個頁面:
第六步在Git Bash端輸入如下命令,命令格式(如上圖圖示) git clone git://android.git.kernel.org/platform/packages/apps/Launcher.git
在Receiving Objects: 100%時候,我們在G:/Android Src/文件夾下多一個工程Launcher,這正是我們所要的,如下圖所示:
Ok通過以上的步驟我們就把Android Launcher的源代碼拿到手了,下面就剩下你研究了!
|
-----------------------------------------------------------------------------------
android源碼開發
|
編譯android源碼之後,在out/target/product/generic一些文件:
ramdisk.img、system.img、userdata.img、 system、 data、root
其中, system.img是由 system打包壓縮得到的, userdata.img是由 data打包壓縮得到的。
ramdisk.img是模擬器的文件系統,把ramdisk.img解壓出來可知道,ramdisk.img裏的文件跟root文件夾的文件基本一樣。
模擬器裝載ramdisk.img並解壓到內存,接着分別把system.img和userdata.img掛載到ramdisk下的system和data目錄。我們編譯出來的應用程序就是放在system/app下的。用戶安裝的程序則是放在data/app下。
android源碼可以編譯出android SDK、adb等工具、android文件系統,以及ADT插件,也就是說,我們可以從android源碼編譯出所有android相關的東西。
這個問題在後面回答。
這個問題在後面回答。
下面系統地講述android開發環境建立以及開發工具的使用
android工具鏈比較完善,需要外部的工具比較少。具體的安裝過程可參考官方文檔或<<android模擬器在ubuntu8.10的安裝>>和<<android源碼的編譯>>。
這 裏需要注意的是,用”make”來編譯android源碼時,我們可以使用JDK5或JDK6;用”make
sdk”來編譯時,會用到javadoc來生成文檔,javadoc就必須使用JDK5的javadoc,否則編譯是通不過的。因此,我們可以把JDK5 和JDK6都裝上,然後只把javadoc和javadoc.1.gz指向JDK5相應的工具,其它工具還是用JDK6的。當然,我們可以只安裝JDK5 或只用JDK5的工具。具體操作可以參考<<android源碼的編譯>>
二、使用eclipse來開發android源碼
這裏主要參考官方文檔
https://sites.google.com/a/android.com/opensource/using-eclipse
下面,從官方文檔總結出具體怎樣用eclipse來開發android源碼
1、建立基本的android開發環境
請參考官方文檔或<<android模擬器在ubuntu8.10的安裝>>
2、編譯android源碼
android源碼根目錄下通過make進行編譯,請注意一些配置,具體可參考<<android源碼的編譯>>
3、把eclipse工程配置文件複製到android源碼根目錄下
cp development/ide/eclipse/.classpath ./
chmod u+w .classpath
4
1)、增大eclipse內存設置
把eclipse.ini(在eclipse軟件的安裝目錄下)的3個值改爲下面的值:
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
2)、把android-formatting.xml和android.importorder導入eclipse(可選)
android-formatting.xml、.classpath和android.importorder都放在development/ide/eclipse/下
android-formatting.xml用來配置eclipse編輯器的代碼風格;android.importorder用來配置eclipse的import的順序和結構。
在window->preferences->java->Code style->Formatter中導入android-formatting.xml
在window->preferences->java->Code style->Organize Imports中導入android.importorder
3)、安裝anyedit插件(可選)
在http://andrei.gmxhome.de/anyedit/下載並導入eclipse中
5、把android源碼作爲一個工程導入eclipse
導入前先檢查.classpath裏的文件在android源碼中是否有相應的文件(文件夾),否則也會破壞android源碼(一般是多添加文件/文件夾),.classpath裏多餘的路徑可刪除
新建Java Project(不是android project,否則會破壞android源碼),選擇從已存在的工程導入,工程名任意,完成。
導入時,eclipse要build工程,比較慢。導完後,一般都沒有錯誤。
這裏也就回答了第4個問題
6、eclipse上調試android裏的程序。
爲了不讓其它版本的android工具和android文件系統影響下面的編譯和調試,需要從環境變量中去除android工具和android文件系統的路徑:
vim ~/.bashrc
看看有沒有在PATH變量中加入android工具和android文件系統的路徑,如果加有,則註釋它。通過下面的方法,我們是不需要在.bashrc中添加android工具和android文件系統的路徑的
執行:
cd android源碼目錄
. build/envsetup.sh #設了環境變量之後,會多出mmm等命令,可以通過輸入help來查看
lunch 1
emulator &
ddms &
注意,先啓動ddms,再啓動eclipse,這樣eclipse中就不會說端口衝突
然後在eclipse中配置調試類型和端口:
在Run->Debug Configurations->Remote java application上雙擊,然後,”Host:”設爲localhost,”Port:”設爲8800,”Connection
Type”爲Standard(Socket Attach)
然後“Apply”
注意,上面設置的端口要與DDMS中設置的端口一致,ADT插件使用了8700端口,因此上面設置的端口是8800。如果出現連不到VM的錯誤時,請注意,要先在DDMS中選中某一進程(對應某一應用程序),才能在eclipse執行 Debug。
在eclipse調試時,可以設斷點、單步調試。估計google團隊也是這樣開發、調試android應用程序的
7、編譯android源碼
執行:
cd android源碼目錄
. build/envsetup.sh
那 麼就會多出mm/mmm等命令,mm/mmm用來編譯模塊(包括C、C++、JAVA程序)。我們也可以直接在 android源碼根目錄下執行“make 模塊名”來編譯模塊(模塊名可以在.mk文件中找到)。模塊編譯後會在out/target/product/generic/system/app下生成對應的.apk包。但是,用mm/mmm來編譯生成的.apk並不會打包到system.img中,需要我們手動通過make
snod把 system文件夾打包爲system.img,不過這就得重新運行模擬器了,這也是很麻煩了。對於我們開發者來說,我們可以這樣做:
1)把需要修改、調試的模塊(比如AlarmClock.apk)從/system/app下移除,然後make snod,這樣system.img就沒有AlarmClock.apk了。
2)運行模擬器,就看不到AlarmClock了
3)修改AlarmClock源碼並用mm/mmm來編譯,在/system/app下生成AlarmClock.apk
4)通過adb把AlarmClock.apk安裝到android文件系統中,安裝方法有兩個:
兩 種方法都可以把 AlarmClock安裝到/data/app下,android會自動把它顯示在主菜單中(只要AlarmClock.apk中有一Activity包
含android.intent.category.LAUNCHER屬性),不過A方法在/data/app生成com.android.alarmclock.apk,B方法則是 AlarmClock.apk。用A方法時,如果原來已經安裝了 AlarmClock,你還得先adb
uninstall 它,而B方法則不用。推薦使用B方法。同樣,卸載可以通過adb uninstall或adb
shell rm xxx/xxx.apk來,也推薦用刪除的方法來卸載
8、如何開發自己的工程
前面主要是講如何在eclipse上開發android原有的工程。對於自己的工程,我們可以這樣做:
1)新建一個android工程。
建android工程的好處就是可以充分使用ADT的功能。
2)導入需要的包
3)編譯、運行、調試
4)加入到android源碼相應的目錄下,應用程序一般放在packages/apps下
我們觀察packages/apps原有的工程就會發現,它們的代碼是很“乾淨”的,沒有ADT自動生成的assets、bin等文件夾和R.java,當然也沒有.classpath和.project
5)編寫Makefile文件xxx.mk
用android源碼提供的專用Makefile文件xxx.mk,它的格式比較簡單
6)把剛加入的工程添加到eclipse的android工程中
可以在eclipse中添加,也可以在.classpath中直接加入相應路徑。如在.classpath中添加:
<classpathentry kind="src" path="packages/apps/HelloWorld/src"/>
R.java 中編譯時自動生成的,其實所有工程用到“資源”的,都會用到R.java,這些R.java是放在out/target/common/R下。我們在源碼
根目錄下make全部代碼時,纔會對每個模塊生成R.java;在make時,已經編譯過並生成有.apk文件的模塊是不會被編譯的。因此,如果新加入的
工程已經(用mm/mmm)編譯過的話,我們先對該工程的“資源”改動一下(必須是改動“資源”,因爲R.java是由“資源”生成的),再make,就
在會out/target/common/R對應的包路徑下看到你的工程的R.java。刷新在eclipse的out/target/common/R 子工程,再在你用到R類的地方加入它的包,如
import com.android.example.test.inside.helloworld.R;這樣就不會出現找不到R定義的錯誤。
其實,這個錯誤對我們是沒有任何影響的,因爲我們是在shell中編譯。
7)在android源碼目錄下編譯剛加入的工程
可以用mm/mmm或make 模塊名
8)用版本控件工具(svn或git或其它)把該工程上傳到服務器
-----------------------------------------------------------------------------------
如何搭建Android開發環境谷歌官網上有詳細的介紹,這裏主要給出一些簡要提示,更多細節可參考http://code.google.com/android/intro/installing.html
Supported Operating Systems:
- Windows XP or Vista
- Mac OS X 10.4.8 or later (x86 only)
- Linux (tested on Linux Ubuntu Dapper Drake)
由於在Linux環境下Android Source Code的獲取和編譯更爲方便,本文主要介紹基於Linux Ubuntu的搭建過程。
推薦的操作系統
Ubuntu 6.06 (Dapper), 7.10 (Gutsy), and 8.04 (Hardy)
安裝和獲取Ubuntu CD可參考http://www.ubuntu.org.cn/
Ubuntu的安裝過程不復雜,放入CD啓動電腦,按照提示一步步安裝即可。
安裝好Ubuntu後,首先需要設置apt-get代理上網
方法一
這是一種臨時的手段,如果您僅僅是暫時需要通過http代理使用apt-get,您可以使用這種方式。
在使用apt-get之前,在終端中輸入以下命令(根據您的實際情況替換yourproxyaddress和proxyport)。
終端運行export http_proxy="http://用戶名:密碼@代理IP:代理端口"也可
方法二
這種方法要用到/etc/apt/文件夾下的apt.conf文件。如果您希望apt-get(而不是其他應用程序)一直使用http代理,您可以使用這種方式。
注意: 某些情況下,系統安裝過程中沒有建立apt配置文件。下面的操作將視情況修改現有的配置文件或者新建配置文件。
sudo gedit /etc/apt/apt.conf
在您的apt.conf文件中加入下面這行(根據你的實際情況替換yourproxyaddress和proxyport)。
Acquire::http::Proxy “http://yourproxyaddress:proxyport”;
保存apt.conf文件。
方法三
這種方法會在您的主目錄下的.bashrc文件中添加兩行。如果您希望apt-get和其他應用程序如wget等都使用http代理,您可以使用這種方式。
gedit ~/.bashrc
在您的.bashrc文件末尾添加如下內容(根據你的實際情況替換yourproxyaddress和proxyport)。
http_proxy=http://yourproxyaddress:proxyport
export http_proxy
保存文件。關閉當前終端,然後打開另一個終端。
使用apt-get update或者任何您想用的網絡工具測試代理。我使用firestarter查看活動的網絡連接。
如果您爲了糾正錯誤而再次修改了配置文件,記得關閉終端並重新打開,否自新的設置不會生效。
apt-get 設置好後,按照下面的步驟安裝相關組件
Required Packages (Ubuntu 8.04)
$ sudo apt-get install python2.5
$ sudo apt-get install sun-java6-jdk sun-java6-bin sun-java6-jre
Add/Edit /etc/bash.bashrc
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.07
$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev zlib1g-dev zip curl valgrind libncurses5-dev build-essential
$ sudo apt-get install x-dev
$ sudo apt-get install libx11-dev
安裝 git
Install Packages
$ sudo apt-get install git-core gnupg
Git是一種版本管理的工具
安裝好git後同樣需要進行設置代理。
- 下載,編譯connect.c.
$ cd ~/bin
$ curl http://www.meadowy.org/~gotoh/ssh/connect.c > connect.c
$ gcc -o connect connect.c
- 編寫一個簡單的腳本文件。
#!/bin/sh
# Filename: ~/bin/http-proxy-gw
# This script connects to an HTTP proxy using connect.c
connect -H
http://yourproxyaddress:proxyport$@
- 設置運行權限
$ chmod +x ~/bin/http-proxy-gw
- 現在,需要告訴git使用這個腳本訪問代理服務器。
$ git config --global core.gitproxy "http-proxy-gw for kernel.org"
- 確認你有一個bin目錄在你home目錄下,沒有則創建一個,並設置它到PATH環境變量中。
$ cd ~
$ mkdir bin
$ echo $PATH
- 下載repo,並給它可執行權限:
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
- 建立一個空目錄保存Android 代碼。
$ mkdir mydroid
$ cd mydroid
- 獲取manifest文件
$
repo init -u git://android.git.kernel.org/platform/manifest.git - 按照命令提示輸入name和address.如果你想提交code,輸入一個Google account。
運行成功後應當提示如下信息。
repo initialized in /mydroid
開始下載Android source code, run
$ repo sync
$ cd ~/mydroid
$ export ANDROID_JAVA_HOME=$JAVA_HOME
$ cd ~/mydroid
$ make
編譯Android Kernel
Building zImage
Go into kernel directory
$ cd ~/mydroid/kernel
$ make msm_defconfig ARCH=arm
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-
eabi-4.2.1/bin/arm-eabi-
可以在 kernel/arch/arm/boot/目錄下看到build好的zImage
開發過程中,我們可能想看Android源碼,想了解其中的實現,哪怕看函數定義也行啊,而不是看到“Source not found”令自己抓狂,如何能在Eclipse中嵌入源代碼呢?
從別人的文章中瞭解到,實現這個挺簡單的: 1. 下載Android的源代碼 從http://www.weka.com.br/files/android/android-1.6-donut-src.zip下載1.6版的源代碼(我所瞭解的下載地址) 2. 確保Eclipse已經關閉 3. 解壓文件,把壓縮包內的sources文件夾放置於SDK的目錄下 配置的路徑爲&(SDK_Path)\platforms\android-ver.\sources文件夾 4. 重啓Eclipse,按下F3,就能看到源碼了。 如題,前面已經有人整理過1.5版本的源代碼,但有些人回覆說想要1.6的。 今天剛好試了一下各版本源代碼,運行良好。所以簡單的整理了一下下載連接和安裝方法。希望能用得上。 1.android下載 ▼android-1.5的下載地址有如下 http://rgruet.free.fr/public/android-1.5-cupcake-src.zip (21.6MB) http://www.mediafire.com/file/awnzktte2wy/android-1.5-cupcake-src.zip ▼android-1.6的下載地址有如下 http://rgruet.free.fr/public/android-1.6_r1-donut-src.zip (23MB) http://sandos.se/~sandos/android-1.6_r1-donut-src.zip http://www.droidnova.com/android-sdk-1-6-donut-sources,511.html ▼android-2.0的下載地址有如下 http://rgruet.free.fr/public/android-2.0-eclair-src.zip (24.4MB) 2.android安裝 ▼在各個版本的sdk下面創建新文件夾sources,如下 android_sdk_installation_folder\platforms\android-1.5\sources android_sdk_installation_folder\platforms\android-1.6\sources android_sdk_installation_folder\platforms\android-2.0\sources ▼把下載後的zip解壓縮到上面的sources下面,重新啓動eclipse即可查看。 |
-----------------------------------------------------------------------------------
Android在eclipse中調試經常看不到源碼很鬱悶,所以網上查了很做資料終於搞定了。
解決方法
下載android的source code
下載地址
http://dl.iteye.com/topics/download/794cf3a9-5436-3354-add9-aae1ff26a338
源碼解壓縮到
..android\android-sdk-windows-1.5_r3\platforms\android-1.5
重啓eclipse,可以看到android.jar中的內容了,雖然不全但是好多了。
----------------------------------------------------------------
使用Git下載Google Android源代碼
準備資源
Android資源分佈說明:http://source.android.com/projects#TOC-External-projects
Android的Git資源:http://android.git.kernel.org/
Git中文教程:http://www.bitsun.com/documents/gittutorcn.htm
Git下載地址:http://code.google.com/p/msysgit/
步驟:
1 下載msysgit工具,安裝
2 參考“Android的Git資源”上的說明,git想要的工程
----------------------------------------------------------------
ubuntu 9.04上下載android源碼
作爲開源手機操作系統,android一經推出,便引來業界極大的關注。Google現在的android源碼的版本號已經是1.50r1的。越來越多的愛好者開始加入到android源碼的研究中,下面就ubuntu 9.04上如果去獲得android最新源碼。
1. 安裝git 和gnupg 。輸入
$sudo apt-get install git-core gnupg
2. 安裝其它工具
$sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
3. 安裝valgrind 工具
$sudo apt-get install valgrind
4. 安裝java sdk
$sudo apt-get install sun-java6-sdk
$sudo apt-get install sun-java5-sdk
$cd /etc/alternatives
$sudo rm javadoc.1.gz javadoc
$sudo ln -s /usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gz javadoc.1.gz
$sudo ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javadoc javadoc
android 僅支持1.5 以上版本的java sdk ,且1.6 版本的java sdk 在進行android sdk 編譯時會出現java doc 錯誤,在這裏我的解決辦法時先安裝java sdk 1.6, 接着安裝java sdk 1.5, 然後將系統的java sdk 鏈接到java sdk 1.6 上,僅是將javadoc 和javadoc.1.gz
鏈接到java sdk 1.5 上,這樣做的好處是在編譯android 源碼和進行android 應用開發時,使用的是java sdk 1.6, 僅在編譯android sdk 的doc 時,使用的是java sdk 1.5 版本的javadoc 和javadoc.1gz 。
5. 下載 repo 工具
$mkdir $HOME/bin
$vi .bashrc
加入
export PATH=$HOME/bin:$PATH
$source .bashrc
$ curl http://android.git.kernel.org/repo > $HOME/bin/repo
$ cd $HOME/bin
$ chmod +x repo
6. 導出 android 項目
$ cd
$ mkdir Android
$ cd Android
$ repo init -u git://android.git.kernel.org/platform/manifest.git
並完成提示的配置,這樣我們建立的目錄就已經和 Google 的 android 源碼庫建立了鏈接。
7. 開始下載 android platform 的源代碼
$ repo sync
由於 android 的源碼很大,現在完整的代碼已經高達 3G 以上,所以最分文件夾進行同步下載。如要下載 kernel :
$repo sync kernel
現在,就可以做別的事,讓電腦自動完成源碼的下載工作。
----------------------------------------------------------------
fix_android_sdk.py上下載android源碼
各位調試Android程序的時候遇到“source not found”錯誤應該很抓狂吧,Goolge在發佈SDK時沒有把源代碼包含進去着實有點讓人費解,對很多人來說Git無疑是個生澀的東西,而 framework中所有Java代碼加起來打個包也就是20多MB。更要命的是,Android Eclipse plugin (ADT)不允許我們在項目屬性中attach源代碼到android.jar上。好在Eric
Burke找到了把source加入到SDK中的辦法,通過分析ADT的源代碼我們知道ADT是從SDK目錄下的“sources”目錄來查找class對應的源代碼,這樣我們只要把源代碼放到sources目錄中ADT就可以自動找到對應的源代碼了。
那麼接下來的問題是,我們需要把哪些源代碼加入到SDK中,我們又如何得到這些源代碼呢?
我之前的文章Android Scripting Environment動手玩中提到過一個fix_android_sdk.py腳本,用來解決編譯ASE的時候找不到android.os.Exec包的問題,事實上這個腳本還做了另一件事,即遍歷整個< android-source >目錄,把其中所有的Java代碼複製到了SDK的sources目錄中。ASE Wiki的CompilingASE中提到,編譯ASE需要Android的代碼樹,而我當時告訴大家了一個取巧的方法,即只要下載frameworks/base的android-
1.5r2這個tag的snapshot就行,因爲android.os.Exec包就在其中,這足已解決我們編譯ASE的問題。
回到我們把源代碼加入到SDK上來,有了fix_android_sdk.py腳本(這裏我們並不需要把android.os.Exec包編譯並添加到android.jar,所以我把腳本中的這個功能去掉了,點擊下載修改後的腳本http://www.williamhua.com/wp-content/uploads/2009/06/fix_android_sdk.py),如果你已經通過repo下載了完整的代碼樹(需要注意版本的對應),那麼一切都很簡單。按照下面的方法,把android源代碼和SDK目錄作爲參數傳給它即可。
fix_android_sdk.py < android-source > < android-sdk >
執行完成以後,在\platforms\android-1.5目錄下就會生成一個sources目錄,其中包含了android代碼樹中所有的Java代碼,並且都根據包名存放各自的目錄,再次Debug代碼的時候ADT就可以找到相應的源代碼了。
如果手上沒有完整的代碼樹,又想快速的把源代碼添加到SDK呢?看過Android的代碼樹就會知道,除了frameworks/base以外,還有很多framework的代碼其實是在Dalvik目錄下,另外還有常用的apache http的包位於external/apache-http目錄下,所以要獲得用於調試的比較完整的framework源代碼,我們至少需要從
Android的代碼庫中下載platform/dalvik.git、platform/frameworks/base.git、platform/external/apache-http.git這三個project(20090729,Update,platform/frameworks/policies/base.git的源代碼也很有用,不過解壓的時候留下爲智能手機準備的phone目錄就夠了,至於mid,這是爲MID設備準備的policy)。把下載回來的文件解壓到同一個目錄下,目錄結構隨意,接下來利用fix_android_sdk.py腳本就可以把Java文件提取出來。用這種方法來提取framework的源代碼比下載整個代碼數來得快很多,而且提取的結果和從完整的代碼樹比較來看,僅僅是少了我們Debug時完全用不到的
Android中捆綁的Application的源代碼,以及jdiff、tagsoup、clearsilver等包的代碼(這3個包我都沒有接觸過,如果各位覺得有必要,可以自行下載並按上面提到的方法來添加源代碼,它們都在platform/external下)。
最後,如果你連上面這幾個包也懶得下載,懶得裝Python執行環境,那麼Android Forum上有一個討論Source code for android.jar的帖子正適合你,帖子的第10樓和11樓提供了提取好的Android 1.5 SDK源代碼(雖然未必100%和你的SDK匹配,也總比滿眼的source not found好吧),解壓縮到你SDK下的sources目錄即可。
-----------------------------------------------------------------------------------
Eclipse android 查看源碼(轉載)
2011-02-21 16:17:04| 分類: android技術
-----------------------------------------------------------------------------------
查看Android SDK源碼
最近一直在找查看Android SDK源碼的方法,但貌似都很複雜,當我在Android官方文檔中看到“To build the Android source files, you will need to use Linux or Mac OS. Building under Windows is not currently supported.”這樣一句話時,頓時我的心都涼了,並不是說在Linux or Mac OS平臺開發不了,很久一直在Windows上開發,這個環境早已熟悉,很多資料也都在Windows裏。但爲了能查看Android SDK源碼,能更好的開發、解決疑難,那時安裝了Ubuntu 10.0的虛擬機,並在其上面配置了Android的開發環境,一切就緒,於是開始着手配置Android SDK源碼的源碼,網上有很多方法,讀者可以自行去網上參考,但我一直認爲官方的文檔是最好也是最權威的參考資料,這裏給個鏈接:http://source.android.com/source/download.html。
當然如此複雜的安裝方法,很多人看到了就頭大,其攔路虎不僅在於對GIT和Repo的使用,更甚者很多朋友對Linux的操作系統不甚瞭解,在安裝Android SDK源碼的過程中要做一些事前的準備工作,這就要求網友朋友對Linux的操作有一定的瞭解。
一次偶然的機會,在網上看到了Windows系統下查看Android SDK的源碼的方法。此刻轉載過來和大家一起分享!
先下載源碼,最新爲2.2
1. 源碼地址:http://rgruet.free.fr/public/
2.找SDK目錄
安裝的SDK到我的目錄E:\
3.改配置文件(修改紅色部分)
找到android-8目錄下的文件source.properties並將其修改如下:
### Android Tool: Source of this archive.
#Wed Oct 13 14:00:16 CST 2010
Pkg.Desc=Android SDK Platform. 2.2_r1
Pkg.UserSrc=true
Archive.Arch=ANY
Platform.Version=2.2
Pkg.DescUrl=sources
Archive.Os=WINDOWS
Pkg.SourceUrl=sources
Pkg.Revision=2
AndroidVersion.ApiLevel=8
大公告成,重啓Eclipse,按ctril+關鍵字、類名 或者按F3就可以點進去了,可以看到源碼了吧!
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
我的解決 辦法,
下載好源代碼包之後,放到對應的版本里面,與android.jar在同一級
然後,在Eclipse平臺 ctril+關鍵字、類名 出現 “source not found” 下面有個 按鈕,
“Attach Source...”你可以點擊它,將你的剛纔源碼的文件夾導入就可以了,之後就能看源碼啦!