北京理工大学 20981 陈罡
总算弄到了一部t-mobile的android g1测试机,迫不及待打开看一下。
毕竟是新版的android了,以前那种“红眼”启动画面现在已经变成了
一个绿色的机器人,感觉上好多了。
这是启动完毕以后的画面,基本感觉是与android的模拟器相同:
个人感觉尽管t-mobile的g1采用了qualcomm 7201 528mhz外加128m ram的
硬件配置,g1跑android并不轻松,启动过程相对nokia的symbian系统来说,
稍微显得长了一些(废话人家那么强大的功能怎么不说?不要拍偶:P)。
闲话少叙,这么好的东西既然到了偶手上就认命吧(哼哼-->邪恶的笑声)。
准备刷机,把它彻底变成一台开发工程机!当然了变成砖头机也是完全有
可能的(刷机有风险,奉劝各位看官心理承受能力弱的以及不知道boot.img为
何物的朋友千万不要尝试!)
各位一定很好奇,为啥要刷机呢?用人家默认系统不行吗?用人家默认的系统
不能进行开发吗?首先一个问题,就是关于t-mobile的android g1的root权限
的问题。对于普通用户而言,这个root权限意味着安全问题,但对于开发者来说
这意味着有机会在android里面运行linux native app,意味着可以使用心爱的
c/c++去编写一些so,然后用android本身的sdk去调用(可以实现java player
们从开放api手册里面找不到的功能。这里没有任何贬义,再次声明),意味着
可以自己制作一些独特的android更新包,为g1增加一些特殊的甚至可以说是匪夷
所思的无聊功能。得到rootfs意味着开放和自由,当然了,前提是你知道
自己在做什么,而且对这样做的后果有充分的准备。
好了,开始动手。当前目标是把机器刷成rc30的工程开发机,需要做如下准备:
(1)下载更新包的测试签名。
这里需要聒噪一下,android g1是允许通过ota用短消息方式进行android系统自动
更新的。ota是over the air技术的缩写,意思是通过一些特殊的二进制格式的
短消息将更新包或者其他的什么包下发到手机上,然后手机在后台做一些操作来完
成这部分更新和配置。呵呵,使用动感地带的朋友,通常会在手机里面看到“动感地带”
的sim卡应用就是这个道理,这是中移动利用ota把这个应用弄到使用动感地带卡的
手机上去的。那么就存在一个问题,是不是任何人发的短消息让你更新,就会更新呢?
那样的话太可怕了,因此,android在对ota的处理问题上,做了一个签名的限制,
只有google自己签过名的更新包系统才认,才能够执行真正的更新操作。
好,那么我们要更新自己做的包的话,第一步也是非常重要的一步,就是把这个签名
给解决掉。解决掉以后,我们自己做的刷机包,就可以通过下面的命令进行签名了:
java -jar signapk.jar testkey.x509.pem testkey.pk8
签名文件替换包的下载地址如下:
这三个都是一样的,或许会有过期失效的连接,感兴趣的朋友可以google一下一定可以找到。
把这个下载下来即可。
(2)下载t-mobile g1的usb驱动程序(这里只用win32的,linux偶还要做一些实验了)
下载地址如下:
看来google做事情还是很“到位”的。
(3)下载android开发sdk
这个不用说了,满大街都能下载到。还可以更进一步,把eclipse的环境也搭建起来,
偶在前面的文章中尝试用命令行开发android程序,后来试用了一下eclipse以后,觉得
自己手工修改ant文件的做法实在是太笨了,既然有更省事的方法,干嘛不用呢?!做
开发嘛,越省事越好。
(4)下载rc30的刷机包
偶用的刷机包是Saurik,国外的android和debian黑客自己制作的v1.2的rc30刷机包。
http://rapidshare.com/files/165227766/update_TC4-RC30_full_xda-dev_v1.2.zip
该刷机包有以下特点(懒得翻译了):
The primary new features in this version are
- adb shell now works in recovery mode
- a real su (instead of the setuid copy of sh in the last version)
- lots of new goodies in /system/xbin and /system/modules
Other things that have changed from v1.1
- This version has a kernel compiled by Saurik, with more core stuff "turned on", to support more modules (Specifically, /dev/mem and /dev/kmem are available now)
- new features in init
- support for mounting to loop devices
- move flag for mount
- mknod that can wait for a device
- chdir, chroot, usleep, include, trigger
- Changed the init.rc so that it will include /system/init.rc and /data/init.rc, so you can easily add new startup stuff, without having to rebuild/reflash boot.img
- Changed the boot-up recovery flash to look for a file at /data/recovery.img instead of /system/recovery.img, and also to delete recovery.img after a successful flash
- changed the "mount" symlink to be busybox's mount instead of toolbox's mount
- added an /etc/fstab file that busybox's mount can use, that lists the standard system partitions.
- changed the fingerprint back to the official RC30 fingerprint (don't want to let google know you're using a modified build)
- using a newer version of busybox
- moved busybox from /system/bin to /system/xbin
有了这些准备工作以后,我们可以开始了:
(1)usb驱动安装
将g1通过数据线连接到pc上面,系统会自动提示找到新硬件。然后选择在指定位置找驱动,
然后把刚刚下载的android_usb_windows.zip解压缩,然后让系统到这里来找。不出意外的
话,应该没问题,可以找到驱动。
g1手机上需要做如下设置:
settings->application settings->development->usb debugging这里的usb debugging
如果没有打开,需要手动设置成打开。
安装完毕后,需要把手机拔下来,然后再插回去,检查一下驱动是否正常工作。
检查方法是:
进入android sdk\tools目录,输入如下命令:
D:\android-sdk-windows-1.0_r2\tools>adb devices
List of devices attached
HT844KV11396 device
这个时候,如果工作正常会看到这个HTXXXXX device的字样,这就代表已经同手机通过
usb数据线连接上了。
(2)开始替换手机rom里面的recovery.img文件
这一步就是要“处理掉”刚刚讲过的ota的那个更新验证签名了。
D:\android-sdk-windows-1.0_r2\tools>adb push recovery_testkeys.img /data/local/recovery.img
416 KB/s (0 bytes in 1767424.001s)
D:\android-sdk-windows-1.0_r2\tools>adb shell
$ su
su
# mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
# cd /system
cd /system
# cat /data/local/recovery.img > recovery.img
cat /data/local/recovery.img > recovery.img
# flash_image recovery recovery.img
flash_image recovery recovery.img
#
ok这些操作,有linux基础的朋友已经一目了然,不需要偶再聒噪些什么了。
这些都做完后,需要重新启动手机一次,进入“工程模式”去验证一下,刚刚
的这个recovery.img是否替换成功。
进入工程模式的方法,手机完全关机后同时按住home键和挂机键三秒钟以上,此时就会看到如下图片:
这个时候,打开g1的键盘,同时按下alt + l键,就会看到如下的图片:
如果里面有Use test key之类的字样,上面的这些操作应该就成功了。
然后同时按下home+back键,就可以重起手机。
(3)用fat32格式格式化g1的存储卡
这个无须多讲,把手机的卡格式化成fat32文件格式,然后把下载到的:
update_TC4-RC30_full_xda-dev_v1.2.zip
这个文件重命名为update.zip,然后把这个update.zip文件拷贝到格式化
好的存储卡里面。
(4)开始刷机(注意,必须保证电量是100%的!!)
关闭手机,进入工程模式,按下alt+l显示工程模式的提示窗口,然后同时按下
alt+s键,然后就是很揪心很揪心的等待,看着一行行的文本输出以及进度条的缓慢
移动。更新完毕后,会显示update complete的字样,如下图所示:
好了,现在就可以同时按home+back重起机器了。很遗憾,90%以上的刷机重新启动都启动不了,
偶的做法是重起以后,等待屏幕出现长时间的绿色机器人图案以后,直接拔掉电池,然后重新放上
电池,进入“工程模式”。同时按alt+l,显示出工程界面以后,再按alt+w,这个alt+w会清理以前的
一些缓存数据(据偶观察,似乎就是这些缓存的数据导致了刷机后长时间停在了绿色小机器人的画面)
这些清理完毕后,按home+back,重新启动。
哈哈,这次应该大功告成!
在这里偶挑选的是更新包是英文版的,虽然能够显示中文,但是确无法输入中文。对于开发来说,已经
可以忽略不计了,原本偶就喜欢用英文的。感兴趣的朋友可以找国内发布的zhoo之类的汉化版刷上去,
基本的操作过程与偶上面写得差不多。在偶的眼里,没有真正的输入法,而只是依靠拷贝粘贴之类的
第三方软件实现的中文输入,还不能算完全的汉化,还要再接再力(各位汉化的大侠们加油!
各位不要骂偶,在此只是提偶个人的一点想法)。
test key的那个recovery.img更新一次就够了,不用每次都重新更新一遍。
好了,到此为止,应该可以从普通的t-mobile g1得到一个全部开放的g1了。
祝大家好运!!