您好,登錄后才能下訂單哦!
目前網上已經有很多文章來描述如何使用eclipse來調試android源碼,但是大多數都是最后基于 android虛擬機來完成最后的一次華麗轉身,即享受最后調試的勞動果實,然后,然后就得忍受android虛擬機的各種緩慢,以及對esopengl庫不支持導致的bug,問題,估計很多同學也就是調試通過一次就不愿意再用了。
下面,本文介紹一種使用eclipse調試源碼的方法,但是是在真機上面進行調試,速度和真實的模擬性可不是android虛擬機可比較的。
一 前置條件
1 三星 nexue one 手機一部
2 筆者用的是cm-ics 也就是android 4.0 的代碼
3 操作系統 ubuntu 13.04
二 編譯過程
1 首先需要將cm-ics源碼編譯完成,升成可是刷入到nexue one手機中的
rom包,并且使用完美刷機等軟件刷入到nexue one手機中,能夠正常開機使用。
關于這個過程,需要看我以前的如何編譯 cm代碼的博文,里面有詳細的介紹
最后的升成文件如下圖
2 進入源碼目錄下的development/ide/eclipse,將.classpath 文件拷貝到
源碼目錄,然后再新建一個 .project 文件,文件內容如下
<?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>CMIcs</name> <comment>CMIcs Source</comment> <projects> </projects> <buildSpec> <buildCommand> <name>org.eclipse.jdt.core.javabuilder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org.eclipse.jdt.core.javanature</nature> </natures> </projectDescription>
3 新建Java Project(不是android project,否則會破壞android源碼),
選擇從已存在的工程導入,工程名任意,完成。導入時,eclipse要build工程,
比較慢。
這一步一般都會有錯誤,總結一下,主要有一下幾種
1 源代碼里面缺少必要的代碼庫文件 如圖2
表示缺少相應的源碼庫,直接報錯不編譯,
解決方法:在.classpath 文件中去掉該目錄即可
2 編譯過程中出錯
編譯過程中出錯多以包名,找不到或者少編譯一些文件,如圖3
解決方法:主要到指定目錄 mm編譯升成缺少的依賴包以后,然后
再將目錄添加到 .classpath 中去
比如這個是我在解決編譯錯誤的時候,加入的源碼或者lib的目錄文件
<classpathentry kind="src" path="frameworks/base/fmradio/java"/>
<classpathentry kind="src" path="out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/fmradio/java"/>
<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/libGoogleAnalyticsV2_intermediates/javalib.jar"/>
三 調試過程
通過前面的編譯過程,最后編譯完成以后就需要進行接收勞動成功,進行調試了。這里
跟網絡上大多數文章不同的地方是用真機調試。連接上燒入同樣版本的nexue one手機后,
進入 /adt-bundle-linux-x86_64-20131030/sdk/tools/ 這個目錄
使用 ./monitor 命令
出現界面如圖4
這里選中的是 com.android.calendar 就是日歷的這個進程
打開eclipse,這里要在打開 monitor后,然后進行配置
步驟如下:
選擇你的工程,右鍵打開菜單選擇 Debug AS—Debug configuration 彈出窗口,選擇Remote JAVA Application,右鍵在菜單選擇NEW,彈出下面的視圖,修改Port為8700
設置完成后如下圖5
然后點擊debug,成功以后出現如圖6
比之圖五,多了一個debug 爬蟲的圖標,表示已經連接成功了
在應用中找到 日歷這個apk點擊打開,發現設置的 setContentView斷點已經停止了
如下圖
注意:有時候在遠程調試的時候連接會出現錯誤
Failed to connect to remote VM
筆者的解決方法是
在Preference->General->NetWork Connection->把Active Provider里面的選項,選擇為Direct.
解決該問題,僅做參考。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。