一、 说明

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

编译在G1上运行的android 2.2(froyo)代码_正规版相关推荐

  1. 如何实现在Windows上运行Linux程序,附示例代码

    如何实现在Windows上运行Linux程序,附示例代码 微软在去年发布了Bash On Windows, 这项技术允许在Windows上运行Linux程序, 我相信已经有很多文章解释过Bash On ...

  2. 自定义android模拟器,在模拟器上运行自定义Android ROM

    我建立了一个基于AOSP的自定义ROM(Nexus 6的7.0),我想将这个ROM与SDK模拟器一起使用.我相信这个版本的午餐组合是'aosp_x86_64-eng' 应该适用于SDK模拟器.但是,我 ...

  3. 在Windows10上运行TensorFlow Android Demo实例

    最近一直想把自己训练的模型迁移到Android手机上,但入门的话肯定是要先学会把TensorFlow的Android Demo迁移到手机上,磕磕碰碰地,走了不少弯路,现在总结一下的.如有错误,请望指正 ...

  4. go语言在windows编译在linux上运行的可执行程序

    package mainimport ("fmt""os""os/exec" )//filepath: 要编译的文件的路径 func bui ...

  5. linux 正在运行的程序不能拷贝_如何实现在Windows上运行Linux程序,附示例代码

    初步了解ELF格式 首先让我们先了解什么是原生Linux程序, 以下说明摘自维基百科 In computing, the Executable and Linkable Format (ELF, fo ...

  6. c语言编译没问题 但运行之后没反应,这段代码编译联接都成功,可是运行时没反应...

    这段代码编译连接都成功,可是运行时没反应啊 用C语言编程实现单链表的基本操作.有必要的类型说明,并完成下述函数功能: (1)CreateList( ):逆序建立一个(带有头结点的)单链表,在键盘上按顺 ...

  7. android 登录界面开源代码_【程序源代码】一个安卓查询类app制作的开源项目

    " 关键字:工作流 框架 springboot" 正文:一个学习安卓查询类app制作的开源项目.可以用来联系查询类app的编写. 01 - android studio最近势头好猛 ...

  8. 四年级打字计算机上册教案,2019四年级上信息技术教案(A)打字速度靠指法_泰山版教育.doc.docx...

    课题 教学目标 重点难点 一.创设 情境, 激 趣导入 二.自主 探究,合 作学习 9.打字速度靠指 课型 新授 教师 贾明慧 课时 1 课时 法 1.初步掌握左右手十个手指的键位分工,认识八个基准键 ...

  9. android studio table居中代码_五个方法实例代码详解教你在CSS中实现垂直居中

    点击上面"蓝字"关注我们 你是否和小编一样在编辑一个版面时,通常用到水平居中和垂直居中,而水平居中很好处理,不外乎就是设定margin:0 auto;或是text-align:ce ...

最新文章

  1. mysql半主从_转mysql半主从同步
  2. linux 编译错误 configure: error: C++ compiler cannot create executables
  3. WINDOWS故障修复台 免去重装的烦恼
  4. 【CF】556D A Lot of Games
  5. uchome后台系统配置分析
  6. 重温强化学习之深度强化学习
  7. 2020年全国压岁钱榜单出炉,今年小朋友压岁钱归谁?
  8. 【白话机器学习】算法理论+实战之PCA降维
  9. JVM调优:常见垃圾回收算法
  10. MacBook笔记本的几个快捷键的使用(学会事半功倍)
  11. halcon模板匹配学习(一) Matching 初印象
  12. mac下 如果docker 如果访问不到网 就下载哥docker-machine 然后进入到vbox下进行操作
  13. liigo:爱可视70平板电脑使用感受,遗憾与满足并存
  14. 用python生成云词汇_用python生成词云wordcloud
  15. eq linux_《Linux设备驱动程序》(十二)——时间操作(一)
  16. 加入docker管理员_如何使系统管理员和开发人员同意Docker
  17. 企业微信在线客服机器人系统开发
  18. 微信小程序报错:运行内存不足,请重新打开该小程序
  19. 车内看车头正不正技巧_路边侧方位实用停车技巧,学会这一招,再也不担心车头刮到前车...
  20. iphone微信小程序底部预留bar安全距离css

热门文章

  1. 服务器无法显示url,遇到“您所请求的网址(URL)无法获取”的解决办法
  2. ubuntu20.04耳机没有声音
  3. android studio查看源码
  4. 布林带-BOLL (Bollinger Band)
  5. linux内存懒分配,Linux 性能分析总结之内存缓存与Swap(四)
  6. 梦想世界 2014年8月14日服务器维护公告,《命运之轮》停止运营公告
  7. python实现俄罗斯方块小游戏
  8. hexo 博客创建、部署、美化过程记录
  9. amazon - amzreport 之 FBA Inventory Reports
  10. 【JAVA】贪吃蛇的初步实现(三)