android開發中,因為網上的資料較少,查看android源代碼很有必要,那我們怎么才能在android開發中調試android源代碼呢?經過筆者的不斷嘗試,給出了windows下調試android源代碼的方案,此方案只是臨時替代方案,稍顯繁瑣,還是希望官方能早點給出調試android源代碼的解決方案。
本文參考了William Hua的把Android源代碼加入SDK(Updated)以及Eric Burke的Browsing Android Source in Eclipse
一.配置環境
筆記本:Thinkpad T400 Intel Core 2 Duo P8400 2.26GHz
內存:6GB DDR3
OS : Window 7 Professional 64
Eclipse : Indigo (Java EE)
二 下載Android源代碼
這里提醒一下,window下無法使用repo(因為Android是由kernel、Dalvik、Bionic、prebuilt、build等多個Git項目組成,所以Android項目編寫了一個名為Repo的Python的腳本來統一管理這些項目的倉庫,使得Git的使用更加簡單 引自syles發布,新手掃盲貼之一什么是GIT和REPO),所以推薦使用ubuntu或者macox下載Android源代碼,我就是把我在Mac OS 10.6(Snow Leopard)編譯Android源代碼一文中下載的源代碼拷貝到window中。當然,window中下載Android源代碼也不是不可以,不過需要使用git命令獨立的下載每個git包,或者參考網上的批處理文件(我擔心由於android版本的升級,會導致批處理文件失效,未嘗試,也請有經驗的網友指點)。
三 關聯Android源代碼
由於Android Eclipse plugin (ADT)不允許我們在項目屬性中attach源代碼到android.jar上,好在Eric Burke找到了把source加入到SDK中的辦法,通過分析ADT的源代碼我們知道ADT是從SDK目錄下的“sources”目錄來查找class對應的源代碼,這樣我們只要把源代碼放到sources目錄中ADT就可以自動找到對應的源代碼了。
另外Android源代碼包含在不同的目錄中,而放到sources文件夾下的源代碼應該按照包名以文件夾的形式組織,好在William Hua寫了一個py腳本,不過我在使用這個py腳本的時候碰到了一些問題,自己改了一下。
主要問題是,在生成文件時報gbk codec錯誤
估計有幾個文件里有特殊的字符,造成py腳本中斷退出,這里我用了個笨辦法,吃掉UnicodeDecodeError異常,這樣保證py腳本會生成所有的java文件,除了(產生UnicodeDecodeError的文件,我用的是2.3.3 gingerbread版本,應該有3-4個有問題的java,暫時用不到,不管他)
with open(source) as f:
try:
for line in f:
match = re.match(r'\s*package\s+([a-zA-Z0-9\._]+);', line)
if match:
package_path = match.group(1).replace('.', os.sep)
try:
os.makedirs(os.path.join(sources, package_path))
except os.error:
pass
destination = os.path.join(sources, package_path, filename)
if destination not in written:
written[destination] = True
shutil.copy(source, destination)
break
except UnicodeDecodeError:
print(source)
另外我用的是python 3.1.1,需要把原有py腳本的print命令加上括號,python我是新手,自己摸索的
使用方法
fix_android_sdk.py < android-source > < android-sdk >
比如我的<android-source>是 c:\android <android-sdk>是 c:\android\android-sdk
則寫法應該是 fix_android_sdk.py c:\\android c:\\android\\android-sdk
最后在eclipse中Java Source Attachment中指向生成的路徑
最后我們即可在eclipse中看到源代碼



