溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用eclipse配合真機(jī)來調(diào)試android源碼

發(fā)布時間:2020-06-29 19:41:31 來源:網(wǎng)絡(luò) 閱讀:914 作者:sunzeduo 欄目:移動開發(fā)

      目前網(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ì)的介紹
  最后的升成文件如下圖

使用eclipse配合真機(jī)來調(diào)試android源碼



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

   使用eclipse配合真機(jī)來調(diào)試android源碼


     表示缺少相應(yīng)的源碼庫,直接報(bào)錯不編譯,
     解決方法:在.classpath 文件中去掉該目錄即可


   2 編譯過程中出錯
     編譯過程中出錯多以包名,找不到或者少編譯一些文件,如圖3

使用eclipse配合真機(jī)來調(diào)試android源碼


     解決方法:主要到指定目錄 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

使用eclipse配合真機(jī)來調(diào)試android源碼


   這里選中的是 com.android.calendar 就是日歷的這個進(jìn)程

   打開eclipse,這里要在打開 monitor后,然后進(jìn)行配置
步驟如下:
選擇你的工程,右鍵打開菜單選擇 Debug AS—Debug configuration 彈出窗口,選擇Remote JAVA Application,右鍵在菜單選擇NEW,彈出下面的視圖,修改Port為8700

設(shè)置完成后如下圖5


使用eclipse配合真機(jī)來調(diào)試android源碼




然后點(diǎn)擊debug,成功以后出現(xiàn)如圖6

使用eclipse配合真機(jī)來調(diào)試android源碼


比之圖五,多了一個debug 爬蟲的圖標(biāo),表示已經(jīng)連接成功了


在應(yīng)用中找到 日歷這個apk點(diǎn)擊打開,發(fā)現(xiàn)設(shè)置的 setContentView斷點(diǎn)已經(jīng)停止了

如下圖

使用eclipse配合真機(jī)來調(diào)試android源碼


注意:有時候在遠(yuǎn)程調(diào)試的時候連接會出現(xiàn)錯誤


Failed to connect to remote VM

筆者的解決方法是

在Preference->General->NetWork Connection->把Active Provider里面的選項(xiàng),選擇為Direct.

解決該問題,僅做參考。


向AI問一下細(xì)節(jié)

免責(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)容。

AI