Android之導入源碼到eclipse中以及單模塊調試

一、導入源碼到eclipse:

相信大部分做源碼開發的童鞋都不怎麼用eclipse調試吧,畢竟還是有各種不方便的:首先工程比較浩大,導入eclipse會比較慢而且比較卡,有時候還會崩潰,然後eclipse不能編譯單個模塊,隻能在eclipse中修改保存,然後還是得回到linux終端中編譯。所以,高手們都會選擇直接在vim中修改,然後直接編譯,這樣相當方便快捷,省掉瞭很多步驟,然而,對於像我這樣的菜鳥而言,很多接口、語法之類的很容易出錯,所以還是很依賴eclipse的自動提示和補全。好瞭,廢話不多說,下面我們來看看關鍵的幾個步驟:

1.取一份完整的Android源碼,然後全編譯(具體操作不作細說)。

2.將idh.code/development/ide/eclipse/.classpath文件拷貝到idh.code下。(重要)

3.打開eclipse,最好一份代碼獨占一份workspace,這樣打開加載速度快。

4.選擇File–>New–>Java project。

5.在彈出的窗口的location處Browse或填寫上idh.code所在的路徑,最後Finish。(耗時12分鐘左右,Source Insight第一次建項目並同步也要很久)

6.可能會彈出一些錯誤窗口,關掉就可以瞭。

經過繁瑣的幾個步驟和長時間的等待之後,終於導入結束瞭,假如該代碼全編譯是可以通過的話,這份project應該是沒有一個表示錯誤的x在類的圖標上。大傢在這份eclipse裡面編寫代碼,會實時的檢查語法,有誤,鼠標移過去,就可以看得錯誤內容和修改建議。大傢可以發現(如下圖所示),一些framework和package中的類都列在瞭最開頭,這就是.classpath文件的功勞,打開這個文件一目瞭然,大傢可以根據自己的需要對這個文件進行改動。

 

另外,下面給出幾個常用的快捷鍵:

搜索文件,可以ctrl+shift+R。

搜索類,可以ctrl+shift+H。

看某個方法被誰調用,可以ctrl+alt+H。

看某個方法的具體實現,可以按F3,假如對象是匿名繼承接口的類,則ctrl+T。(如一些接口的類是在哪實現的,ctrl+T的功能是Source Insight不曾具備的)

搜索指定文件夾裡面文件的內容,可以在package explorer處選擇對應的文件夾,再ctrl+H,在scope欄選擇Selected resources。

看當前文件裡面的成員和方法列表,可以按ctrl+o,或者通過window–>show view–>outline將可拖拽的窗口調出。

 

二、單模塊調試(以Launcher為例):

上面說完導入全部源碼到eclipse中調試,但是大部分情況下,我們要調試的不是全部的代碼,而是簡單的一個應用而已:比如相機、短信、聯系人、桌面等等,把全部代碼導入明顯是不理智的,那有沒有導入單個模塊調試的方法呢?答案是肯定的,下面我就以Launcher為例,簡單的介紹一下:

1.由於在Android源碼中,很多方法、成員、類、包都被打上@hide標簽,這些成員在SDK中沒有公開,以至於在編譯Launcher源碼時最常遇到的類android.view.View的成員mScrollX無法訪問,因此我們需要將源碼下的jar導入,而不是單獨使用Android開放的jar包,所以,我們還是需要一份完全編譯過並且無錯的源碼。

2.在該源碼的out目錄下尋找包含你所用隱藏類的jar文件,通常文件名為classes.jar。例如framework的jar文件為out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar。

3.在eclipse的Android項目中,選擇項目屬性->Java Build Path->Libraries->Add Library->User Library->Next-> UserLibraries進入到User Libraries管理界面,點擊New新建一個User Library,比如android_framework,點擊Add Jars把Jar包加入到建立的User Library中,最後點擊OK就可以瞭。註意:為瞭訪問因此成員,需要改變類搜索順序,選擇項目屬性->Java Build Path->Order and Export,把所建立的User Libraries移到android sdk的上面。這個時候你的eclipse中的錯誤應該已經減少,甚至沒有瞭。

4.要想在模擬器上馬上看效果的話,按照以下方式進行修改:改掉原始包的名字,切記使用eclipse的重命名機制(在包名上按F2可修改),不僅是類的引用,還有很多xml文件內部的引用(如import com.android.launcher3.R;),隻要重命名不錯,這些都可以一次性搞定的。最後在AndroidManifest.xml文件裡面,找到這句話刪除掉(android:sharedUserId="android.uid.shared")。到現在為止,你就擁有瞭自己的Launcher瞭!

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *