posts - 33, comments - 0, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            一、 說明

          1.        下載編譯最基本的android源碼,只能在模擬器上使用,無法在真機上使用(不能生成boot.img)。這是因為沒有編譯相關機型的內核和硬件驅動。以下介紹的是用android源碼編譯出對應HTC G1的版本,和燒寫的過程。編譯生成的版本除相機以外,其它功能均正常,穩定性不錯,也很順暢。

          2.        以下步驟都經過驗證(只驗證G1手機),實驗系統ubuntu8.04,實驗日期2010712

          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


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 武宁县| 西城区| 常宁市| 邢台市| 旬邑县| 贵港市| 广汉市| 平潭县| 顺义区| 东光县| 岳阳县| 筠连县| 怀安县| 庆元县| 达拉特旗| 弋阳县| 于都县| 十堰市| 丰城市| 漳州市| 衡水市| 凤山市| 探索| 乐都县| 兴宁市| 柏乡县| 江口县| 辽中县| 博野县| 南昌县| 庆城县| 革吉县| 建平县| 周口市| 色达县| 仲巴县| 吴堡县| 新平| 西乌珠穆沁旗| 宁乡县| 鹤峰县|