星期天在家研究了一下如何在mac下下載android4.2的源碼并通過ecliPSe進行源碼級別調(diào)試來更清晰的研究一下android的運行原理,具體步驟如下:
最后下下來了,但是我進行編譯卻沒有通過,可能是我有東西沒安,但是不影響源碼調(diào)試,
首先參考http://source.android.com/source/downloading.html,說一下我最后的方法,
一、前期準備
1、mac下我們需要創(chuàng)建一個大小寫敏感的磁盤鏡像文件,并將其掛載,進入應(yīng)用程序/實用工具/磁盤工具,選擇文件->新建->新建空白映像:
2、安裝xcode,編譯時用到。
3、從macports.org安裝MacPorts
macports基本命令:
(1)sudo port install ?安裝
(2)sudo port uninstall ?卸載
(3) port installed 查看已安裝的軟件
這三個就夠用了這里
4. 執(zhí)行sudo port install gmake libsdl git-core gnupg命令安裝gmake,libsdl,git,gnupg。我這里直接安裝了gmake3.8.2,網(wǎng)上有說有問題家,但是我安 裝后沒有編譯源碼所以未發(fā)現(xiàn)問題。如果編譯的可以安裝網(wǎng)上方法退回到3.8.1。
5、安裝完成之后port installed看一下時候上面提到的都安裝了,接著如下:
修改文件標識符限制:
由于MacOS默認將同時打開的文件標識符數(shù)量限制得太小,并行編譯處理時可能會超出這個限制。所以在 ~/.profile里加上這么一段:
#set the number of open files to be 1024
ulimit -S -n 1024
二、從https://android.googlesource.com 下載源碼,
1.創(chuàng)建~/bin/目錄
$mkdir ~/bin
$PATH=~/bin:$PATH
2.安裝repo
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
3.設(shè)置repo可執(zhí)行權(quán)限
$chmoda +x ~/bin/repo
4、這一步大家注意了,當創(chuàng)建的大小寫敏感磁盤空間掛載后我們的/volumes下能夠看到android的目錄,從這步起所有的操作在次目錄下完成,
接下來執(zhí)行repoinit
$ repo init -u https://android.googlesource.com/platform/manifest -b android4.2_r1
執(zhí)行完成后ls -a查看是否一個.repo文件夾,進入看到有manifest.xml文件,如果有那么我們接下來就可以下載源碼了。
此連接有所有的版本branch,https://android.googlesource.com/platform/external/blktrace/想下載哪個版本的更改后-b后面即可。
5、下載源碼
在/Volumes/android目錄下執(zhí)行命令:repo sync
剩下的就是等待了,我的網(wǎng)速比較快,下了二十多分鐘就下完了,如果慢的兩天也有可能。
三、把編譯的方法說一下,需要的可以跟著試一下
進入到掛載的android目錄下,
1、初始化編譯環(huán)境:
$source build/envsetup.sh
2、選擇編譯目標
$lunch full-eng
3、開始編譯代碼
$make -j4(表明我們開啟四個線程來進行編譯)。
等著結(jié)果吧,我的沒編譯成功,但是我沒想編譯,只為了調(diào)試源碼。
四、調(diào)試源碼方法
1、首先eclipse安裝adt和sdk,這個不說了,肯定都會,版本選擇4.2,安裝完成后,file-java project,起個名字,然后location選擇android目錄,等待,可以 看到源碼都被加載,然后看一下報的錯誤,我的報了如下錯誤:
調(diào)試時我發(fā)現(xiàn)沒影響,所以不去關(guān)心了。
2、創(chuàng)建andoird項目(可以是hello world),選擇android項目右鍵debug as-debug Configurations,然后選擇左下角家remote java application右鍵new,設(shè)置,效果:
設(shè)置完成后apply保存。
2、然后在onCreate或其他地方設(shè)置斷點,進入調(diào)試界面后如下:
如果看到下圖,那么我們成功了一半了:
,
點擊yes,進入,如圖:
接下來我們調(diào)試源碼,點擊左上角debug窗口中的你想調(diào)試家部分,可以點擊Looper().loop,我們進入看一下:
好了,看到我們的源碼了,剩下的是去探索了。Y(^_^)Y。