recovery 移植学习
moto的手机实在不给力,我的手机也没大神们做recovery等,无聊的就打算自己做,找了很多教程,也算懂了一些,虽然最终也没成功,但仍学到了很多,再次将我遇到的一些问题简单说下。
主要参考了http://hi.baidu.com/juicewb/item/bb711fb3c3efcce84fc7fdf1及文章里提出的几篇文章。
我是在ubuntu 12.10 64位 系统来做这个的,建立好环境http://source.android.com/source/initializing.html
1.在下载安卓的源码
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
此命令有时候会连接不上,不懂怎么回事,这时就可以用以下命令,也是可以用的
$
curl ”http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo” >~/bin/repo
同步源码 repo sync -j16 ,的确速度快很多,下载ics源码大约只用了两个多小时,比我的预料快很多。
2.下载完源码,进入源码目录,执行
./build/envsetup.sh
3.执行 make -j4 otatools,下面问题就多了,
chen@chen-virtual-machine:~/cm$ make
cc: 错误: unrecognized command line option ‘-mfloat-abi=softfp’
cc: 错误: unrecognized command line option ‘-mfpu=neon’
cc: 错误: unrecognized command line option ‘-mthumb-interwork’
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.0.4
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=IMM76L
============================================
Checking build tools versions...
grep: build/target/board/generic/recovery.fstab: 没有那个文件或目录
build/core/java.mk:20: *** dalvik/dexgen: Invalid LOCAL_SDK_VERSION '4' Choices are: current 。 停止。
这是由于gcc版本引起的,我换了旧版本的gcc没有出现这个问题。
最后出现的问题是由于我的源码是直接拿过来的,重新同步prebuilt ,问题解决。
"rm -rf prebuilt ; repo sync -l prebuilt"
自己同步源文件的时候不会出现这个问题。
继续执行 make -j4 otatools,
中间若遇到cc错误的问题,均是gcc版本等问题引起。换gcc版本可以解决。
4.之后生成out目录,在out/host/linux-x86/bin中有后面要用的工具。
要将bin加入环境变量。
gedit ~/.bashrc
在文本最后添加:
export PATH=$PATH: ~/android/system/out/host/linux-x86/bin
保存退出,执行下面命令,让刚加的环境变量生效:
source ~/.bashrc
我按照上述操作,没有成功,我把环境变量添加在profile。
5.提取官方boot.img。放到了~/ad/目录
执行
./build/tools/device/mkvendor.sh zte n880e ~/android/boot.img
命令参考:
./build/tools/device/mkvendor.sh device_manufacturer_name device_name /your/path/to/the/boot.img
这都没有问题,在device之下会产生你的机型。
修改机型下面的recovery.fstab,我是直接从官方recovery.img中提取的
6.执行./build/envsetup.sh && lunch full_n880e-eng
这时候问题又来了,
1)提示 lunch"未安装"
2)提示 full_n880e-eng不存在,
第二个问题g了好久,才隐约知道问题所在,只能是自己太笨了。
上述问题执行source build/envsetup.sh 问题就解决了。
下面直接执行 lunch full_n880e-eng
7.最后执行
make -j4 recoveryimage