如何使用eclipse和emulator debug Android source code(JNI以上部分)

這個文檔主要說明了如何debug我們的JNI以上的java code部分,包括App Framework以及Application部分。

1.首先建立Android的編譯環境,並且將android的source code repo下來。然後對源碼進行make。安裝eclipse以及eclipse的android plus-in。具體安裝方法在這裏就不多說了。

2.將out/target/product/generic目錄下的system.img,userdata.img,ramdisk.img拷貝到目 前eclipse使用的SDK目錄下的tools/lib/images下,SDK中的這三個img,最好做一個備份。

3.eclipse需要一個目錄以保證它能夠找到路徑下面的java文件,就是所謂的“java build path”,在android的source code已經給我們準備了一個叫“.classpath”的文件,我們可以直接利用這個文件,也可以對這個文件進行相應的修改。這個文件在source code的位置爲:development/ide/eclipse/.classpath。將這個文件cp到android sorce code的根目錄下。拷貝後,需要對.classpath文件的屬性進行修改,以保證這個文件的可以修改。chmod u+w .classpath

4.Android Project比較大,Eclipse的java Vm在編譯的時候可能會有內存不夠的情況,我們需要編輯elipse.ini文件,這個ini文件就在eclipse文件夾下,將其修改爲:
        -Xms128m
        -Xmx512m
第一個表示eclipse最小的java棧是128m,第二個表示eclipse的最大棧是512m
   
5.如何根據源代碼建立android source code的工程。打開eclipse
(1)File->New->Java Project,注意這個與Android的Application的建立是不一樣的,這個不是一個Android Project而是建立的Java Project
(2)隨便選擇一個工程名,這裏我們取名叫Android
(3)然後選擇“Create project from existing source”,然後Android source code的目錄,完成。]
(4)然後就是等待工程的建立,這個需要一會,工程比較多,這個工程的建立就是根據我們.classpath中的內容完成的。
代碼導入後,沒有error,但是有很多的warning,但是這個不影響我們debug。

關於.classpath的說明:這裏我們演示的是如何用eclipse debug源代碼中的一個Helloworld的應用,在.classpath中我們相應的添加上<classpathentry kind="src" path="packages/apps/Helloworld/src"/>這樣在工程生成的時候,我們就可以在eclipse的java code部分看到我們在source code裏面添加的這個Helloworld的應用了。其他的添加也是相同的方法。


6.如何debug,在SDK的tools下啓動./emulator,這個時候emulator啓動運行的加載的就是我們通過source code編譯出來的img。然後啓動./ddms,ddms默認使用的是端口8700。ddms啓動起來就可以看到emulator中的活動等消息。
Eclipse關於debug的一些設置,Run->Debug Configurations->Remote Java Application,鼠標右鍵->隨意選擇一個名字,設置Project爲你目前的 Project,Standard,localhost,8700->Debug。如下圖所示:
tu1.png

7.如何debug,這裏我們需要debug的是實驗的小程序Helloworld,在eclipse裏面給在需要的地方加上斷點,如圖所示:
tu2.png


斷點添加好以後,在ddms裏面選中我們需要debug的進程,如圖所示:
tu3.png

然後運行emulator中的Helloworld的應用,這樣我可以在eclipse裏面進行我們的debug工作了。如下圖所示:
tu4.png

這樣我們就可以基於我們的源代碼,使用eclipse debug我們JNI上面的代碼了。

補充1:
如果代碼repo sync過,我們這樣作:
(1).Window > Show View > Navigator
(2).在project名字上右鍵
(3).refresh,然後新添加刪除的東西就會在eclipse的工程進行了一個同步。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章