编译在G1上运行的android2
编译在 G1 上运行的 android 2.2(froyo) 代码 _ 山寨版
一、说明
1. 下载编译最基本的 android 源码,无法在真机上使用(不能生成 boot.img
),只能在模拟器上使用。这是因为没有编译相关机型的内核和硬件驱动。以下介绍的是用 android 源码编译出对应 HTC G1
的版本,和烧写的过程。编译生成的版本绝大部分功能都能正常使用(电话,短信,上网,音乐,软件安装等正常使用,SD 卡还不能自动挂载,正在修改之中),在
G1 上运行 2.2 版稳定性不错,也很顺畅。
2. 本文主要参考编译 android 2.1 的日文文档 G1/G2 烧机指南,感谢原文作者,原文地址: [http://code.google.com/p/android-development-
environment/wiki/EclaironADP1andADP2](http://code.google.com/p/android-
development-environment/wiki/EclaironADP1andADP2)
同时加入中文系统的支持和 2.2 部分相关修改,以及相关文字解释。
3. 以下步骤都经过验证(只验证 G1 手机),实验系统 ubuntu8.04,实验日期 2010 年 7 月 2 日
4. 关键字: 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#设定下载 2.2 版代码 _
_ $ 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/vendor/htc/dream-
open/kernel
$ cp $ANDROID/system/wlan/ti/sta_dk_4_0_4_32/wlan.ko
$ANDROID/vendor/htc/dream-open/wlan.ko _
4. 编译 android 源码
在 HTC 网站 [http://developer.htc.com/adp.html
](http://developer.htc.com/adp.html)
下载名为 signed-dream_devphone_userdebug-ota-14721.zip 的包,并把它放在
_ $ANDROID 目录下
_
_ $ cd $ANDROID
$ source build/envsetup.sh
$ lunch aosp_dream_us-eng # _ 指明机型
_ $ cd vendor/htc/dream-open
$./unzip-files.sh _ #解压 htc 相关驱动
_ $ cd $ANDROID
$ vi buildspec.mk _ #新建配置文件
加入如下内容
_ CUSTOM_LOCALES:=zh_CN # _ 设置编译为中文系统
_ $ vi build/core/prebuild.mk
_ _ 注掉第 59 行 ($error No LOCAL_CERTIFICATE……)
,否则编不过,这是由于对硬件部分的一个包的签名检测不过引起的(硬件部分的代码已经很久没更新了)_
_ $ vi device/htc/dream-sapphire/libsensors/Android.mk
_ _ 将第 39 行,改为 LOCAL_MODULE:=sensor.trout1
,否则编不过,这是由于硬件部分的模块名与源码中自带的模块名冲突引起
_
_ $ vi hardware/msm7k/libaudio/Android.mk
_ _ 在第 29 行 (CLEAR_VARS 之后),加入 LOCAL_PRELINK_MODULE:=false,
否则,系统无法运行,启动时会报错“failed to link
libandroid_servers.so” _
_ $ make -j4 _ #编译 android 源码,需要等待较长时间
_ $ mmm -B $ANDROID/packages/apps/Luancher2/ snod # _
编译桌面程序,否则桌面将无法启动,系统总停在开机动画
_ $mmm -B $ANDROID/framework/base/packages/DefaultContainerService/ snod
# _
_ 编译 ContainerService,否则无法安装软件 _
三、把编译好的软件烧写到手机
用 usb 线连接手机到电脑,按 home+power 键将手机启动到工程模式,按
back 键准备烧写
_ $ export PATH=\(PATH:\)ANDROID/out/host/linux-x86/bin # _
把烧写工具所在目录加上路径
_ $ cd out/target/product/dream-open/
$ fastboot flash system system.img
$ fastboot flash boot boot.img
$ fastboot reboot _
烧写系统后第一次启动手机需要几分钟,请耐心等
四、修改
1. 支持 SD 卡
_ $ adb remount
$ adb push $ANDROID/system/core/rootdir/etc/vold.fstab /etc/ _
烧写手机后 SD 卡没有挂载是由于没有找到配置文件,将挂载服务 vold
所需的配置文件 vold.fstab 写入手机即可,然后重启即可.
注意,你的 SD 卡最好只含一个 fat 格式分区,如果之前自己配置过早期的
APP2SD,分有 ext2 分区,可能出现卡不被识别的情况
.
2. 支持 GPRS 上网
添加 APN 即可上网和发彩信,详见
[http://www.andbeta.com/Basics/678.html
](http://www.andbeta.com/Basics/678.html)
3. 支持 APP2SD
_ $ adb shell
pm setInstallLocation 2 _
重启之后,程序即被安装到 SD 卡上
五、参考
1. 刷写部分未详细描述,具体请参考文档
[http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1452.entry
](http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1452.entry)
2. 源码编译部分未详细描述,具体请参考文档
[http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1364.entry
](http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1364.entry)
注意:以上灰色标出的是与编译 éclair 不同的部分
(转载请注明作者及出处 [http://xy0811.spaces.live.com
](http://xy0811.spaces.live.com/))