一、 說明
1. 下載編譯最基本的android源碼,只能在模擬器上使用,無法在真機(jī)上使用(不能生成boot.img)。這是因?yàn)闆]有編譯相關(guān)機(jī)型的內(nèi)核和硬件驅(qū)動(dòng)。以下介紹的是用android源碼編譯出對應(yīng)HTC G1的版本,和燒寫的過程。編譯生成的版本除相機(jī)以外,其它功能均正常,穩(wěn)定性不錯(cuò),也很順暢。
2. 以下步驟都經(jīng)過驗(yàn)證(只驗(yàn)證G1手機(jī)),實(shí)驗(yàn)系統(tǒng)ubuntu8.04,實(shí)驗(yàn)日期2010年7月12日
3. 關(guān)鍵字: android 2.2 froyo g1 源碼編譯
二、 編譯
1. 建立android源碼編譯目錄
$ export ANDROID=/exports/android/android_2.2/
$ mkdir -p $ANDROID
$ cd $ANDROID
2. 源碼下載
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.2_r1
$ vi .repo/local_manifest.xml # 新建下載配置文件,用以下載內(nèi)核,編輯內(nèi)容如下
注意:其中msm是高通芯片組,path指明下載到源碼目錄中的位置,name指明git上的項(xiàng)目名
$ repo sync # 開始下載代碼,此時(shí)需要等待較長時(shí)間
3. 編譯內(nèi)核及無線網(wǎng)絡(luò)驅(qū)動(dòng)
$ cd $ANDROID/kernel
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- msm_defconfig # 設(shè)定默認(rèn)的msm配置
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- #編譯內(nèi)核
$ cd $ANDROID/system/wlan/ti/sta_dk_4_0_4_32
$ make ARCH=arm CROSS_COMPILE=$ANDROID/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- KERNEL_DIR=$ANDROID/kerne l #編譯無線網(wǎng)絡(luò)驅(qū)動(dòng)
cp $ANDROID/kernel/arch/arm/boot/zImage $ANDROID/device/htc/dream/kernel
cp $ANDROID/system/wlan/ti/sta_dk_4_0_4_32/wlan.ko $ANDROID/device/htc/dream/wlan.ko
4. 配置編譯選項(xiàng)
vi device/htc/dream/AndroidBoard.mk #若kernel存在,則不重新編譯kernel
ifeq ($(TARGET_PREBUILT_KERNEL),)
TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel
endif
file := $(INSTALLED_KERNEL_TARGET)
ALL_PREBUILT += $(file)
$(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
$(transform-prebuilt-to-target)
5. 編譯android源碼
$ cd $ANDROID
$ vi buildspec.mk # 加入如下內(nèi)容,以支持中文
CUSTOM_LOCALES:=zh_CN
$ source build/envsetup.sh
$ lunch full_dream-userdebug #指定編譯機(jī)型
$ make -j2
6. 以打補(bǔ)丁的方式加入不提供源碼的庫
此時(shí)的系統(tǒng)可以被燒寫,但電話音樂等基本功能均不正常,需要從系統(tǒng)或其它升級包中提取出源碼中不包含的庫,以支持相應(yīng)功能。
在HTC網(wǎng)站http://developer.htc.com/adp.html
下載名為signed-dream_devphone_userdebug-ota-14721.zip的包(一個(gè)普通的update包),并把它放在$ANDROID目錄下,并將其改名為dreaem_update.zip
$ mv signed-dream_devphone_userdebug-ota-14721.zip dream_update.zip
$ cd device/htc/dream
$ ./unzip-files.sh # 此時(shí)會提示有幾個(gè)庫找不后,后面有對應(yīng)解決辦法
$ cd $ANDROID
$ vi vendor/htc/dream/device_dream-vendor-blobs.mk
刪除包含以下內(nèi)容的行,這是由于在update.zip中找不到相應(yīng)庫,為編譯通過,選去掉它們
libGLES_qcom.so
liblvmxipc.so
liboemcamera.so
libstagefrighthw.so
$ make
$ cp device/htc/dream/wlan.ko out/target/product/dream/system/lib/modules/wlan.ko #網(wǎng)卡驅(qū)動(dòng)
$ make snod # 重新生成system.img
三、 把編譯好的軟件燒寫到手機(jī)
用usb線連接手機(jī)到電腦,按home+power鍵將手機(jī)啟動(dòng)到工程模式,按back鍵準(zhǔn)備燒寫
$ export PATH=$PATH:$ANDROID/out/host/linux-x86/bin # 把燒寫工具所在目錄加上路徑
$ cd out/target/product/dream/
$ fastboot flash system system.img
$ fastboot flash boot boot.img
$ fastboot reboot
燒寫系統(tǒng)后第一次啟動(dòng)手機(jī)需要幾分鐘,請耐心等
四、 修改
1. 安裝中文字體(可以在燒寫前加入,加在此處用以說明在啟動(dòng)后修改系統(tǒng)的方法)
$ adb shell
# su 取得root權(quán)限
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system 使system分區(qū)可寫
# chmod 777 /system/fonts 使某個(gè)目錄有寫權(quán)限
# exit
# exit
$ adb push frameworks/base/data/fonts/DroidSansFallback.ttf /system/fonts/ 加中文字體
$ adb reboot
2. 支持GPRS上網(wǎng)
添加APN即可上網(wǎng)和發(fā)彩信,詳見http://www.andbeta.com/Basics/678.html
3. 設(shè)置帳戶
添加帳戶時(shí),服務(wù)器填寫m.google.com
五、 參考
1. 刷寫部分未詳細(xì)描述,具體請參考文檔
http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1452.entry
2. 源碼編譯部分未詳細(xì)描述,具體請參考文檔
http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1364.entry
轉(zhuǎn)自:http://blog.csdn.net/xieyan0811/article/details/5931573