编译在N1(G5,Passion)上运行的姜饼(GingerBread,Android2
编译在 N1(G5, Passion) 上运行的姜饼(GingerBread,Android 2.3)代码
(转载请注明出处: [http://blog.csdn.net/xieyan0811
](http://blog.csdn.net/xieyan0811))
1. 修改效果
在 32 位系统上正常编译通过,N1 上能运行,带 root 权限
带 N1 原始的四色 X 开机动画,默认语言为简体中文
带 google market,文件管理器,百度中文手写输入法,金山词霸等常用软件
打电话,收发短信,WIFI,移动网络,热点上网正常(APN 已设)
音频,视频,照像,摄像,Gps,Sensor 使用正常
目前未测到不正常的功能
2. 下载 android 2.2 或 2.3 的 sdk
刷机使用的 fastboot 和 adb 都需要从 sdk 中获得
3. 对 N1 的处理
- Bootloader 解锁
关机后,按 Power+ 音量减开机,按音量键选 fastboot,然后按 Power 进入
在 PC 端运行解锁命令如下(fastboot 命令可从 SDK/tools 目录得到)
_ # fastboot oem unlock _
通过音量和 Power 键选 Yes,重新启动,此时看到屏幕下面有一个解决锁标志
- 注意:解锁后手机里的用户数据全被清除了,所以解锁之前需要先备份
4. 刷带 nandroid 的 recovery
recovery
用于系统升级,通常情况下即使刷坏了,也不影响手机正常使用。它只对 boot,
system, userdata
三个分区做备份,有些版本的 recovery 带 nandroid 功能,它用于备份和恢复当前手机系统
- 普通使用
关机后,按 Power+ 音量减开机,按音量键选 recovery,然后按 Power 进入,此时看到叹号和小绿人
按音量加减 +Power 进入菜单,此模式可以使用 update.zip
升级,但不能备份当前系统,强烈建议升级前备份原系统,因为原生的一般都比后烧的稳定
- 按 Power+ 音量减 + 滚轮重启
- 替换带 nandroid 的 recovery,以备份原有系统
下载 recovery-RA-nexus-v1.7.0.img(见下面指定的地址)
关机后,按 Power+ 音量减开机,按音量键选 fastboot,然后按 Power 进入
/ 在 PC 端运行烧写命令如下
1 | $ fastboot flash recovery recovery-RA-nexts-v1.7.0.img |
在手机端菜单中选择进入 bootloader
在 bootloader 中选 recovery,就可看到 recovery 的新选项,用轨迹球可以操作
备份数据和恢复选项
更新的 recovery 除正常备份外还可以备份 google 帐号数据,备份 app2sd
中扩展的数据,和恢复到选定的版本(早期版本只支持恢复到最后备份的版本)
- 注意
用以上方法烧写 recovery 分区,系统重启后 recovery 又会恢复,这是由于开机时被 /data/recovery.img
恢复了,如果不想被刷回,可将下载的 recovery.img 放到 /data/ 下即可(需要 root 权限)
5. 编译 android 2.3(如不想编译请跳过此步,直接下载编好的 img 烧写)
- 安装 jdk
android 之前的版本使用 jdk1.5 编译,而 android 2.3 默认要求使用 jdk1.6
- 安装 jdk 1.6
1 | $ sudo apt-get install sun-java6-jdk |
- 在同一台机器上同时编译 android 2.2 和 android 2.3,用以下方法进行切换
1 | $ sudo update-java-alternatives -s java-1.5.0-sun |
用 git 下载 2.3 源代码
配置 linux 环境,安装 git 及 repo 请参见相关文档解决只能在 64 位系统编译的问题
android 2.3 默认只能在 64 位系统中编译,为了不重装系统可以用以下方法在 32 系统上编译
- 修改 main.mk
1 | $ vi build/core/main.mk |
- 修改 clearsilver 中的编译选项,将下面四个文件中的 -m64 改为 -m32
1 | external/clearsilver/cgi/Android.mk, |
- 编译前的准备工作
连接手机和电脑
将手机中的没有源码的库补丁到源码中(我的 N1 系统为 android 2.2)
1 | $ cd device/htc/passion/ |
- 修改源码
解决照像摄像问题(android 2.3 支持了多摄像头之后接口改变),修改
frameworks/base/services/camera/libcameraservice/CameraService.cpp
frameworks/base/media/libstagefright/omx/OMXNodeInstance.cpp
frameworks/base/media/libstagefright/OMXCodec.cpp
frameworks/base/media/libstagefright/CameraSource.cpp解决进应用闪白问题,修改
frameworks/base/libs/ui/GraphicBuffer.cpp
- 编译
1 | $ . build/envsetup.sh |
6. 下载 img
- 此版本为个人测试使用,在本人上周网购的自带 android 2.2 的港版 N1 上正常使用,不能保证所有 N1
都使用正常,烧机后果自负,建议大家自行编译。再次提醒:请在烧写前先用 recovery nandroid 备份当前系统。以下为下载地址: [http://iask.sina.com.cn/u/ish?retcode=0
](http://iask.sina.com.cn/u/ish?retcode=0)
(含 md5, system, userdata, boot, recovery)
- 下载后可通过 fastboot 烧写,方法如下
1 | $ fastboot flash system system.img |
7. 参考
- Android 2.3 使用的 google market 可从此处下载
[http://blog.csdn.net/silenceburn/archive/2010/12/24/6096822.aspx
](http://blog.csdn.net/silenceburn/archive/2010/12/24/6096822.aspx)
- 设置 apn 的方法
[http://mobile.yesky.com/447/9288447.shtml
](http://mobile.yesky.com/447/9288447.shtml)
- Recovery 的使用请参考
[http://anriqing.blogbus.com/logs/77459519.html
](http://anriqing.blogbus.com/logs/77459519.html)