一、 說明
1. 下載編譯最基本的android源碼,只能在模擬器上使用,無法在真機上使用(不能生成boot.img)。這是因為沒有編譯相關機型的內核和硬件驅動。以下介紹的是用android源碼編譯出對應HTC G1的版本,和燒寫的過程。編譯生成的版本除相機以外,其它功能均正常,穩定性不錯,也很順暢。
2. 以下步驟都經過驗證(只驗證G1手機),實驗系統ubuntu8.04,實驗日期2010年7月12日
3. 關鍵字: 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 # 新建下載配置文件,用以下載內核,編輯內容如下
注意:其中msm是高通芯片組,path指明下載到源碼目錄中的位置,name指明git上的項目名
$ repo sync # 開始下載代碼,此時需要等待較長時間
3. 編譯內核及無線網絡驅動
$ cd $ANDROID/kernel
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- msm_defconfig # 設定默認的msm配置
$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- #編譯內核
$ 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 #編譯無線網絡驅動
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. 配置編譯選項
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 # 加入如下內容,以支持中文
CUSTOM_LOCALES:=zh_CN
$ source build/envsetup.sh
$ lunch full_dream-userdebug #指定編譯機型
$ make -j2
6. 以打補丁的方式加入不提供源碼的庫
此時的系統可以被燒寫,但電話音樂等基本功能均不正常,需要從系統或其它升級包中提取出源碼中不包含的庫,以支持相應功能。
在HTC網站http://developer.htc.com/adp.html
下載名為signed-dream_devphone_userdebug-ota-14721.zip的包(一個普通的update包),并把它放在$ANDROID目錄下,并將其改名為dreaem_update.zip
$ mv signed-dream_devphone_userdebug-ota-14721.zip dream_update.zip
$ cd device/htc/dream
$ ./unzip-files.sh # 此時會提示有幾個庫找不后,后面有對應解決辦法
$ cd $ANDROID
$ vi vendor/htc/dream/device_dream-vendor-blobs.mk
刪除包含以下內容的行,這是由于在update.zip中找不到相應庫,為編譯通過,選去掉它們
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 #網卡驅動
$ make snod # 重新生成system.img
三、 把編譯好的軟件燒寫到手機
用usb線連接手機到電腦,按home+power鍵將手機啟動到工程模式,按back鍵準備燒寫
$ 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
燒寫系統后第一次啟動手機需要幾分鐘,請耐心等
四、 修改
1. 安裝中文字體(可以在燒寫前加入,加在此處用以說明在啟動后修改系統的方法)
$ adb shell
# su 取得root權限
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system 使system分區可寫
# chmod 777 /system/fonts 使某個目錄有寫權限
# exit
# exit
$ adb push frameworks/base/data/fonts/DroidSansFallback.ttf /system/fonts/ 加中文字體
$ adb reboot
2. 支持GPRS上網
添加APN即可上網和發彩信,詳見http://www.andbeta.com/Basics/678.html
3. 設置帳戶
添加帳戶時,服務器填寫m.google.com
五、 參考
1. 刷寫部分未詳細描述,具體請參考文檔
http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1452.entry
2. 源碼編譯部分未詳細描述,具體請參考文檔
http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1364.entry
轉自:http://blog.csdn.net/xieyan0811/article/details/5931573