Eclipse Android源碼工程調試

來源:互聯網
上載者:User

Eclipse Android源碼工程調試是本文要介紹的內容,主要是來瞭解並學習Eclipse Android源碼的內容,具體關於Eclipse Android源碼內容的詳解來看本文。

1、ubuntu 下源碼編譯

最好切換到root使用者下進行操作

  1. $ sudo -s 

1)下載jdk1.5 並安裝(下載自解壓版本並設定環境變數)

編輯/root/.bashrc 添加

  1. #set java environment  
  2. export JAVA_HOME=/work/jdk1.5.0_22  
  3. export JRE_HOME=JAVA_HOME/jre  
  4. export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
  5. export SDK_HOME=/work/froyo/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools  
  6. export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH:$SDK_HOME:/work/froyo/out/host/linux-x86/bin  
  7. export ANDROID_PRODUCT_OUT=/work/froyo/out/target/product/generic 

2)安裝(apt-get install xxx)

  1. git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev 

3)下載源碼(網上有詳細說明)

4)編譯源碼

  1. $ export ANDROID_JAVA_HOME=$JAVA_HOME  
  2. $ make 

查看編譯過程中是否有錯誤,一般情況不會有錯誤,如果有錯誤可能是某個依賴包沒有安裝,安裝提示的依賴包後重新make

5)產生sdk

  1. $ make PRODUCT-sdk-sdk ###使用make sdk 會出現R檔案不能自動產生的問題 

編譯完成後會在/work/froyo/out/host/linux-x86/sdk/目錄產生sdk

6)編譯完成之後查看是否編譯成功

  1. $ . build/envsetup.sh  
  2. $ emulator& //啟動模擬器,如果能成功啟動代表編譯成功。 

2、Android Eclipse 中進行調試

1)拷貝development/ide/eclipse/.classpath到原始碼根目錄並修改.classpath

刪除下面兩行

  1. <classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/google-common_intermediates/javalib.jar"/> 
  2. <classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/gsf-client_intermediates/javalib.jar"/> 

添加

  1. <classpathentry kind="lib" path="/work/froyo/out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/javalib.jar"/> 

2)在eclipse中修改

2.1)通過create project from existing source 匯入froyo原始碼

2.2)展開packages/providers/CalendarProvider/src

2.3)展開包: com.android.providers.calendar

2.4)右鍵點擊包com.android.providers.calendar

2.5)選擇 "new file"

2.6)在對話方塊中選擇點擊  "Advanced >>" 按鈕, 可以看到"Link to file in the file system" checkbox,

2.7)勾選上 checkbox.  這時 "Browse..." 可用.

2.8)點擊 "Browse..." 按鈕,選擇EventLogTags.java (e.g.,out/target/common/obj/APPS/CalendarProvider_intermediates/src/src/com/android/providers/calendar/EventLogTags.java)

2.9)點擊OK

2.10)點擊 Finish (in "New File")

3)同樣的方式修改com.android.providers.contacts的問題

3、調試

在IDE(eclipse)中修改原始碼後在shell中編譯運行

源碼內建編譯工具

先在Eclipse Android 源碼根目錄執行 . build/envsetup.sh 再通過m/mm/mmm進行編譯

  1. - m:       Makes from the top of the tree.  
  2. - mm:      Builds all of the modules in the current directory.  
  3. - mmm:     Builds all of the modules in the supplied directories. 
  1. $cd /path/to/android/root  
  2. $. build/envsetup.sh  
  3. $lunch 1   # 初始化模擬器等  
  4. $make/m/mm/mmm      #   
  5. $emulator&  # you should see a GUI picture of a phone  
  6. $ddms& #調試工具 

1)修改APK應用:在packages中的應用如果修改後都可以單獨編譯。先執行

  1. $. build/envsetup.sh #初始化  
  2. $mmm packages/providers/ContactsProvider/  
  3. ##用mm/mmm來編譯產生的.apk並不會打包到system.img中,需要我們手動通過make snod把system檔案夾打包為system.img  
  4. ##可以使用make snod將模組打包到system.img中,也可以使用 adb install *.apk安裝 

註:通過mmm packages/providers/ContactsProvider/ 編譯後的apk在 out/target/product/generic/system/app

這時候通過 adb install out/target/product/generic/system/app/xxx.apk 安裝你剛修改過的apk就可以在模擬器上看到你修改的效果了。

2)修改framework:如果在Contacts.java中修改了,必須重新編譯下framework。先執行

  1. $ . build/envsetup.sh #初始化 

#網上有的說要執行 make update-api,實際上直接make PRODUCT-sdk-sdk就可以將修改後的framework編譯到sdk中。 #編譯framework後,那些修改了的應用可以不用再單獨編譯了。4~6分鐘

  1. $ make PRODUCT-sdk-sdk #重建SDK 10~20分鐘. 

小結:Eclipse Android源碼工程調試的內容介紹完了,希望通過Eclipse Android源碼內容的學習能對你有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.