由於CM2.3.7存在某些問題,所以如果需要使用穩定版本的CyanogenMod 2.3.4編譯並且相應的vendor檔案的話,可以到我的網盤中下載。
vendor:http://115.com/file/dpi59mxv
在開發定製ROM的時候經常會在源碼中添加自訂的SDK,比如小米的MIUI裡很多添加進來的功能在編碼的時候都是使用自訂的方法,這些都是需要編譯進SDK中的,開發人員在開發的時候也會通過自己產生的SDK開發軟體,調用新添加的方法。比如:android sdk中沒有hello()這個方法,如果開發軟體的時候要讓這個方法有效,我們可以將這個方法加入到源碼中編譯產生SDK即可。
本篇先不講如何添加模組,後繼會加上。本篇只是如何通過編譯CyanogenMod產生SDK,因為這一步看似只有一個命令,其實面臨這很多的風險。
首先你確保你已經能夠成功編譯產生cm刷機包了,如果沒有,經參考:http://www.cnblogs.com/loulijun/archive/2012/02/22/2361533.html
當然,不同機型brunch的時候版本也不同,要知道你的開發機的代號。我的開發機是HTC Desire Z,代號:vision
一、替換vendor目錄下相應的檔案夾,如vision
這一步主要用來編譯源碼,具體編譯過程參考前一篇,只不過需要說明一點。
可能因為版本修改等原因,直接通過. /extract-files.sh可能會缺少某些包,或者庫檔案。在執行 . get-rommanager的時候因為擷取的是最新的資訊,所以也可能會在編譯時間出錯。
所以,為了避免這些,將網盤中的相應檔案夾(如vision)替換掉你的vendor/htc目錄下的vision即可。因為那些檔案都是已經測試過的,相應的cm源碼
二、備份userdata.img檔案
為什嗎?因為如果不提前拷貝出來的話如果遇到如下的錯誤那你就悲劇啦。
development/build/sdk.atree:71:couldn't locate source file:userdata.img
make:***[out/host/linux-x86/sdk/android-sdk_eng.loulijun_linux-x86.zip]錯誤 44
在成功編譯產生刷機包後,會在cyanogenmod/out/target/product/vision下產生包括刷機包(類似cyanogen_vision-ota-eng.loulijun的zip包就是),system.img,userdata.img,ramdisk.img等鏡像檔案、kernel核心等相關資訊;如
注意:你在這一步需要做的是備份userdata.img或者整個vision(或其他名字),一會會用到
簡單介紹下這幾個鏡像檔案
system.img:包括了主要的包和庫檔案
userdata.img:包括了使用者資料,主要使用者初始化系統
recovery.img:recovery燒錄模式需要的檔案,另一中燒錄模式是fastboot(比如我們刷機時需要刷recovery)
ramdisk.img:模擬器的檔案系統
boot.img:編譯核心原始碼產生的核心鏡像
三、編譯SDK
再一次,前提是你編譯好了cyanogenmod(如果直接編譯可能會出問題),而且還沒有make clean(清楚編譯資料)
$cd cyanogenmod
$make sdk
(上面的命令如果是make -j4 sdk會卡死電腦,很慢)
然後開啟out/target/product/vision目錄,觀察一會後會發現裡面的 資料突然消失了很多,其他的檔案最後也產生了,包括刷機包,然而,就是這個userdata.img遲遲不產生。沒關係,將拷貝好userdata.img檔案粘貼進vision中(發現裡面的userdata.img消失的時候就粘貼過去)。這個問題折磨了我很久很久。
好了,等一會就會發現我們的SDK產生了,它在out/host/linux-x86/sdk下面,這就是你產生的SDK,把它配置到環境變數中就可以使用了
產生後的目錄如下
四、使用SDK
替換原有sdk,配置環境變數
$vim .bashrc
在最後加入或者修改為,儲存退出
export PATH=$PATH:/home/loulijun/cyanogenmod/out/host/linux-x86/sdk/android-sdk_eng.loulijun_linux-x86
$source .bashrc
使其生效
然後到eclipse中開啟Window--Preferences--Android--SDK Location,找到SDK目錄,apply即可