標籤:android ubuntu eclipse genymotion
打算開始Android系統學習,君預善其事,必先利其器。如果能夠在eclipse中調試system_server, 對於理解Android系統服務能夠起到很大的協助.
在網上查了點資料,基本上都比較麻煩:
以下是老羅的文章, 有點老, 需要自己編譯一個android rom. 光下源碼就要準備好久!
http://blog.csdn.net/luoshengyang/article/details/6559955
還有一種是直接燒錄rom到Nexus真機上,這個有好處就是真機上比較快! 但是也很麻煩,除去下源碼, 解決各種編譯問題外,還需要買個Nexus.
http://www.360doc.com/content/14/0604/23/17754428_383723001.shtml
自己琢磨出來一種方案, 使用virtualbox+genymotion+eclipse, 比真機還快,而且不需要編譯android源碼.
以下使用Ubuntu14.04 LTS環境,用eclipse調試system_server源碼, 當然既然是eclipse, 只能調試到Java層.
1, 下載安裝virtual box, 這個網上有好多文章.
2. 下載安裝GenyMotion, 這個是好東西, 可以產生Android rom並能夠讓eclipse通過網口連上virtual box 虛擬機器, https://cloud.genymotion.com/page/launchpad/download/
3. 下載Android4.1.1的Rom, http://mirror1.jarfil.net/androvm.org/Download/,
手機版androVM_vbox86p_4.1.1_r6.1-20130222.ova
Tablet版本androVM_vbox86tp_4.1.1_r6.1-20130222.ova
4. 在virtual box中安裝android rom, 記得配置網路為橋接網卡, 選擇wlan0或者eth0. eclipse就靠它來把adb連上虛擬機器.
5. 啟動Android, 然後找到android VM configuration應用, 一般在homepage, 不然就在應用程式列表裡面.
6. 開啟,找到ip地址,如果找不到,那就返回步驟4改動下介面eth0或者wlan0。
7. 開啟終端, 敲入命令: adb connect <ip>.
8. 去grepcode下載android 4.1.1源碼.
http://grepcode.com/snapshot/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/
9. 開啟eclipse,建立一個java project, 請注意是個java project, 然後將下載的android-4.1.1_r1-sources.jar檔案匯入工程中.
10. 在DDMS中選中system_server進程, 切換到package explorer, 右鍵選擇java 工程,debug as--> debug configurations-->雙擊remote java Application, 填寫host: local host, port: 8700,debug。
11. 好了,大功告成,你應該可以在ddms中看到system_server的debug小蟲子變成綠色的了,有木有!自己寫點apk吧,比如在應用中調用startActivity(),然後在ActivityManagerService.java中的StartActivity()函數中設定斷點,就可以開始Android之旅了。
12. 斷點被trigger到時,eclipse會找不到source, 在debug視窗選中你要debug的frame, 然後edit source lookup-->project-->選中你的project。就可以看到source了。
Android學習啟動篇--eclipse如何調試system_server