• 编译在G1上运行的android 2.2(froyo)代码_正规版


      一、 说明

    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

  • 相关阅读:
    HTML当中特殊字符的表示
    溢出文本用“...”代替
    【转】图标字体化浅谈
    字体在网页中画ICON图标
    图片轮播
    js获取网页屏幕可视区域高度
    MVC入口程序 | 简单调用及实例化
    初学者对于MVC架构模式学习与理解
    PHP初学习笔记(2015/4/8)
    linux常用20命令 --转载
  • 原文地址:https://www.cnblogs.com/mahang/p/2166054.html
Copyright © 2020-2023  润新知