Eclipse中跟蹤調試Android原始碼

來源:互聯網
上載者:User

田海立@CSDN

2012-9-29

 

本文講解如何在Eclipse中匯入Android原始碼(包括Framework和Application的代碼),然後通過模擬器或真機跟蹤/調試Android的Java代碼,區別於一般基於Android SDK的純應用開發,這裡可以跟蹤/調試Framework中的代碼。

 

 

一、準備工作

 

確保機器上已經安裝並配置下列軟體環境:JDK/ Eclipse / Android SDK / ADT

即,機器上已經安裝了Eclipse下Android應用開發所需的環境。如果還未配置,移步《搭建Windows下Android應用開發環境——Eclipse/Android/ADT》。

 

另外,為了跟蹤調試Android源碼,你還需要有Android源碼,並有源碼的編譯環境,可以是:

  •  虛擬機器環境 虛擬機器中安裝Linux,Linux下編譯Android源碼。此環境下,如果要在宿主機的Eclipse中調試,還需要把Android的源碼路徑共用出來,宿主機可訪問到;
  •  有單獨的可編譯Android的網路環境 在你的用戶端的機器上訪問伺服器共用出來的Android的源碼路徑;
  •  Linux環境下直接通過Eclipse跟蹤調試本機上的Android源碼。

注意:不管哪種工作方式,Android源碼要都是已經編譯過的,且編譯時間採用的是Eng模式(vs User mode)。編譯Android Platform和Kernel的過程,可參考《Ubuntu10.10下編譯Android2.2平台》及《Ubuntu10.10下編譯Android2.2核心》。

 

 

二、基本設定

 

準備工作完畢之後,現在做一些基本的設定。

 

1. 把Android源碼路徑<Android_ROOT>下的development\ide\eclipse中的.classpath檔案複製到<Android_ROOT>下;

2. 修改Eclipse的設定

修改eclipse.ini檔案,更改下列內容:

-Xms40m-Xmx384m

改為:

-Xms128m-Xmx512m

這裡增大最小Java堆大小到128MB,增大最大Java堆大小到512MB。

 

 

三、Eclipse中建立工程

 

1. File > New > Java Project

2. 輸入項目名

3. 取消Use default location,並在Location中輸入或選擇Android源碼路徑<Android_ROOT>

4. 選擇Next > Finish。會有一個漫長的等待過程

建立的工程可能會有錯誤,根據錯誤提示,加入或者刪除項目中配置的程式包。

 

 

四、調試環境配置

 

1. 右擊剛剛在#3中建立的項目;

2. 選擇:Debug As > Debug Configurations…;

3. 右擊“Remote Java Application”,選擇New。或者直接雙擊“Remote Java Application”建立一個新的Remote Application。

4. 填入Name;Project選擇剛剛建立的項目Android2.3.7;連接埠填寫8700(不一定是8700,到DDMS Perspective下的Device View中看所需的連接埠號碼)。

5. Apply儲存,然後退出。

 

 

五、調試

 

可以通過模擬器或者真機調試。

無論模擬器還是真機,都要:

  •  先啟動機器(模擬器啟動,或真機開啟,並通過USB與PC正常串連),也就是要在DDMS Perspective的Devices視圖中看到有機器串連;
  •  確保運行中的代碼與你要調試的代碼是一樣的。

 

假如,我們想要跟蹤鎖屏解鎖的調用情況。

我們知道解鎖的實現是在LockScreen.java的onGrabbedStateChange()函數,運行在system_process進程中。

那麼,

1.        在onGrabbedStateChange()中要調試的地方設定斷點;

2.        在Device View中,選中system_process,並點擊小爬蟲表徵圖;

3.        用Section#4建立的Debug配置,Debug;

4.        在模擬器或真機上,執行到解鎖操作時,代碼就會停在斷點處;

這樣你就可以,

  •  把滑鼠放在某個變數上,看它的值。也可以Eclipse中的各種調試手段調試你的代碼。
  •  通過Step Into / Step Over / Resume / Suspend / Terminate等在Debug View中控製程序的執行。

 

 

總結

通過本文可以:

  •  本文講解是基於Windows環境的,但是不僅適用於Windows環境,同樣適用於Mac OS和Linux系統,只是一些路徑和使用方式有差別;
  • 可以跟蹤/調試所有Android中Java的源碼(無論Framework的代碼,還是App中的代碼),並不能Debug Framework中的c/c++ code;
  • 為了使整個項目在Eclipse中都能編譯過,.classpath中也包含了out/裡編譯產生的內容,所以必須保證Android源碼是已經編譯過的。
  •  跟蹤/調試的前提是要在所要調試代碼處設定斷點,並知道該處代碼執行在哪個進程中。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.