在上文<Android工具HierarchyViewer 代碼導讀(1) -- 功能實現演示>中,我們介紹了HierarchyViewer主要技術點的實現。雖然我們還沒有涉及到HierarchyViewer的源代碼,但是利用上節所講到的知識,讀者甚至已經可以實現一個自己的HierarchyViewer了。
本文的內容比較輕松,我們將介紹如何把Android源代碼中的HierarchyViewer項目和依賴項目導入Eclipse中,通過Eclipse閱讀和調試將提高我們理解的效率,所謂磨刀不誤砍柴工。
如果你沒有安裝Eclipse,可以在Eclipse官網下載Eclipse IDE for Java Developers。本文的講解基於Android4.0 ICS,關於源代碼的下載與編譯,網絡上已經有很多資料,我們這里不再多做介紹,不過由於主站由於某些原因很難同步成功,建議大家從鏡像服務器codeaurora.org下載,可以參考<更換 codeaurora.org 的 repo 源解決同步緩慢問題>一文。
1,導入HierarchyViewer和HierarchyViewerlib
打開Eclipse,打開File-> Import –> Existing Projects into Workspace,點擊Next
選擇從~/Android-Source/sdk/hierarchyviewer2/app中導入hierarchyviewer項目。(作者的Android源代碼地址為~/Android-Source)
重復上面的步驟,從~/Android-Source/sdk/hierarchyviewer2/libs/hierarchyviewerlib導入hierarchyviewerlib項目。
2, 導入ddmlib和ddmuilib項目
ddmlib和ddmuilib是許多Android SDK工具共同依賴的包,你可以選擇不導入這兩個項目而直接引入jar文件,如果你已經編譯了Android源代碼,你可以在~/Android-Source/out/host/liunx-x86/framwork/目錄下找到ddmlib.jar和ddmuilib.jar,或者從Android SDK中的\tools\lib目錄下找到他們。
ddmlib包含了adb的api,如果你對adb的初始化和通信感興趣,最好導入這兩個工程,從以下目錄導入:
~/Android-Source/sdk/ddms/libs/ddmlib
~/Android-Source/sdk/ddms/libs/ddmuilib
導入后,可能無法編譯它們,這是由於源代碼中的重載函數都沒有加上@Override聲明,而eclipse默認把這個當作error來處理。我們需要修改一下項目的設置:
打開ddmlib和ddmuilib的工程屬性對話框,選擇Java compiler->Error/Warnings,在Annotations節點下,把“Missing’@Override’ annotation”的錯誤級別從“Error”改為“Warning”或者“Ignore”
3, 添加jar文件引用
最后,為項目添加通用的jar文件引用,這些jar文件都可以在~/Android-Source/out/host/liunx-x86/framwork/或者Android-SDK\tools\lib目錄下找到:
ddmulib需要添加的引用:
HierarchyViewerlib項目需要添加的引用:
HierarchyViewer項目需要添加的引用:
特別需要注意的是,swt.jar在Android-SDK\tools\lib下的x86和x86_64目錄下有2個版本,必須根據你機器的jre是32位還是64位的,來選擇正確的版本,否則的話雖然編譯能通過卻無法運行。
4,調試啟動
這時,所有的項目都一個編譯通過了,調試啟動HierarchyViewer,選擇入口點com.android.hirarchyviewer 啟動:
5,在線閱讀網址
最后,介紹一個在線閱讀Android源代碼的地址http://androidxref.com/,網站提供了非常方便的搜索、變量引用和類型定義導航功能。雖然無法調試,但也是一個不錯的選擇。
知平軟件致力於移動平台自動化測試技術的研究,我們希望通過向社區貢獻知識和開源項目,來促進行業和自身的發展。