您好,登錄后才能下訂單哦!
目前網(wǎng)上已經(jīng)有很多文章來描述如何使用eclipse來調(diào)試android源碼,但是大多數(shù)都是最后基于 android虛擬機(jī)來完成最后的一次華麗轉(zhuǎn)身,即享受最后調(diào)試的勞動果實(shí),然后,然后就得忍受android虛擬機(jī)的各種緩慢,以及對esopengl庫不支持導(dǎo)致的bug,問題,估計(jì)很多同學(xué)也就是調(diào)試通過一次就不愿意再用了。
下面,本文介紹一種使用eclipse調(diào)試源碼的方法,但是是在真機(jī)上面進(jìn)行調(diào)試,速度和真實(shí)的模擬性可不是android虛擬機(jī)可比較的。
一 前置條件
1 三星 nexue one 手機(jī)一部
2 筆者用的是cm-ics 也就是android 4.0 的代碼
3 操作系統(tǒng) ubuntu 13.04
二 編譯過程
1 首先需要將cm-ics源碼編譯完成,升成可是刷入到nexue one手機(jī)中的
rom包,并且使用完美刷機(jī)等軟件刷入到nexue one手機(jī)中,能夠正常開機(jī)使用。
關(guān)于這個過程,需要看我以前的如何編譯 cm代碼的博文,里面有詳細(xì)的介紹
最后的升成文件如下圖
2 進(jìn)入源碼目錄下的development/ide/eclipse,將.classpath 文件拷貝到
源碼目錄,然后再新建一個 .project 文件,文件內(nèi)容如下
<?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源碼),
選擇從已存在的工程導(dǎo)入,工程名任意,完成。導(dǎo)入時,eclipse要build工程,
比較慢。
這一步一般都會有錯誤,總結(jié)一下,主要有一下幾種
1 源代碼里面缺少必要的代碼庫文件 如圖2
表示缺少相應(yīng)的源碼庫,直接報(bào)錯不編譯,
解決方法:在.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"/>
三 調(diào)試過程
通過前面的編譯過程,最后編譯完成以后就需要進(jìn)行接收勞動成功,進(jìn)行調(diào)試了。這里
跟網(wǎng)絡(luò)上大多數(shù)文章不同的地方是用真機(jī)調(diào)試。連接上燒入同樣版本的nexue one手機(jī)后,
進(jìn)入 /adt-bundle-linux-x86_64-20131030/sdk/tools/ 這個目錄
使用 ./monitor 命令
出現(xiàn)界面如圖4
這里選中的是 com.android.calendar 就是日歷的這個進(jìn)程
打開eclipse,這里要在打開 monitor后,然后進(jìn)行配置
步驟如下:
選擇你的工程,右鍵打開菜單選擇 Debug AS—Debug configuration 彈出窗口,選擇Remote JAVA Application,右鍵在菜單選擇NEW,彈出下面的視圖,修改Port為8700
設(shè)置完成后如下圖5
然后點(diǎn)擊debug,成功以后出現(xiàn)如圖6
比之圖五,多了一個debug 爬蟲的圖標(biāo),表示已經(jīng)連接成功了
在應(yīng)用中找到 日歷這個apk點(diǎn)擊打開,發(fā)現(xiàn)設(shè)置的 setContentView斷點(diǎn)已經(jīng)停止了
如下圖
注意:有時候在遠(yuǎn)程調(diào)試的時候連接會出現(xiàn)錯誤
Failed to connect to remote VM
筆者的解決方法是
在Preference->General->NetWork Connection->把Active Provider里面的選項(xiàng),選擇為Direct.
解決該問題,僅做參考。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。