怎么用eclipse配合真機(jī)來調(diào)試android源碼呢?小編給大家?guī)淼氖且环N使用eclipse調(diào)試源碼的方法,但是在真機(jī)上面進(jìn)行調(diào)試,速度和真實(shí)的模擬性可不是android虛擬機(jī)可比較的。
eclipse配合真機(jī)來調(diào)試android源碼教程
一 前置條件
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)于這個(gè)過程,需要看我以前的如何編譯 cm代碼的博文,里面有詳細(xì)的介紹最后的升成文件如下圖
2 進(jìn)入源碼目錄下的development/ide/eclipse,將.classpath 文件拷貝到
源碼目錄,然后再新建一個(gè) .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,否則會(huì)破壞android源碼),選擇從已存在的工程導(dǎo)入,工程名任意,完成。導(dǎo)入時(shí),eclipse要build工程,比較慢。
這一步一般都會(huì)有錯(cuò)誤,總結(jié)一下,主要有一下幾種
1 源代碼里面缺少必要的代碼庫文件 如圖2
表示缺少相應(yīng)的源碼庫,直接報(bào)錯(cuò)不編譯,解決方法:在.classpath 文件中去掉該目錄即可
2 編譯過程中出錯(cuò)
編譯過程中出錯(cuò)多以包名,找不到或者少編譯一些文件,如圖3
解決方法:主要到指定目錄 mm編譯升成缺少的依賴包以后,然后再將目錄添加到 .classpath 中去
比如這個(gè)是我在解決編譯錯(cuò)誤的時(shí)候,加入的源碼或者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)行接收勞動(dòng)成功,進(jìn)行調(diào)試了。這里跟網(wǎng)絡(luò)上大多數(shù)文章不同的地方是用真機(jī)調(diào)試。連接上燒入同樣版本的nexue one手機(jī)后,進(jìn)入 /adt-bundle-linux-x86_64-20131030/sdk/tools/ 這個(gè)目錄使用 ./monitor 命令
出現(xiàn)界面如圖4
這里選中的是 com.android.calendar 就是日歷的這個(gè)進(jìn)程
打開eclipse,這里要在打開 monitor后,然后進(jìn)行配置
步驟如下:
選擇你的工程,右鍵打開菜單選擇 Debug AS—Debug configuration 彈出窗口,選擇Remote JAVA Application,右鍵在菜單選擇NEW,彈出下面的視圖,修改Port為8700
設(shè)置完成后如下圖5
然后點(diǎn)擊debug,成功以后出現(xiàn)如圖6
比之圖五,多了一個(gè)debug 爬蟲的圖標(biāo),表示已經(jīng)連接成功了
在應(yīng)用中找到 日歷這個(gè)apk點(diǎn)擊打開,發(fā)現(xiàn)設(shè)置的 setContentView斷點(diǎn)已經(jīng)停止了
如下圖
注意:有時(shí)候在遠(yuǎn)程調(diào)試的時(shí)候連接會(huì)出現(xiàn)錯(cuò)誤
Failed to connect to remote VM
筆者的解決方法是
在Preference->General->NetWork Connection->把Active Provider里面的選項(xiàng),選擇為Direct.
解決該問題,僅做參考。